AUTOSAR构架下的CAN-Busoff的产生与恢复

  1. 如何产生CAN Bus-Off
    1. Can Tx-Rx短接
    2. Can Tx对地短路
    3. Can Rx对电源短路
    4. 中断电阻不匹配
  2. CAN Busoff 产生及处理
    1. Tx-Rx 短接,报文无法成功发送,每次发送失败,都会使得Can Controller TEC计数+8,发送成功TEC计数-1,当TEC计数大于255时,硬件置位Busoff中断标志位,软件进入Busoff中断。
    2. 在CAN_BusoffHandler中,进行了如下操作:
      1. 取消所有pending request(pending Tx/Rx request)
      2. 将CAN Controller 设置为stopped模式
      3. 调用CanIf_ControllerBusOff()通知上层
      4. 清除Busoff中断标志位
    3. 函数CanIf_ControllerBusOff()中,进行了如下操作
      1. 将Tx Pdu模式设置为Offline,停止发送报文
      2. 调用busoff manage函数通知上层,一般是CanSM_ControllerBusOff();
    4. 函数CanSM_ControllerBusOff()中,进行了如下操作
      1. 通知BswM模块,Can controller状态发生变化,即:

BswM_CanSM_CurrentState(network, CANSM_BSWM_NO_COMMUNICATION),如有需要,可以通过BswM模块配置达到此模块时相应的Action。

  1. 通知ComM模块,Can Controller模式变化,即:

ComM_BusSM_ModeIndication(network, COMM_SILENT_COMMUNICATION)

  1. 向Dem模块报告Can Busoff 发生用于相关DTC的存储
  2. 将CanSM的模式切换为CANSM_S_RESTART_CC
  3. 启动CanSM timer,该timer用于bus-off recovery时间计数,tx-ensured时间计数等
  1. Can busoff recovery处理
    1. CanSM_Mainfunction()中,会周期性的check是否有Bus-off发生,通过函数CanSM_BusOffTransitions(network)进行处理,当CAN BOR state为CANSM_S_RESTART_CC时,进行CanSM_BOR_CtrlsStart(network)
    2. 在CtrlsStart()函数中,会通过CanIf_SetControllerMode()函数将将发生bus-off的Controller状态设置为START,如果恢复成功,将CanSM状态设置为CANSM_S_BUS_OFF_RECOVERY_L1或CANSM_S_BUS_OFF_RECOVERY_L2如果恢复失败,则CanSM_Num_Unsuccessful_ModeReq_au8++,当CanSM_Num_Unsuccessful_ModeReq_au8超过配置的最大数值时,请求COMM_NO_COMMUNICATION,使该路Controller下线,此后不再进行Bus-off recovery
    3. 当达到Bus-off配置的时间后,停止CANSM timer计算,将Pdu模式设置为Online,并通知BusM模块,CANSM已进入CANSM_BSWM_FULL_COMMUNICATION
    4. 将CANSM bor state 切换为CANSM_S_BUS_OFF_CHECK,启动CANSM timer,开始进行Bus off recovery 确认,在这段时间内如果没有发生bus off,将CANSM BOR state置位CANSM_S_NO_BUS_OFF,清除Busoff_Indication数组,关闭CANSM timer;如果在此过程中在此发生Bus-off,则重复上述过程,进行新一轮Bus off recovery

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值