STM32之CAN---错误管理分析
1 几个重要概念
- Fault confinement(错误界定)
CAN nodes shall be able to distinguish short disturbances from permanent failures. Defective transmitting nodes shall be switched off. Switched off means a node is logically disconnected from the bus, so that it can neither send nor receive any frames.
CAN节点可以区分常规错误和永久故障。有故障的发送节点将切换到离线状态。离线意味着在逻辑上与总线断开,既不能发送也不能接收。
- Error-active(主动错误)
An error-active node shall normally take part in bus communication and send an active error flag when an error has been detected. The active error flag shall consist of six (6) consecutive dominant bits and shall violate the rule of bit stuffing and all fixed formats appearing in a regular frame .
处于主动错误状态的节点能正常参与总线通信的收发和当检测到错误时将发送错误标志,错误标志由6个连续的显示位组成(这种连续的6个显示位与常规的填充位和其它帧固定格式不相同,正因为如此,硬件才容易区别)。
- Error-passive(被动错误)
An error-passive node shall not send an active error flag. It takes part in bus communication, but when an error has been detected a passive error flag shall be sent. The passive error flag shall consist of six (6) consecutive recessive bits. After transmission, an error-passive node shall wait some additional time before initiating a further transmission .
处于被动错误状态的节点不能发送主动错误标志。它能参与正常通信,但当检测到错误时发送的是被动错误标志。被动错误标志由6个连续的隐性位组成。当发送结束后,处于被动错误状态的节点在下一次再次发送时之前需要等待一些额外时间。
- Bus-off(离线)
A node shall be in the bus-off state when it is switched off from the bus due to a request of FCE. In the bus-off state, a node shall neither send nor receive any frames. A node shall start the recovery from bus-off state only upon a user request.
由于错误界定规则,一个节点可能处于离线状态,当处于此状态时,这个节点既不发送也不接收。至于何时离线恢复取决于何时用户请求。
2 ISO11898中错误界定的规则
2.1 描述
当涉及到错误界定,一个节点必须处于下述三个错误状态中的其中一个,至于具体是哪种错误状态取决于节点的错误计数值:
- 主动错误状态(Error-active)
- 被动错误状态(Error-passive)
- 离线状态(Bus-off)
2.2 错误计数
错误计数器当检测下下述事件时将修改错误计数值:
- 当一接收节点检测到一个错误时,错误计数器将加1.有一种情况可以排外,即当检测到发送一主动错误标志或者重载标志时出现一位错误时除外。
- 当一接收节点发送一错误标志时,检测到首位为显性位时,错误计数器加8.
- 当一发送节后发送错误标志时,错误计数器加8,这时有两种情况除外:1:当这个发送节点处于主动错误状态下,且检测到由于ACK域未有显性位而造成的ACK错误,但是在发送时未检测到被动错误标志;2:当发送节点发送一错误标志时,在仲裁时检测到填充位错误(这些填充位原来应该是隐性,但检测结果为显性)。以上两种异常错误计数值保留原值不变。
- 当发送节点发送一主动错误标志或重载标志时,检测到位错误时,错误计数器加8.
- 当接收节点娄送一主动错误标志或重载标志时,检测到位错误时,错误计数器加8.
- 任何节点在发送主动错误标志,被动错误标志,或重载标志时都应都忍受连续7个显示位。当检测到连接14个显示位,或者被动错误标志后紧跟着连接8个显示位,或者8个连续显性位后紧跟着被动错误标志时,所有发送节点发送错误计数器加8,所有接收节点接收错误计数器加8.
- 发成功发送一帧报文后,发送计数器应减1,除非当前已经为0.
- 当成功接收一帧报文后,如果当前接收计数器的值大于1且小于127,则接收计数器减1;如果接收计数器的值为0,则保持为0;如果在于127,则接收计数器的值应设置为119~127之间的值。
2.3 主动错误状态和被动错误状态之间的转变
当发送错误计数器或者接收错误计数器的值大于127时,该节点变成被动错误状态。
当节点从主动错误状态变为被动错误状态时,节点将发送一主动错误标志。
当被动错误节点的发送错误计数器和接收错误计数器的值都小于
STM32CAN错误管 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)