BSW:CanSM模块配置及应用

CanSM模块中需要配置的内容其实不多,,主要涉及busoff相关配置项,这里重点讲下busoff触发的过程以及如何去测试。我使用的协议栈CanSM模块的版本为4.0.3,CanSM的本质其实是一个复杂的状态机,分成了几个大的状态,大的状态中又嵌套了几个小的状态,建议大家学习的时候一边对着规范,一边看静态代码,便于更好地理解。
摘要由CSDN通过智能技术生成

前言:

CanSM模块中需要配置的内容其实不多,,主要涉及busoff相关配置项,这里重点讲下busoff触发的过程以及如何去测试。

我使用的协议栈CanSM模块的版本为4.0.3,CanSM的本质其实是一个复杂的状态机,分成了几个大的状态,大的状态中又嵌套了几个小的状态,建议大家学习的时候一边对着规范,一边看静态代码,便于更好地理解。

参考文档:

AUTOSAR_SWS_CANStateManager.pdf(4.0.3)

正文:

1.状态机

主要分成了几个大的状态,CANSM_BSM_S_FULLCOM,CANSM_BS_S_PRE_FULLCOM,

CANSM_BSM_S_NOCOM,CANSM_BS_S_PRE_NOCOM,CANSM_BS_S_SILENTCOM等。

 这里我们主要讲下包含busoff检测及恢复的子状态机,这个主要是在CANSM_BSM_S_FULLCOM状态内,如下图所示:

 1.当从其他状态进入FullCOM后,首先进入S_BUS_OFF_CHECK状态,如发生busoff事件(T_BUS_OFF),则直接进入S_RESTART_CC状态,没有发生且(G_BUS_OFF_PASSIVE)条件通过则进入S_NO_BUS_OFF状态,进入后也会一直检测busoff事件。

2.在S_RESTART_CC状态一直做DO_SET_CC_MODE_STARTED操作,DO_SET_CC_MODE_STARTED指的是一直在重新启动Can驱动(调用CanIf_SetControllerMode(形参为CANIF_CS_STARTED)),如果一直启动不成功超过了最大尝试次数(CanSMModeRequestRepetitionMax)就会尝试返回到NOCOM状态。

3.每次请求重新启动Can驱动都会有一个超时时间,在超时时间(CanSMModeRequestRepetitionTime)内,会一直保持在S_RESTART_CC_WAIT状态,这里会判断是否收到了当前Can驱动模式已经发生了变化,变化会调用E_TX_OFF,设置当前PduMode为TX_OFFLINE(调用CanIf

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值