CAN总线错误帧长得啥样?怎么产生?

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

              CAN总线错误帧长得啥样?怎么产生?

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

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

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

    下面为错误帧的定义:

                        CAN总线错误帧长得啥样?怎么产生?

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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值