CAN总线错误帧



前两天,帮一个客户调试 CAN总线 ,他的板子发数,USBCAN接收,但是总是调试不成。我接上 示波器 ,量一下CANH与CANL之间的波形,发现他板子不连接USBCAN接口卡时,波形是正确的;可是一旦连接上USBCAN以后,波形就成了以下这个样子:

本文引用地址: http://www.eepw.com.cn/article/201612/330355.htm

就是刚发了第一个显性位之后,就有个阶梯的电压下降,然后保持几个位后,恢复到隐性电平,过了一会,才有正常的波形出来,可是这个帧只剩下一半了,肯定不可能发送成功。

我开始以为是收发器不匹配,换了几个收发器都是一样的。突然我想到这个很像错误帧。既然有错误帧,那就说明可能波特率不对。仔细看了程序,发现波特率是12M下算出来的,而晶振却用了16M。立马调整波特率,OK。通讯成功。那个阶梯的波形也没有了。

所以可以肯定,那就是一个错误帧。但为什么有个阶梯呢?答案很简单,因为CAN通讯的两个节点的收发器的电源不同,比如,发送节点的电压稍微高点,那么其CANH被拉高时电压也高,故显性位输出时,差分电压也高。所以当发送节点发送的显性位被接收节点接收后,接收节点发现波特率不匹配,则马上发出错误帧(6个位的显性电平),但是接收节点电压稍微低,故差分电压也小一点,所以产生了一个“阶梯”。

下面为错误帧的定义:

错误帧是节点收到信息,被认为错误时,而向总线广播的一种帧。比如前面这个错误帧的作用就是:接收节点通知发送节点:你的发送有主动错误,你的发送错误计数器要加8;同时接收节点的接收错误计数器要加1。

这样,不同波特率的总线下,少数不同波特率的发送节点总是先退出总线(错误计数器达256时,进入总线关闭状态),保证了其他节点的正常通讯。

前两天,帮一个客户调试 CAN总线 ,他的板子发数,USBCAN接收,但是总是调试不成。我接上 示波器 ,量一下CANH与CANL之间的波形,发现他板子不连接USBCAN接口卡时,波形是正确的;可是一旦连接上USBCAN以后,波形就成了以下这个样子:

本文引用地址: http://www.eepw.com.cn/article/201612/330355.htm

就是刚发了第一个显性位之后,就有个阶梯的电压下降,然后保持几个位后,恢复到隐性电平,过了一会,才有正常的波形出来,可是这个帧只剩下一半了,肯定不可能发送成功。

我开始以为是收发器不匹配,换了几个收发器都是一样的。突然我想到这个很像错误帧。既然有错误帧,那就说明可能波特率不对。仔细看了程序,发现波特率是12M下算出来的,而晶振却用了16M。立马调整波特率,OK。通讯成功。那个阶梯的波形也没有了。

所以可以肯定,那就是一个错误帧。但为什么有个阶梯呢?答案很简单,因为CAN通讯的两个节点的收发器的电源不同,比如,发送节点的电压稍微高点,那么其CANH被拉高时电压也高,故显性位输出时,差分电压也高。所以当发送节点发送的显性位被接收节点接收后,接收节点发现波特率不匹配,则马上发出错误帧(6个位的显性电平),但是接收节点电压稍微低,故差分电压也小一点,所以产生了一个“阶梯”。

下面为错误帧的定义:

错误帧是节点收到信息,被认为错误时,而向总线广播的一种帧。比如前面这个错误帧的作用就是:接收节点通知发送节点:你的发送有主动错误,你的发送错误计数器要加8;同时接收节点的接收错误计数器要加1。

这样,不同波特率的总线下,少数不同波特率的发送节点总是先退出总线(错误计数器达256时,进入总线关闭状态),保证了其他节点的正常通讯。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN总线通信协议错误是指在CAN总线通信中发生了一些问题或错误导致数据传输出现异常的情况。错误可以分为以下几种类型: 1. 误码(Error Frame):当总线上的任一节点检测到总线上出现了错误时,发送一个误码给其他节点,来通知它们发生了错误。 2. 传输错误(Transmission Error Frame):当一个或多个CAN节点尝试发送数据时,如果在总线中发生了传输错误,例如位错误、标识符错误或CRC校验错误等,就发送传输错误。 3. 硬件错误(Hardware Error Frame):当CAN控制器发现硬件故障或错误时,发送硬件错误来通知其他节点,同时也主动使整个系统进入总线离线状态,以防止错误数据的传输。 4. 重传错误(Retry Error Frame):当发送节点在传输数据时,如果在规定的重传次数内未能成功发送,就发送重传错误。这种错误通常引发其他节点对数据的重传,以保证数据的正确传输。 5. 格式错误(Format Error Frame):当节点在接收数据时,如果发现数据的格式不符合当前总线通信协议的规范,例如格式错误类型错误等,就发送格式错误来通知发送节点。 总的来说,CAN总线通信协议错误的出现意味着通信中出现了异常情况,可能是硬件故障、传输错误、格式不正确等原因导致的数据传输异常。及时检测和处理错误对于确保CAN总线通信的稳定性和可靠性非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值