MAX13487E 半双工 RS-485/RS-422 收发器详解
RS-485 是一种电气标准(物理层的通信协议)详解参阅RS-485标准详解
本篇以百问网提供的全场景工业互联设备管理系统解决方案所使用的 RS-485 收发器(MAX13487EESA+)为例详解实际的 RS-485 收发器使用案例。
RS-485 收发器
RS-485 收发器的主要功能是实现对 RS-485 总线的发送和接收操作,负责信号的转换和传输。
将数据从微控制器、计算机等设备的 TTL 电平(低电平和高电平)转换为 RS-485 标准的差分信号,并将其发送到总线上。
将从总线上接收到的差分信号转换回 TTL 电平信号,并传送到控制器或处理器。
RS-485 传输的是差分信号,意味着信号是通过两条电线(A 和 B)之间的电压差来传输的。RS-485 收发器负责将控制器的单端信号转换成差分信号,或反过来将差分信号转换为单端信号。
基于收发器的主要功能 up 在网上看了多款开发板上的 RS-485 通信模块的原理图,发现大家都差不多,可以说基本上一模一样。
常见的几款收发器是由 Exar 提供的 SP3485、由 Texas Instruments 提供的 SN75176、 由 Analog Devices 提供的 ADM485
以及由 STMicroelectronics 提供 STS485 和由 Maxim Integrated 提供的 MAX485。
以 MAX13487EESA+ 为例
原理图如下
引脚说明
-
RO(引脚1)
- 功能:接收器输出,接收器使能时,当V(A) - V(B) > 200mV时,RO 输出高电平;当V(A) - V(B) < -200mV时,RO 输出低电平。
- 连接:RO 引脚连接到微控制器的 RXD 引脚,用于传输从 RS-485 总线上接收到的数据。接收器根据 A 和 B 线之间的差分电压来决定 RO 的输出电平。
-
RE(引脚2)
- 功能:接收器输出使能,RE 接为低电平时,RO 输出有效;RE 接为高电平时,自动方向控制电路启用接收器状态。RE 引脚也与自动换向功能相连。
- 连接:RE 通过一个外部控制引脚连接到微控制器或控制逻辑,允许微控制器控制接收器的启用或禁用。
原理图中 RE 始终拉高,收发器进入自动选向模式,无需人为控制,嗯!很人性化。
-
SHDN(引脚3)
- 功能:关断控制。当 SHDN 为高电平时,设备正常工作;当 SHDN 为低电平时,设备进入关断模式,降低功耗。
- 连接:SHDN 引脚用于控制设备的启用与关断状态。SHDN 可能会通过外部逻辑(如微控制器的 GPIO)来控制设备的关断。
原理图中 SHDN 始终拉高,收发器始终处于工作模式。
-
DI(引脚4)
- 功能:驱动器输入,DI 为低电平时,强制驱动非反向输出(A)低电平,反向输出(B)为高电平;DI 为高电平时,强制驱动非反向输出(A)高电平,反向输出(B)为低电平。该引脚与自动换向逻辑相连,控制数据的发送方向。
- 连接:DI 引脚连接到微控制器的 TXD 引脚,该引脚决定是否驱动数据总线的差分信号。当 DI 为高电平时,设备会开始驱动总线。
-
GND(引脚5)
- 功能:接地引脚,为电路提供共同的参考电压。
- 连接:GND 引脚直接连接到电源的地线。
-
A(引脚6)和 B(引脚7)
- 功能:分别为收发器非反向输入/输出(A)和收发器反向输入/输出(B)。这两个引脚用于接收和发送 RS-485 总线的差分信号。
- 连接:A 和 B 引脚通过电阻连接到 RS-485 总线。这两个引脚用于传输差分信号,A 和 B 的电压差决定了数据的传输。
-
VCC(引脚8)
- 功能:正电源供电,引脚电压为 +5V ±5%。
- 连接:VCC 引脚通过电源电压连接到 5V 电源,并通过 0.1µF 电容(C18)去耦,减少电源噪声对设备的影响。
模拟微控制器如何使用 MAX13487E 来发送一个字节的数据(例如 0101 0101
)
-
数据发送前的准备:
- 微控制器通过 DI 控制数据的发送。
- RE 控制接收器是否启用,通常在发送数据时,接收器应被禁用或处于自动选向模式。
- SHDN 用于控制设备是否处于工作状态。如果设备处于关断模式,需要先将 SHDN 设置为高电平才能启用。
- A 和 B 是 RS-485 总线的差分信号线,连接到外部 RS485 总线。
-
发送数据过程:
-
初始化状态:
在发送数据之前,首先确保设备处于启用状态。- SHDN 被拉高,设备进入工作模式。
- RE 设置为 高电平,使接收器处于禁用状态,确保发送器可以正常工作。
-
数据输入(0101 0101):
假设微控制器将0101 0101
(一个字节)通过 TXD 引脚 发送到 MAX13487E 的 DI 引脚。该数据通过 DI 引脚 输入到 MAX13487E。- 数据
0101 0101
是以串行方式逐位发送的,因此在发送过程中,数据将按顺序一位一位地传输。
- 数据
-
DI 引脚控制发送:
- 当 DI 为 高电平 时,MAX13487E 的 驱动器 会被启用。此时,MAX13487E 会将 A 和 B 引脚上的电压差值调节到正确的电平,用于驱动差分信号。
- 当 DI 为 低电平 时,MAX13487E 会驱动 A 引脚为低电平,B 引脚为高电平,发送数据的反向信号。
-
传输过程:
- DI = 1(表示发送数据中的 "1")时,MAX13487E 会使 A 引脚处于高电平,B 引脚处于低电平。
- DI = 0(表示发送数据中的 "0")时,MAX13487E 会使 A 引脚处于低电平,B 引脚处于高电平。
-
数据传输结束:
- 在最后一个比特传输后,DI 引脚的状态不再发生变化,MAX13487E 将停止驱动 RS-485 总线。
- A 和 B 会保持在总线上的稳定状态(通常是高电平)。
-
自动选向(AutoDirection)实现原理
MAX13487E/MAX13488E 内部电路与 A 引脚上的外部上拉电阻和 B 引脚上的下拉电阻(请参见引脚配置/典型应用电路)一起,自动启用或禁用驱动器和接收器,以保持总线处于正确的状态。
该自动方向控制电路由一个状态机和一个额外的接收比较器组成,用于确定当前是该设备正在驱动总线,还是总线网络中的另一个节点正在驱动总线。
内部状态机有两个输入:
- DI(驱动器输入)
- A-B 的当前状态(通过专用的差分比较器来确定)
状态机还有两个输出:
- DRIVER_ENABLE(驱动器启用信号)—内部信号,用于启用和禁用驱动器。
- RECEIVER_ENABLE(接收器启用信号)—内部信号,与 DRIVER_ENABLE 信号相反,但可以被外部引脚覆盖。
当 DI 为低电平时,设备始终驱动总线低电平。当 DI 为高电平时,设备会短时间驱动总线,然后禁用驱动器,允许外部上拉/下拉电阻保持总线在高电平状态(A-B > 200mV)。
在每次 DI 从低电平到高电平的转换过程中,驱动器保持启用状态,直到 A-B 的电压差大于 VDT(驱动器禁用电压阈值),然后禁用驱动器,让外部的上拉/下拉电阻保持 A 和 B 线的正确状态。
上拉和下拉电阻
A 和 B 线上的上拉电阻和下拉电阻是设备正常工作的必要部分,尽管它们的具体值并不严格要求。它们的作用是在 DI 发生低到高的电平转换后,保持总线在高电平状态(A-B > 200mV)。
这些电阻的大小与使用其他 RS-485 驱动器时的配置相同,取决于总线的终端方式和总线上连接的节点数。设置这些电阻时最重要的因素是确保总线上的空闲电压(A-B)大于 200mV,以保持与标准 RS-485 接收器阈值的兼容性。
自动换向工作原理总结
- 状态机:MAX13487E 使用内部状态机来自动管理总线的方向。当 DI 引脚变化时,状态机会根据 A-B 的电压差 来判断是否需要启用或禁用驱动器。
- 外部电阻:这些电阻帮助确保在数据传输结束后,总线保持在正确的电平,以避免数据丢失或冲突。
- 自动启用/禁用驱动器:当 DI 为高电平时,MAX13487E 启动驱动器并发送数据,发送完成后,驱动器自动禁用,并由外部电阻保持总线电平满足总线标准。
MAX13487E 的自动收发控制在DI引脚输入低电平时驱动总线为低(A < B),在DI引脚输入为高电平时,只驱动总线一小段时间就禁止发送器,并由A、B的上下拉电阻保持总线为高电平(A > B)