通信协议之RS485

1、介绍

RS,recommend standard推荐标准,485是标识号。后来将RS改为EIA/TIA,目前标准名称为TIA-485。现在仍然用RS-485称呼。

RS-485采用差分信号负逻辑

  • B大于A传输的是“1”
  • B小于A传输的是“0”
  • +2~+6表示“0”
  • -6~-2表示“1”
    image

下图表示RS-485协议传输数据的AB电平高低与传输“1”和“0”的关系
image

image

工作方式:主机(STM32)通过串口向从机发送一段问询帧(包括地址码,功能码,数据码,效验码),每个从机(485传感器)都可以收到,但是因为问询帧里面有一段地址码,所以只有对应的地址的从机才执行相应的命令(比如返回采集到的温湿度等),然后主机就可以接收来自从机的问询帧解析相应的数据码即可。
image

2、关键特点

  • 差分传输增加噪声抗扰度,减少噪声辐射
  • 长距离链路(理想1200米:波特率为9600,承载只有一个485子设备)
  • 数据速率高(10Mbs)
  • 同一总线可以连接多个驱动器和接收器
  • 宽共模范围允许驱动器和接收器之间存在地电位差异,允许最大共模电压-7~12V

3、STM32单片机通过MAX485芯片收发485传感器数据

3.1 普通电路

  • 用RXD连接485芯片的RO引脚、用TXD连接485芯片的DI引脚
  • 用一个单片机的普通IO引脚连接到RE、DE引脚CTRL

image
当单片机要发送数据的时候,控制U3_TEN 为高电平,数据通过TXD发送出去

当单片机要接收数据的时候,控制U3_TEN为低电平,数据通过RXD接收回来(传感器将数据传给单片机)

3.2 自动收发电路

image

  • 只需要连接单片机的RXD和TXD引脚就可以,无需用单片机引脚连接485芯片的DE RE引脚。

发送数据过程:

  • 发送数据,用的是单片机的TXD引脚,也就是说,在TXD引脚上表现数据。
    例如要发送数据0x55,写成二进制就是0x01010101,TXD引脚上就会依次的用高低电平体现1和0。

当TXD发送0时,三极管不导通,DE接高电平,进入发送模式,485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。

当TXD发送1时,三极管导通,RE接低电平,进入接收模式,485芯片的AB引脚进入高阻状态,因为R5把A拉高,R4把B拉低,所以,AB传输的是1。你看看,当TXD发送1时,AB引脚发送1。

总结:TXD发1,AB就发1;TXD发0,AB就发0。

接受数据过程:
在接收数据的过程中,TXD引脚是一直保持高电平的,当TXD是高电平时,RE是低电平,正好调理成了接收状态,然后485芯片的RO引脚(也就是接RXD的引脚)就会反应AB传输过来的数据。

image

posted @ 2021-08-03 14:41  登云上人间  阅读(110)  评论(0编辑  收藏  举报