RS485通信技术详解:原理、硬件实现与代码应用
RS485通信技术详解:原理、硬件实现与代码应用
RS485通信技术是一种广泛应用于工业和商业环境中的数据传输方式。本文从基本原理、通信协议特点、硬件实现、电路设计、代码实现以及调试方法等多个方面,对RS485通信技术进行了全面总结。
一、基本原理
- 差分信号传输
RS485采用差分信号传输方式。它使用一对双绞线,这两条线分别称为A线和B线。发送端会将信号以差分的形式发送,即在A线和B线上分别施加相反的电压。当接收端收到信号时,是通过检测A线和B线之间的电压差来确定信号的逻辑状态。这种差分传输方式能够有效抑制电磁干扰(EMI),因为干扰信号通常会在两条线上以相同的方式出现,接收端通过差分检测可以将其抵消。
在实际的PCB板绘制中,走线也是要走成差分信号的方式的:
- 半双工通信模式
RS485通信是半双工的。半双工通信是一种数据传输模式,允许设备在通信链路中交替进行发送和接收数据,但是不能同时进行双向传输。
模式 | 数据传输方向 | 典型应用 |
---|---|---|
单工 | 单向传输(固定发送端和接收端) | 广播、遥控器 |
半双工 | 双向交替传输 | RS-485总线、对讲机、CAN总线 |
全双工 | 双向同时传输 | 电话、以太网、USB |
二、RS485的通信协议特点
长距离传输:RS485DE通信协议支持长达1200米(甚至更远,取决于波特率和线路条件)的传输距离,使其适用于各种工业和商业环境中的设备互联。
高抗干扰性:由于采用差分信号传输,RS485DE对于共模噪声具有很强的抑制能力,能够在恶劣的电磁环境中保持数据的完整性。
多点通信:一个RS485DE总线上可以连接多达32个(或更多,取决于总线驱动器和接收器的性能)节点,方便构建复杂的网络拓扑结构。
灵活的波特率设置:波特率可以在300bps到10Mbps之间灵活设置,以满足不同应用场景对数据传输速率的要求。
三、RS485的通信协议的硬件实现
- 硬件选型
选用符合RS-485标准的收发器芯片,如MAX485、SN65HVD485或LTC1495等。这些芯片具有差分信号收发功能、低功耗和高驱动能力等特点,能够确保数据在总线上的可靠传输。
例:SP485收发芯片:
包含一路驱动器,一路收发器,具有驱动使能(DE)和接收使能(RE)管脚,当处于关闭状态时,驱动和接收输出为高阻状态。
电路内部电平
硬件电路设计
- 此电路图为传统的RS485电路
该电路图采用3线控制,485RE、485RX、485TX
控制策略如下:485RE为低电平,485处于接收状态;485RE为高电平,485处于发送状态。通过切换485RE的电平来达到485收发状态的切换。
- 此电路图为自收发型电路设计
- 还有一种电路为带隔离的(此图来自网络)
RS485自收发实现方案,典型应用电路及问题经验总结-CSDN博客
带收发控制脚的485在编程时需要切换控制端电平。增加程序的复杂度。那么为了编程方便,所以改成自收发电路。
TX、RX引脚需要上拉电阻。
接收:默认没有数据时,TX为高电平,三极管导通,RE为低电平使能,RO收数据有效,485芯片为接收状态。
发送:发送数据时,TX会先有一个下拉的电平(起始位-由高向低),表示开始发送数据,此时三极管截止,DE为高电平发送使能。当发送数据“0”时,由于DI接口相当于接地,此时数据“0”就会传输到AB扣,A-B<0,则传输“0”,完成低电平传输,当发送“1”时,此时三极管导通,按理说RO会使能,此时由于还处于发送数据中,这种状态下MAX485处于高阻太,此时的状态通过A上来,B下拉电阻决定,此时A-B>0传输“1”,完成高电平的传输。
自动收发电路发送高电平时同时也是接收状态。
四、拓展RS-485/RS-422
RS-232,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。RS-232只能实现点对点的通信方式,不具备联网功能最大传输距离也只能达到几十米,不能满足远距离通信要求。为了解决这一问题,一个新的标准RS-485产生。
RS-485的数据信号采用差分传输方式,也称作平衡传输,可以有效的解决共模干扰的问题,最大距离可以达到1200米,并且允许多个设备接到同一条总线上。它使用一对双绞线,一线叫A,一线叫B。该电平与TTL兼容,可方便与TTL电路连接。
对于发送端:
一般情况下,发送驱动器A、B之间的正电平在+2+6V(发送逻辑1时总线上A的电压大于B的电压),负电平在-2-6V(发送逻辑0时总线上的电压小于B的电压)。
对于接收端:
当总线上A的电压大于B的电压,且压差大于200mv时,表示接收到逻辑1
当总线上A的电压小于B的电压,且压差小于-200mv时,表示接收到逻辑0
RS-422跟RS-485的主要区别:RS-422有4根信号线:两根发送,两根接收。由于RS-422的收与发是分开的,所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信,不可用于总线网;RS-485只有2根信号线,所以工作在半双工模式,常用于总线网。
五、代码实现
以STM32系列芯片为例:
STM32F103C8T6-RS485通讯完整版_stm32中rs485-CSDN博客
这为大哥写的基本已经很详细了。
六、调试遇到的问题
常规485电路/自收发电路/隔离电路:
- 可以使用USB转TTL进行测试485是否有数据(黄灯会闪);
- 可以使用示波器,看是否能够检测到高低电平;
- 硬件问题:我这边遇到的我问题,就是三极管坏了,因为485电路的前端有接收到数据,但是没有输出,后续排查就是三极管坏了。
以上为学习总结,如有问题各位提出来嚯~大家共同学习!