如何判断CAN总线空闲以及帧间隙,计算传输速率

一、如何判断总线忙还是空闲呢

进入 正常模式之前,bxCAN 必须始终在 CAN 总线上实现 同步。为了进行同步,bxCAN 将等待 CAN 总线空闲(即,已监测到CANRX 上的 11 个隐性位)。

判断总线状态可以监测总线电压,简单来说CAN_H和CAN_L之间的差分电压大的(一般在2V左右)就是显性状态,差分电压小的(理论上是0V)就是隐性,当然容错CAN要复杂很多,就不是这样的。当你一值监测到总线都处于隐性状态(就是两根线电压值差不多)那就说明总线处于空闲状态,如果是显隐交替,那就是总线不处于空闲状态。

  CAN总线空闲的定义是连续11个位的隐性电平(逻辑为1),一般用于总线关闭时的自动恢复。而CAN的显性电平逻辑为0,一旦有显性就说明肯定至少有1个节点在发送波形,那就不是空闲了。

二、帧间隙

CAN的帧间隙是连续3个以上隐性电平。

三、传输速率

查询CAN的数据帧格式可得知位数为:

标准帧:1+11+1+1+1+4+64+15+1+1+1+7=108
扩展帧:108+2+18=128

结合帧间隙3个以上隐性电平,即+3。

波特率500k = 500 000 bit/s = 500 bit/ms

即1毫秒可传输 500 / (108 +3)= 4.504帧数据。

猜你喜欢

转载自blog.csdn.net/qq_27747359/article/details/90897558