其他
RS-485总线,这篇很详细
前世今生
工业HART总线 modbus协议 Profibus DP .......
电气特性
共模传输
差模传输
电气参数
共模电压范围为-7~+12V 可支持32个多点拓扑连接,见下面的网络拓扑图 使用40英尺线缆时,传输速率可达10Mbps,1英尺相当于30.48cm,这里Mbps是兆bit/s的意思 使用4000英尺线缆时,传输速率可达到100kbps 半双工通信 最小差分电压容限:200mV,也就是说接收端在差分电压低于200mV时就无法正确识别0/1了。这句话应该怎么理解呢?
:对于接收电路是判决A线共模电压与B线共模电压之差:
如果 ,则接收电路R识别为逻辑 1 如果 ,则接收电路R识别为逻辑0 简单说就是,A线的绝对电压值比B线的至少大于200mV则识别为逻辑1,或者A线的绝对电压值比B线的至少小200mV,才识别为逻辑0
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?做成两个脚收/发也可以用两个脚单独控制,比如: 甚至可以在DE=1的时候,将 设置为0,这样是不是就可以自环了?产品中也可以就这样设计,可以实现收发器以及布线的自诊断,通过接收到的报文与发送出去的报文比较,可以诊断出芯片焊接,收发器是否损坏或者断路,以及布线是否存在短路故障。或许你会说,瞎扯!你前面才说RS-485不能同时收发,这里又说能同时收发,岂不是自相矛盾吗?不矛盾,前面所说的不能同时收发,是指发的同时不能收来自其他设备的发送报文,这里收的是自身发出的报文。 所以半双工的本质,是通讯介质不存在双向通道,在向总线发送数据的时候,介质被占用,即便想发送也是无法正确的将信号发送到介质上的,如果强行发送,数据将会错乱,甚至收发器芯片有可能损坏。 : Receiver Output Enable,接收器使能,DE:Driver Output Enable,驱动输出使能 图中的DIR脚就是控制当前RS-485是处于“收”还是处于“发”模式。
如果想看差分信号,就可以利用双通道示波器加MATH减功能观测。或许有的示波器没有MATH功能,那么这里还可以使用一个技巧:
信号A在空闲时候为高电平;信号B在空闲时为低电平。所以你会看到有设备上会标识485_A+,485_B-。 每个通道的共模电压值都在标准要求的-7~12V之内,信号A为4V,信号B为5V:
驱动能力
数据监控
应用设计
端接设计 接口芯片 隔离设计