CAN总线中继的feedback suppression


做CAN中继时,如果不加缓存逻辑,可以使用两个廉价CAN收发器进行背对背连接,在电路上就形成中继作用。但是,不可以像RS232芯片那样直接交叉TX-RX&RX-TX,这是因为CAN收发器内部有闭环反馈。
如图所示,总线的信号要反馈到RX上进行实时的监控,就相当于TX要反馈给RX,这样才形成了CAN总线特色的总线仲裁和ACK应答等机制。这种机制要求输出高电平时,由其他控制器决定是否响应或判断总线有效,被拉低电平表示有响应或者仲裁失败,据此进行总线仲裁。因此如图所示,因为强闭环效果,左侧发送者发送的低电平信号会经过RXA->TXB->RXB->TXA最终发送回左侧总线上,形成总线钳位,下一位即使是高电平,也会被认为是有设备拉低了电平,导致仲裁失败,不再发送。
所以要想用两个背靠背的廉价收发器实现CAN总线中继,必须增加反馈抑制功能(Feedback suppression),功能要求是:在左侧RXA输出低电平时,右侧RXB反馈的信号要被忽略,不可以发给TXA;而RXA输出高电平时,RXB的信号必须输出给TXA进行右侧总线信号反馈。右侧总线同理,当RXB为低电平时,RXA到TXB的通路要被切断。这就涉及到一个问题,如果RXA为低电平,而RXB也是低电平时,两个通路就都被切断了,双方TX都不发出信号,这会不会有问题?不会的,因为低电平是显性电平,RXA和RXB都接收到低电平时两侧总线必然都是低电平状态,TX发高电平或者低电平都没有关系,总线不认,所以不存在总线冲突。
因此,反馈抑制逻辑可以简化为:RXA低切断TXA接收,RXB低切断TXB接收,其他时候双方正常连接。而这在带使能端的缓冲门上是很容易实现的。有的器件内部是有这个功能的,把相应引脚设置上即可。而廉价的芯片没有这个功能,就需要外部电路实现。





猜你喜欢

转载自blog.csdn.net/mmhh3000/article/details/74668381