CAN笔记(3) 错误状态


1. 错误状态种类

单元 始终 处于 3 种状态之一


1.1. 主动错误状态

主动错误状态是可以正常参加总线通信的状态

处于主动错误状态的单元 检测出错误时,输出主动错误标志


1.2. 被动错误状态

被动错误状态是易引起错误的状态

处于被动错误状态的单元虽能参加总线通信
但为不妨碍其它单元通信,接收时不能积极地发送错误通知

处于被动错误状态的单元即使检测出错误
而其它处于主动错误状态的单元如果没发现错误,整个总线也被认为是没有错误的

处于被动错误状态的单元检测出错误时,输出被动错误标志

另外,处于被动错误状态的单元在发送结束后不能马上再次开始发送
在开始下次发送前,在间隔帧期间内必须插入“延迟传送”(8 个位的隐性位)


1.3. 总线关闭态

总线关闭态是不能参加总线上通信的状态
信息的接收和发送均被禁止


1.4. 三种状态的转换

这些状态依靠发送错误计数接收错误计数来管理
根据计数值决定进入何种状态,错误状态和计数值的关系如下:

单元错误状态发送错误计数值(TEC)接收错误计数值(REC)
主动错误状态且 0~127且 0~127
被动错误状态或 128~255或 128~255
总线关闭态256~∞-

关系图如下:
在这里插入图片描述


2. 错误计数值

发送错误计数值和接收错误计数值根据一定的条件发生变化

一次数据的接收和发送可能同时满足多个条件
错误计数器在错误标志的第一个位出现的时间点上开始计数

错误计数值的变动条件如下表:

接受和发送错误计数值的变动条件发送错误计数值(TEC)接收错误计数值(REC)
接收单元检测出错误-+1
接收单元在发送完错误标志后,检测到的第一个位为显性电平时-+8
发送单元在输出错误标志时+8-
发送单元在发送主动错误标志或过载标志时,检测出位错误+8-
接收单元在发送主动错误标志或过载标志时,检测出位错误-+8
各单元从主动错误标志、过载标志的最开始检测出连续14个位的显性位时之后,每检测出连续的 8 个位的显性位时+8+8
检测出在被动错误标志后追加的连续 8 个位的显性位时+8+8
发送单元正常发送数据结束时(返回 ACK 1 且到帧结束也未检测出错误时)−1 ;TEC=0 时 ±0-
接收单元正常接收数据结束时(CRC 2 未检测出错误且正常返回 ACK 时)-1≤REC≤127 时 -1;REC=0 时 ±0;REC>127 时 =127
处于总线关闭态的单元,检测到 128 次连续 11 个位的隐性位=0=0

参考:
《CAN入门书》


相关推荐:
CAN笔记(2) CAN特点
CAN笔记(1) CAN简介


谢谢!


  1. ACK:Acknowledge character(确认字符)表示发来的数据已确认接收无误 ↩︎

  2. CRC:Cyclic Redundancy Check(循环冗余校验)用来差错检测或校验数据传输或者保存后可能出现的错误 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氢键H-H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值