目录
1. 总线错误
1.1 电平
1.2 错误帧
1.2.1 格式错误
1.2.2 CRC 错误
1.2.3 ACK 错误
2. busoff
3. 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 的恢复机制可以通过配置文件进行设置和调整。具体的配置参数包括: