1747-L542 /D RS-485通信从单片机/DSP/处理器接口而言,是利用UART接口与RS-485收发器接口。当然你说我用FPGA难道不行么?肯定是可以的,用FPGA实现一个串口收发的IP模块,当然也是可以的。甚至你想说,我拿GPIO去模拟一下 UART 是不是就不行?也是能办得到的,只不过这么干意义不大,需要占用CPU资源实现底层BIT的收发。
前面说到半双工,有半双工就有全双工。什么是半双工呢?首先半双工以及全双工,所界定的对象一定是点对点而言的,这里说点对点就是指在同一时刻而言,所谓半双工,就是设备在同一时刻要么处于收数据状态, 要么处于发数据状态, 不允许同时收发数据。 全双工则刚好相反,允许同时收发。比如 I2C 总线就是半双工总线,4线制 SPI 是全双工,而三线制SPI则是半双工总线;又譬如RS-422或者RS-232 是全双工接口;而CAN总线则是半双工总线。RS-485就是一种半双工总线:
当Host发送数据时,数据沿着红色的线经由双绞线,传输至Slave的差分接收电路,当slave应答时,数据沿着兰色的方向传输至Host的接收电路,但是传输介质是一对双绞线,所以一方在传输数据的时候,另一方是无法传输信号的,从收发器的控制角度来看: 控制芯片侧,用一个GPIO脚来控制收发使能,来一张芯片内部原理框图,就很容易理解了:
当DIR=0时,接收电路使能,发送电路禁止DE=0,对总线而言相当于高阻;当 DIR=1 时,接收电路使能,发送电路禁止DE=1,对总线A/B信号取决于DI的信号。这里有两个问题: 1.为什么芯片要把和设计成相反的有效逻辑呢?这样其实也是方便用一个GPIO同时控制收发电路的考虑。 2.那收发器芯片收发使能为什么不做成一个脚呢?比如就叫DIR?做成两个脚收/发也可以用两个脚单独控制