RS485通信学习笔记

RS485基础知识:

工作方式:差分信号
通信模式:半双工 单主多从
节点数:1发32收(有128,256,数量跟驱动芯片有关)
拓扑:    点对点(推荐),线性,总线型,不能使用星型或环型
特征阻抗:120Ω(需要并接120Ω终端电阻)
接收器输入阻抗:≥12KΩ
数据传输速度:最大10Mbps
最大传输距离:1200m
最大差动输出:±6V
最小差动输出:±1.5V
接收器灵敏度:±0.2V
共模电压范围:-7V~±12V
常用IC:SP3485 / MAX485

RS485硬件电路:

1、485基础电路

 

RS485通信学习笔记_第1张图片

上图是最基本的RS485电路,R/D为低电平时,发送禁止,接收有效,R/D为高电平时,则发送有效,接收截止。上拉电阻R7和下拉电阻R8,用于保证无连接的SP485R芯片处于空闲状态,提供网络失效保护,提高RS485节点与网络的可靠性,R7,R8,R9这三个电阻,需要根据实际应用改变大小,特别是使用120欧或更小的终端电阻时,R9就不需要了,此时R7,R8使用680欧电阻。正常情况下,一般R7=R8=4.7K,R9不要。

图中钳位于6.8V的管V4,V5,V6,都是为了保护RS485总线的,避免受外界干扰,也可以选择集成的总线保护原件。另外图中的L1,L2,C1,C2为可选安装原件,用于提高电路的EMI性能.

2、带隔离的RS485电路

RS485通信学习笔记_第2张图片

根本原理与基本电路的原理相似。使用DC-DC器件可以产生1组与微处理器电路完全隔离的电源输出,用于向RS485收发器提供+5V电源。电路中的光耦器件速率会影响RS485电路的通信速率。上图中选用了NEC的光耦PS2501,受其影响,该电路的通讯速率控制在19200bps下。

3、自收发电路1

RS485通信学习笔记_第3张图片

上图中,TX,RX引脚均需要上拉电阻,这一点特别重要。

接收:默认没有数据时,TX为高电平,三极管导通,RE为低电平使能,RO收数据有效,MAX485为接收态。

发送:发送数据1时,TX为高电平时,三极管导通,DE为低电平,此时收发器处于接收状态,驱动器就变成了高阻态,也就是发送端与AB断开了,此时AB之间的电压就取决于AB的上下拉电阻了,A为高电平、B为低电平,也就成为了逻辑1了。

发送数据0时,TX为低电平,三极管截止,DE为高电平,驱动器使能,此时正好DI是接地的,也就是低电平,驱动器也就会驱动输出B为1,A为0,也就是所谓的逻辑0了。

理解自收发的作用,关键是要理解RE和DE的作用,尤其是DE为0时,驱动器与AB之间就是高阻态,也就是断开状态,而且AB都要有上下拉电阻。然后就有了逻辑0-1之间的切换了。所以很巧妙,但是这里也有一个很明显的bug,也就是只适用于“半双工”,如果是全双工,就不行了,因为TX为1时,接收使能,此时从机如果回复数据,那么也就乱了。

4、自收发电路设计2

RS485通信学习笔记_第4张图片
电路的控制逻辑可通过UART信号波形特点,以及MAX485的收发控制真值表分析明白。

RS485通信学习笔记_第5张图片
 
接收:在MCU不发送数据的时候,UART_485_TX为高电平,三极管导通,DE=RE =0,按照表1和表2,MX485为接收模式, 对于此MAX485来说,A,B为高阻态,信号由另一端来控制,RO可以正常输出接收到的数据。
发送:在MCU发送数据的时候,当UART_485_TX发送数据0的时候,三极管不导通,DE=RE=1,按照表1和表2,MAX485为发送模式,DI接GND,即DI=0,MAX485将数据0发送出去。当UART_485_TX发送数据1的时候,MAX485为接收模式,A,B为高阻态,但是外面有R10上拉(A=1),R11下拉(B=0),对于远端来说,会接收到A=1,B=0,即接收到差分数据1.
由此可知,此电路是可以正常的收发的。

注意事项:R10,R11在网上有很多电路上面是10K,4.7K,先前也试过,但是实测会发现是有问题的,或者通信速度特别慢。原因是因为上下拉电阻太小,在电平变化的时候,上升沿速度太慢,因此在速率较高时会有问题,改成1K拿示波器实测波形是更好的

接地问题:
RS485是差分传输的,所以很多工程师以为GND地线不重要,经常不接,甚至有些工程为了节约成本用两芯线或者用视频线来传输RS485信号。虽然如果不接地线,在很多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:
(1)共模干扰问题: RS-485接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。因为RS-485是总线方式的传输,总线上有很多的节点,当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。
(2)EMI电磁兼容性问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个信号地这个低阻的返回通道,信号中的共模部分就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

 

软件设计:

1、RS485是一种常规的通信总线,它不能够做总线的自动仲裁,也就是不能够同时发送数据以避免总线竞争,所以整个系统的通信效率必然较低,数据冗余量较大,对于速度要求高的应用场所不适应用RS485总线。同时由于RS485总线上通常只有一台主机,所以这种总线方式是典型的集中—分散型控制系统

RS485通信学习笔记_第6张图片

2、RS485仅定义的物理层传输,是rs232一个拓展,解决串口多机通信问题。所以rs485一般使用场景是,MCU的串口 <---> rs485 < ---> MCU串口;所以通信双方遵循的还是串口协议,比如波特率、数据位、检验位等等。

3、Rs485单主多从设计时,需要软件自定义地址以区分多从机,因为rs485芯片仅工作物理链路层并没有硬件地址区分多个主机,所以需要软件设计时加上地址以便区分不同从机。例如我们定义协议如下: 起始帧 地址帧 指令码 数据 数据长度 检验码;在这个自定义协议下,地址帧一般设置为1~32,我们每次发送和接收数据都带上自己的地址,对主机而言,接收到数据后解析地址,然后根据地址加以区分。

4、一般来说,rs485单主多从设计,很多时候采用的是 modbus协议, modbus协议是一个标准,方便不同485接口设备之间更好对接

 

 

 


 

 

你可能感兴趣的:(嵌入式,硬件设计,通信,嵌入式,串口通信)