RS485串口经常用到,本文分享下RS485协议方面基本点,并介绍一种简单的串口TTL(3.3V)电平转换为RS485电平的电路,这个电路是经过制板验证过的。
先简单介绍下RS485一些协议方面的基本点:
工作方式:差分信号
节点数:1发32收(也有说128,256个,跟驱动芯片有关)
特征阻抗:120Ω(需要并接120Ω终端电阻)
接收器输入阻抗:≥12KΩ
数据传输速度:最大10Mbps
最大传输距离:1200m
最大差动输出:±6V
最小差动输出:±1.5V
接收器灵敏度:±0.2V
共模电压范围:-7V~±12V
RS-485 标准的最大传输距离约为 1219 米,最大传输速率为 10Mbps。
通常, RS-485 网络采用平衡双绞线作为传输媒体。平衡双绞线的长度与传输速率成反比,只有在 20kbps 速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般来说, 15 米长双绞线最大传输速率仅为 1Mbps。
RS-485 网络采用直线拓朴结构,需要安装 2 个终端匹配电阻,其阻值要求等于传输电
缆的特性阻抗(一般取值为 120Ω)。在矩距离、或低波特率波数据传输时可不需终端匹配。
RS485自动收发电路
电路分享如下图,采用MAX485芯片,RE,DE管脚是选择发送和接收模式,一般情况下,需要MCU的一个GPIO来控制发送和接收模式,图中经过三极管来控制。
电路的控制逻辑可通过UART信号波形特点,以及MAX485的收发控制真值表分析明白。
接收:在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电磁兼容性问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个信号地这个低阻的返回通道,信号中的共模部分就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。
下面将原理图,规格书,资料分享如下,欢迎下载: