通信协议之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”
下图表示RS-485协议传输数据的AB电平高低与传输“1”和“0”的关系
工作方式:主机(STM32)通过串口向从机发送一段问询帧(包括地址码,功能码,数据码,效验码),每个从机(485传感器)都可以收到,但是因为问询帧里面有一段地址码,所以只有对应的地址的从机才执行相应的命令(比如返回采集到的温湿度等),然后主机就可以接收来自从机的问询帧解析相应的数据码即可。
2、关键特点
- 差分传输增加噪声抗扰度,减少噪声辐射
- 长距离链路(理想1200米:波特率为9600,承载只有一个485子设备)
- 数据速率高(10Mbs)
- 同一总线可以连接多个驱动器和接收器
- 宽共模范围允许驱动器和接收器之间存在地电位差异,允许最大共模电压-7~12V
3、STM32单片机通过MAX485芯片收发485传感器数据
3.1 普通电路
- 用RXD连接485芯片的RO引脚、用TXD连接485芯片的DI引脚
- 用一个单片机的普通IO引脚连接到RE、DE引脚CTRL
当单片机要发送数据的时候,控制U3_TEN 为高电平,数据通过TXD发送出去。
当单片机要接收数据的时候,控制U3_TEN为低电平,数据通过RXD接收回来(传感器将数据传给单片机)。
3.2 自动收发电路
- 只需要连接单片机的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传输过来的数据。
本文来自博客园,作者:登云上人间,转载请注明原文链接:https://www.cnblogs.com/lj15941314/p/15094156.html