TI中文支持网
TI专业的中文技术问题搜集分享网站

CAN总线上的数据冲突时,如何避免短路,避免接收端收到错误信息

我了解了CAN总线处理冲突的机制,知道,发送端在发送信号的同时也在侦听信号,如果发送的和接收的不一致,则说明有其它节点在发信号,若优先级低于其他发送节点,则停止发送。

从电路的角度上,若发生冲突,一个节点发送3V, 另一个节点在同一根数据线上发送2.5V,是否会短路?另外接收段会不会搞不清这以为数据到底是什么,因为数据都因为冲突被破坏了。

能否推荐一款最常用的CAN收发器?

谢谢

Kailyn Chen:

您好,3.3V和2.5V供电的收发器,如果收发器的输出幅值和输入阈值都相似,那么就是可以直接连接的。不会发生总线报错。

比如3.3V和5V的收发器,输出幅值在显性状态,60ohm负载条件下的输出幅值Vod大于1.5V,输入阈值<500mV 被视为隐性,>900mV 为显性,所以通常3.3V和5V的收发器是可以互联的。 参考下面这篇应用手册关于两种不同收发器的互联应用:https://www.ti.com/lit/an/slla337/slla337.pdf

常用的CAN收发器的选型如下,您可以根据您的实际需求,比如通道数,供电电压,信号速率以及是否带有失效保护,失效保护电压范围等进行筛选:

https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_仿真、硬件和系统设计工具_products.html

,

Maverick_1984:

1,当一个节点输出处于显性状态,另一个节点处于隐性状态,是否会短路? 我类比两个Push-PULL同时输出,将发生短路。是不是因为隐性是一种高阻态,所以不会短路

2, Can总线协议,如何判断0和1的?是不是显性就是0,隐性就是1?

3,您提供的链接sll337文件的第4页最后一段,Bit time 3: both transmit dominant, showing what would happen during arbitration,我不理解,为什么都处于显性状态,就会进入仲裁,在CAN收发器看来,接收到的都是显性状态,和TXD1, TXD2发送的显性是一致的。没有侦察到收发不一致现象,无从探知此时有别的节点在发射。而Bit time 1: one transceiver transmits a dominant bit while the other remains recessive. 此时节点2应该能侦测到有节点在发送,因为总线为显性,而TXD2此时却为1。

,

Kailyn Chen:

抱歉回复晚了,您的问题解决了没? 如果还没有的话,我这边再看下。

,

Maverick_1984:

上一个回复最重要的是问题一,我不明白,是不是隐形就是高阻态?

其次是问题三,我不明白。

,

Kailyn Chen:

好的,针对这两个问题我现在看下。

,

Kailyn Chen:

您好,针对您的而第一个问题 , 隐性状态我认为不是高阻态。我们所说的高阻态不是一个稳定的状态,对于CAN总线来说,显性和隐性的阈值是由ISO11892 CAN总线协议规定的。那么不在这个阈值范围内的,或者说造成CAN总线输出未知状态(既不是显性也不是隐性)的称之为高阻态。

,

Kailyn Chen:

关于您提到的第三问,当总线上两个节点都为显性时,是要开始进行仲裁,因为此时两个节点都认为自己已经发出去了,因为总线上返回的结果和自己发送的结果是相同的,仅仅这一bit是不能决定优先权的,所以两个节点继续发送,继续和总线电平进行对比,如果返回的值和自己发送的值不一致的时候,节点才会意识到自己的优先级是处于低的位置,所以要退出发送,让给优先级别高的去继续发送。 所以这是一个仲裁过程。

因此这句英文both transmit dominant, showing what would happen during arbitration说的是,如果都为显性,在仲裁的时候将会发生什么?其实CAN总线也正是利用总线上都是显性,或者都是隐性这个特性进行仲裁的。

,

Maverick_1984:

当一个节点发出显性信号,和其它节点的隐形为什么没有短路,既然不是高阻态,就类似于两个电压不同的电源并联在一起.。会不会隐形是上拉到2.5V,就像是open drain, 显性是push pull?

,

Maverick_1984:

请回复一下,误按问题已解决

,

Kailyn Chen:

Maverick_1984 说:当一个节点发出显性信号,和其它节点的隐形为什么没有短路,既然不是高阻态,就类似于两个电压不同的电源并联在一起.。会不会隐形是上拉到2.5V,就像是open drain, 显性是push pull?

您好,我不是这么理解的,一个发送显性,一个是隐性的话,不是相当于并联电源,而是进行“线与"逻辑,比如显性是0,隐性是1,那么总线上呈现的状态为0即显性状态。 只有发送同为隐性的时候,总线才会显示隐性。 

赞(0)
未经允许不得转载:TI中文支持网 » CAN总线上的数据冲突时,如何避免短路,避免接收端收到错误信息
分享到: 更多 (0)