问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

RS485通信技术详解:原理、硬件实现与代码应用

创作时间:
作者:
@小白创作中心

RS485通信技术详解:原理、硬件实现与代码应用

引用
CSDN
1.
https://m.blog.csdn.net/m0_64982857/article/details/146074995

RS485通信技术是一种广泛应用于工业和商业环境中的数据传输方式。本文从基本原理、通信协议特点、硬件实现、电路设计、代码实现以及调试方法等多个方面,对RS485通信技术进行了全面总结。

一、基本原理

  1. 差分信号传输

RS485采用差分信号传输方式。它使用一对双绞线,这两条线分别称为A线和B线。发送端会将信号以差分的形式发送,即在A线和B线上分别施加相反的电压。当接收端收到信号时,是通过检测A线和B线之间的电压差来确定信号的逻辑状态。这种差分传输方式能够有效抑制电磁干扰(EMI),因为干扰信号通常会在两条线上以相同的方式出现,接收端通过差分检测可以将其抵消。

在实际的PCB板绘制中,走线也是要走成差分信号的方式的:

  1. 半双工通信模式

RS485通信是半双工的。半双工通信是一种数据传输模式,允许设备在通信链路中交替进行发送和接收数据,但是不能同时进行双向传输。

模式
数据传输方向
典型应用
单工
单向传输(固定发送端和接收端)
广播、遥控器
半双工
双向交替传输
RS-485总线、对讲机、CAN总线
全双工
双向同时传输
电话、以太网、USB

二、RS485的通信协议特点

  1. 长距离传输:RS485DE通信协议支持长达1200米(甚至更远,取决于波特率和线路条件)的传输距离,使其适用于各种工业和商业环境中的设备互联。

  2. 高抗干扰性:由于采用差分信号传输,RS485DE对于共模噪声具有很强的抑制能力,能够在恶劣的电磁环境中保持数据的完整性。

  3. 多点通信:一个RS485DE总线上可以连接多达32个(或更多,取决于总线驱动器和接收器的性能)节点,方便构建复杂的网络拓扑结构。

  4. 灵活的波特率设置:波特率可以在300bps到10Mbps之间灵活设置,以满足不同应用场景对数据传输速率的要求。

三、RS485的通信协议的硬件实现

  1. 硬件选型

选用符合RS-485标准的收发器芯片,如MAX485、SN65HVD485或LTC1495等。这些芯片具有差分信号收发功能、低功耗和高驱动能力等特点,能够确保数据在总线上的可靠传输。

例:SP485收发芯片:

包含一路驱动器,一路收发器,具有驱动使能(DE)和接收使能(RE)管脚,当处于关闭状态时,驱动和接收输出为高阻状态。

  1. 电路内部电平

  2. 硬件电路设计

  • 此电路图为传统的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电路/自收发电路/隔离电路:

  1. 可以使用USB转TTL进行测试485是否有数据(黄灯会闪);
  2. 可以使用示波器,看是否能够检测到高低电平;
  3. 硬件问题:我这边遇到的我问题,就是三极管坏了,因为485电路的前端有接收到数据,但是没有输出,后续排查就是三极管坏了。

以上为学习总结,如有问题各位提出来嚯~大家共同学习!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号