打印
[技术问答]

NUC200的CAN进入BUSOFF

[复制链接]
1015|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vencelee3|  楼主 | 2018-9-17 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
控制器局域网进入BUSOFF后,有什么办法能自动恢复?
沙发
xinxianshi| | 2018-9-17 12:23 | 只看该作者
CAN 模块 BUSOFF 恢复机制说明 一.概念:BUS OFF BUS OFF 是 CAN 模块(硅片固化了 CAN2.0 协议的物理层和链路层)的三种错误状 态之一, 也叫离线模式。 在 BUS OFF 状态下, 要求 ECU 从总线脱离, 既不能接收总线的报文, 也不能向总线发送报文。 二.原理简述:
1. CAN 网络上会有哪些错误? CAN 控制器可检测如下五种错误: (错误检测并不需要 CPU 的干涉) a.位错误(Bit Check Error) 发送器在发送比特流的同时也对发出的比特流采样回收, 若送出的 bit 与所期待的 bit 不合,则 会检测到一个 Bit Check Error; b.位填充错误(Bit Stuff Error) 在需要执行位编码规则的位流序列中检测到第 6 个连续的极性相同的位序流时, 则检测到一个 Bit Stuff Error; c. CRC 错误(CRC Error) 发送端送出的 CRC 序列由发送器算出,接收器执行同样的 CRC 算法,若计算结果与接收到 的 CRC 序列不符,一个 CRC Error 被检测到,由发送端送出; d.帧格式错误( Check Error) 当一个固定形式的位场含非法位, 则检测到一个 Check Error(接收端检测到帧结束最后一位为 显性时帧错误忽略); e. 应答错误(Acknowledgment Error)
2. CAN 模块有几种错误状态,它们是如何界定的? 三种:错误主动,错误被动,总线关闭 CAN 模块配有接收错误计数器及发送错误计数器。简单的说: 1.当发送错误计数器和接收错误计数器值都小于或等于 127,为“错误主动”, 2.当发送错误计数器或接收错误计数器值大于等于 128,变为“错误被动”
3.当发送错误计数器或接收错误计数器值大于等于 256 时,“总线关闭”。 一般情况下只需对 BUSOFF 状态进行处理即可,其它两种错误状态没有必要处理的。 3.如何确认 CAN 模块进入了离线状态? CAN 网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的 数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要 CPU 的干涉,除非进 入了 BUSOFF 状态。 总线上每个节点的 CAN 模块都配有一个发送错误计数器和接收错误计数器。如果某个 节点的发送错误计数器超过了 255(假设计数器只有 8 位的情况下) ,监控器就会请求物理 层让该节点进入离线状态。我们只需查询 CAN 模块控制寄存器的状态标志位,就能确认是 否进入离线状态(BUS OFF) 。
4. CAN 模块进入了离线状态之后如何处理? 这里我们采用的是重新初始化 CAN。
5.在实际的实验中怎么模拟 BUSoff? 短接 CAN_H 和 CAN_L 即可。此时 ECU 无法接收或者接收报文。

使用特权

评论回复
板凳
jasontu| | 2018-9-18 09:11 | 只看该作者
最快的方式,直接把can reset,再重设寄存器的值即可

使用特权

评论回复
地板
wanduzi| | 2018-9-18 23:43 | 只看该作者
复位后重新调用初始化函数。

使用特权

评论回复
5
yiyigirl2014| | 2018-9-19 00:05 | 只看该作者
总线关闭了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝