什么是RS485?
RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。 它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。
RS-485(目前称为EIA/TIA-485)是通信物理层的标准接口,一种信号传输方式。
串行 EIA-485 连接是使用两根或三根电线的电缆完成的:一根数据线、一根带反转数据的电线,通常还有一根零线(接地,0 V)。 这样,发射器和接收器通过 22 或 24 AWG 实心线的双绞线电缆交换数据。
这里的主要思想是通过两根电线传输一个信号。
当一根电线传输原始信号时,另一根电线传输其反向副本。 这种传输方法提供了对共模干扰的高抵抗力。 用作传输线的双绞线可以是屏蔽或非屏蔽的。
RS485能跑多远?
建立在 RS-485 接口上的通信网络由通过双绞线(两条双绞线)连接的收发器组成。
RS-485接口的基本原理是差分(平衡)数据传输。 这意味着一个信号通过两根电线传输。 这样,一对中的一根线传输原始信号,另一根传输其反向副本。
作为差分信号传输的结果,导线之间总是存在电位差。 这确保了对共模干扰的高抵抗力。 另外,双绞线可以屏蔽,保证传输数据的保护。 所有这些都允许以相对较高的速度远距离发送数据,在 4000 英尺处可以达到 100 kbits/s。
4000 英尺或大约 1200 米是 RS-485 通信中的最大电缆长度。 但是,一般准则是线路长度(以米为单位)和数据速率(以每秒比特数为单位)的乘积不应超过 108。例如,20 米长的电缆允许的最大数据速率为 5 Mbits /秒。
RS485通讯协议是什么?
当 RS485 通信线路在物理层准备好运行时,是时候考虑数据传输协议——系统设备之间关于数据包传输格式的协议。
由于 RS-485 接口的性质,RS-485 设备不能同时发送和接收数据,因为这会导致发送器的冲突。 因此,确定性行为是强制性的,以避免数据包的冲突。
在 RS485 通信协议中,命令由定义为主站的节点发送。 连接到主站的所有其他节点都通过 RS485 端口接收数据。 根据发送的信息,线路上的零个或多个节点响应主站。
话虽如此,这种类型的通信并不是通过 RS485 协议交换数据的唯一可能方式。 RS485 网络还有其他一些实现方式,其中每个节点都可以自行启动数据传输。 但是,在此类网络中可能丢失数据的风险更高。
RS-485通讯主要特点
尽管有各种各样的现代替代解决方案,但今天 RS-485 技术仍然是许多通信网络的基础。 RS-485接口的主要优点是:
- 通过一对双绞线进行双向数据交换;
- 支持连接到同一条线路的多个收发器,即创建网络的能力;
- 通讯线长;
- 高传输速度。
双向半双工数据传输
串行数据流可以在一个方向传输,数据传输到另一侧需要使用收发器。 收发器(通常称为“驱动器”)是在发射器侧形成物理信号的设备或电路。
对称通信通道
接收或传输数据需要两条等效的信号线。 电线用于在两个方向(交替)交换数据。 在双绞线电缆的帮助下,对称通道显着提高了信号的稳定性并抑制了有用信号产生的电磁辐射。
多点
RS-485通讯线可以连接多个接收器和收发器。 同时,一个发送器和多个接收器一次可以连接到一根通信线路上。 所有其他需要连接的发送器应等待通信线路空闲以进行数据传输。
实战之后的理解
其实不管是485还是232都属于板间通讯的一种,其本质就是把板上微弱的TTL电平,通过485或者232芯片(也就是电平转换芯片),转成更高的电平。
所以对于主MCU而言,和485芯片之间还是通过TX、RX相连的。
咱们可以简单找一个485收发器的芯片数据手册看一下
https://www.semiee.com/file/ARTSCHIP/ARTSCHIP-MAX485ESA.pdf
8个引脚,A、B、电源和地不用说。
其中
RO为接收器的输出引脚,和MCU的RX引脚连
- If A > B by 200mV, RO will be high
- If A < B by 200mV, RO will be low
DI为接收器的输入引脚,和MCU的TX引脚连
DE Driver Output Enable 驱动器的输出使能
RE(加杠) Receiver Output Enable 接收器使能
我们只需要一个GPIO引脚来控制
,这个GPIO引脚我们经常叫它DIR。
当DIR=0时,接收电路使能RE¯=0(上加横杠,代表低电平有效),发送电路禁止DE=0,对于总线而言相当于高阻,发不了消息,只能接收;
当DIR=1时,接收电路禁止RE¯=1,发送电路使能DE=1,对总线A/B信号取决于DI的信号。
DE、RE设计成相反的逻辑,也就是为了方便用一个GPIO口同时控制收发电路。