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简介
谢谢!