原文:https://www.cnblogs.com/WhiteTears/p/8810801.html
阅读目录
- 1、RS485简介
- 2、RS485特性
- 3、RS485通信硬件实现
- 4、RS485通信软件实现
OS:Windows 64
Development kit:MDK5.14
IDE:UV4
MCU:STM32F103C8T6/VET6
AD:Altium Designer 18.0.12
回到顶部
1、RS485简介
RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。
RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信 络能在远距离条件下以及电子噪声大的环境下有效传输信 。RS-485使得廉价本地 络以及多支路通信链路的配置成为可能。RS485接口组成的半双工 络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。在RS485通信 络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。
在低速、短距离、无干扰的场合可以采用普通的双绞线,反之,在高速、长线传输时,则必须采用阻抗匹配(一般为120Ω)的RS485专用电缆(STP-120Ω(用于RS485 & CAN)一对18AWG),而在干扰恶劣的环境下还应采用铠装型双绞屏蔽电缆(ASTP-120Ω(用于RS485 & CAN)一对18AWG)。
回到顶部
2、RS485特性
- RS-485的电气特性:逻辑“0”以两线间的电压差为+(2—6)V表示;逻辑“1”以两线间的电压差为-(2—6)V表示。接口信 电平比RS-232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接
- RS-485的数据最高传输速率为10Mbps
- RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好
- RS-485接口的最大传输距离标准值为4000英尺(约1219米),实际上可达3000英尺,另外RS-232接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备 络。
回到顶部
3、RS485通信硬件实现
博主使用的485芯片为MAX3485,实现半双工通信。应用电路如下图:
R6为120欧的阻抗匹配电阻,如果长距离通信的话,一定要在最后一个节点接上这一个电阻;但是短距离通信的话焊上R6反而出错(博主在实验中发现,焊上匹配电阻后,主从节点通信异常,调试发现大量的00字节在自动收发),因此建议大家先不要焊上,但是在电路设计时保留。RXD485、TXD485分别接控制芯片的USART1_RX、USART1_TX(串口 可自行选择,这里使用串口1),此外;485C接芯片的PA4引脚(随意选择)用以切换485的通信状态。J1、J2为两个JST接口,方便485通信线路的连接,由于是从节点因而留出两个。以下为其余连接电路:
回到顶部
4、RS485通信软件实现
通过以上代码我么们就能通过STM32的串口资源实现485的正常通信了。注意事项:
- 初始化串口:RX设置为浮空输入、TX设置为复用推挽输出
- 因为是从节点,默认为接收模式,485C初始化为低电平;主节点则相反。可根据需要修改
- 每次发送或接收时都应切换通信状态
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!