目录
1. 总线错误 1.1 电平 1.2 错误帧 1.2.1 格式错误 1.2.2 CRC 错误 1.2.3 ACK 错误2. busoff3. Busoff 恢复 3.1 硬件需要做的 3.2 软件需要做的 3.3 硬件需要又做了4. Autosar CanSM 快慢恢复4.1 快速恢复机制 1. 错误处理和清除: 2. 重新初始化: 3. 重新尝试通信: 4. 短时间内恢复: 5. 系统调整:4.2 慢速恢复机制 1. 错误处理和监控: 2. 较长时间的初始化: 3. 周期性检查: 4. 逐步恢复: 5. 系统诊断:4.3 AUTOSAR CANSM 配置1.总线错误
1.1 电平

1.2 错误帧
1.2.1 格式错误
很好理解,报文的帧有着严格的格式。如下图。果然检测到格式不一样了。比如缺少了,长了,就会有问题

1.2.2 CRC 错误
注意这里的CRC 和 CAN 报文内部用户自己定义的CRC 不是一个东西。这是链路层使用的CRC。如下图所示,链路层会自己计算。

1.2.3 ACK 错误
前面我们直到显性会抑制隐形,这里就用到了,在发送的时候,发送端会在ACK 位置置隐形位。接收方正常收到之后会改为显性,这时候发送方回读到之后发现是显性了,则认为这一帧正常发出去了。

2. Busoff
上面的一些错误会导致busoff. 当然也不是立马进入busoff

这里面是有一些错误的counter。这个counter的自增,是硬件自身处理的。可以看下面寄存器。

自此 BusOff 发生了。
3.Busoff 恢复
3.1 硬件需要做的
在发生busoff 时,硬件会对一些寄存器进行置位。这里列取两个,主要直到这是硬件自己做的事情即可。
3.2 软件需要做的
上面可以看到,CAN 已经被硬件停了,想要恢复的话,软件需要重新拉起来。软件通过清除CCCR INIT 寄存器。

后面就需要硬件开始内部处理了,从软件的角度就是在这等就可以了。
3.3 硬件需要又做了
但是要等多长时间呢?

然后设备将等待129次总线Idle的出现(129 * 11个连续的隐性位),然后再恢复正常操作。在Bus_Off恢复流程结束时,错误管理计数器将被重置。
有了这个支撑就可以计算一下到底需要等多长时间了。我们可以拿报文来分析 下图为 CAN 的报文

对于一帧8字节数据的标准CAN报文总共的Bit位数量:
帧起始(1位) 仲裁段(13位) 控制段(5位) 数据段(64位) CRC段(16位) ACK段(2位) 帧结束(7位)= 108位
对于数据8字节的扩展帧:
帧起始(1位) 仲裁段(33位) 控制段(5位) 数据段(64位) CRC段(16位) ACK段(2位) 帧结束(7位)= 128位
当对应CAN报文传输速率为500kBaud/s时,即传输一个Bit需要的时间为:1/500k = 2us/bit,对应上述的标准帧及扩展帧的传输时间:
标准帧:108 x 2 = 216us
扩展帧:128 x 2 = 256us
当然 CANFD 也是一样的分析过程

由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
仲裁域波特率所占位数:帧起始(1位) 仲裁段(13位) 控制段的EDL、r0、BRS(3位) ACK段(2位) 帧结束(7位),共26位。
数据域波特率所占位数:控制段的ESI、DLC(5位) 数据段(0~512位) CRC段(28/33位),最多共550位。
假设仲裁域波特率为500Kbps(位时间2us),数据域波特率为2Mbps(位时间0.5us)
则发送一帧标准CANFD报文需要的时间为:26 x 2us 550 x 0.5us = 52 275 = 327us
可以进行计算了。
CAN使用接收错误计数器来计数总线空闲条件的发生情况。如果需要,可以在ECR.REC上进行监控。此外,总线空闲条件的每次发生都被PSR.LEC = 5 =位0错误,它触发一个中断 IR.PRA当然这需要 IR.PEAE 已经被启用。

从上面的过程也能得出一个结论,在Busoff recovery 的过程。CAN 一直处于 synchronizing 状态。这时候PSR.ACT = 1. PSR.BO 也是置位的。


4.Autosar CanSM 快慢恢复
4.1 快速恢复机制
快速恢复机制旨在尽可能迅速地将 CAN 控制器从 Bus Off 状态恢复到正常工作状态。这种机制适用于需要快速恢复总线通信的场景。具体过程如下:
1.错误处理和清除:
控制器在检测到严重错误并进入 Bus Off 状态后,会进行内部的错误处理,如清除错误标志和重置错误计数器。
2.重新初始化:
快速恢复机制会尽快重新初始化 CAN 控制器。这通常包括重新配置 CAN 控制器的参数和重置内部状态。
3.重新尝试通信:
控制器会尽快重新尝试重新加入总线。通常,控制器在总线处于空闲状态时,会开始发送重启帧或监测总线活动。
4.短时间内恢复:
在快速恢复过程中,CANSM 会尽量减少等待时间和延迟,使得控制器能尽快进入正常工作状态。
5.系统调整:
如果快速恢复机制无法解决问题,可能会触发额外的诊断或错误处理流程。
4.2 慢速恢复机制
慢速恢复机制则更加稳健,通常用于对恢复过程有更高可靠性要求的场景。该机制会在恢复过程中引入更多的时间和步骤,以确保所有错误和潜在问题都被妥善处理。具体过程如下:
1.错误处理和监控:

4.3 AUTOSAR CANSM 配置
在 AUTOSAR 中,CANSM 的恢复机制可以通过配置文件进行设置和调整。具体的配置参数包括:
