RS485通信介绍
典型的串口通信标准有 RS232 和 RS485,RS232 是全双工点对点的通信,而RS485 是半双工通信(2 线制),可以一点对多点进行组网,而且RS485是用缆线两端的电压差值来表示传递信号,这与 RS232 电气特性大不一样。RS485仅仅规定了接收端和发送端的电气特性,并没有规定或推荐任何数据协议,因此RS485 的协议层可以和 RS232 一样。
RS485的特点:
- 接口电平低,不易损坏芯片。RS485 的电气特性:逻辑“1”以两线间的电压差为+(2~6)V 表示;逻辑“0”以两线间的电压差为-(2~6)V 表示。接口信号电平比 RS232 降低了,不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。
- 传输速率高。10 米时,RS485 的数据最高传输速率可达 35Mbps,在1200m 时,传输速度可达 100Kbps。
- 抗干扰能力强。RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
- 传输距离远,支持节点多。RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到128 个或者 256 个节点,最大的可以支持到 400 个节点。
RS485 推荐使用在点对点,线型,总线型网络中,不能使用在星型和环型网络。理想情况下 RS485 需要 2 个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为 120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪声,而且线移需要双端的电压差。没有接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。RS485推荐的连接方式如下图所示
在RS485通信网络中,通常会使用485收发器来转换TTL电平和RS485电平。节点中的串口控制器使用RX与TX信号线连接到485收发器上,而收发器通过差分线连接到网络总线,串口控制器与收发器之间一般使用 TTL 信号传输,收发器与总线则使用差分信号来传输。发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上,而接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX 引脚传输到串口控制器中。通常在这些节点中只能有一个主机,剩下的全为从机。在总线的起止端分别加了一个 120 欧的匹配电阻。
当前开发板采用MAX485作为收发器,该芯片支持5V 供电,最大传输速度可达10Mbps, 支持多达 32 个节点,并且有输出短路保护。该芯片的框图如下图所示:
- A、B为RS485总线接口,用于连接 485 总线
- RO 是接收输出端
- DI是发送数据输入端
- RE 是接收使能信号(低电平有效)
- DE是发送使能信号(高电平有效)
因为 RS485 为半双工通信,通过 RE 和 DE 就能控制发送与接收。
本实验使用51单片机的串口跟 PC 机进行 RS485 通信,这里要特别注意,因为 PC 机不具有 RS485 接口,所以我们需要使用一个 RS232/RS485 的转换器,DB9 接口连接 PC 机,RS485 总线接口连接我们开发板上RS485模块的A 和 B。RS232/RS485 转换器如下图所示:
硬件设计
本实验使用到硬件资源如下:
- 串口
- RS485收发器:MAX485
串口是51单片机内部资源,只要对其配置即可使用,RS485模块电路如下图所示:
使用2根导线将开发板上 485 模块的 A 和 B 与RS232/RS485 转换器的 A 和 B 对应连接,这里一定要注意不能交叉,否则通信异常。
因为STC89C5x单片机内部只有一个串口,所以RS232和RS485不能同时使用,只能单独使用。还有就是USB转串口模块上也是要接到单片机串口上,所以在使用单片机串口(除使用USB转串口模块)时,比如WIFI、蓝牙、GPS、GSM/GPRS等应用,如果遇到通信不正常或者有干扰的情况,可以把CH340上的串口短接片拔掉
软件设计
本实验所要实现的功能是:当串口助手发送数据给单片机,单片机原封不动转发给串口助手显示。
1 | /************************************************************************************** |