我们都知道RS485是半双工通信,所以在传输的时候需要有使能信号,标明是发送还是接收信号,很多时候就简单的用一个IO口控制就好了,但是有一些低成本紧凑型的MCU上,一个IO口也是很珍贵的,因此,如果能实现硬件自动控制方向,像串口那样两条线通信了,也不需要程序控制,可以释放一个IO。
原理分析:
通信之前,TXD为高电平,当通信一开始,TXD立马变为低电平的时候,因为有二极管的存在,电容器快速通过二极管放电,所以非门输入端这里也会“马上”变低电平。
通信过程中,TXD在高电平与低电平之间切换,但是非门输入端电压通过电容与电阻缓慢充电,DE/RE 保持高电平的状态,直到充电电压达到非门的阈值电压,从而可以做到自动方向控制。
接收信号的时候,TXD为高电平,非门输入为高,DE/RE 保持低电平,从而可以自动接收信号。
保持该高电平的时间,由电阻与电容决定,跟通信速率也有一定的影响,常规使用都是没问题的,具体可以根据自己的电路以及速率进行适当的调整。
如果遇到一些特殊的情况,或者IO口充足的情况,还是用一个IO进行控制,这里只是给大家一个思路。