目 录CONTENT

文章目录

AUTOSAR - CANSM - 学习一 :CANSM初认知

moke
2024-07-26 / 0 评论 / 0 点赞 / 58 阅读 / 0 字

1、概述

        CANSM(Controller Area Network State Manager)是AUTOSAR(Automotive Open System Architecture)标准中的一个模块,用于管理车辆控制系统中的CAN总线通信。它提供了一种标准化的方式来配置、启动、停止和监视CAN总线通信,并确保不同ECU(Electronic Control Unit)之间的通信协调和一致性。CANSM还提供了故障检测和恢复机制,以确保CAN总线通信的可靠性和稳定性。

        CanSM:Can通信总线(包含CAN控制器和CAN收发器)的状态管理,支持CAN在FULLCAN NOCOM SILIENTCOM等状态之间切换,并负责CAN busoff恢复管理。

        CanSM处理CAN网络的启动和停止,CanSM将CanSM状态映射到ComM的状态并将CanSM状态更改为ComM所请求的状态。

        它与通信硬件抽象层和系统服务层交互。

CanSM主要负责维护两个状态机

1、网络通讯模式状态机:负责维护网络通信模式(setmode)

2、总线离线恢复状态机:负责把总线从离线事件中恢复(busoff)

局限性:只能用于CAN,假设LIN是有LINSM的

        COMM:通信管理系统服务模块,通过与各通信总线的状态管理模块,如 CANSM LINSM和网络管理模块(NM)交互,为用户提供统一、抽象、简洁的通信模式管理服务。负责简化用户对网络管理和总线通信状态的控制

个人感觉:CANSM就是调用CANIf的接口来实现状态管理。

系统框图描述

 从上述框图也能感受到CANSM主要做ComMode的处理

2、CanSM主要做什么

2.1、CAN控制器状态管理

        当CanSM接收到ComM的CAN状态切换请求或者检测到busoff后,需要切换CAN控制器的状态,调用CanIf的CanIf_SetControllerMode()请求CAN控制器在 CANIF_CS_STOPPED,CANIF_CS_STARTED,CANIF_CS_SLEEP之间切换,CanIf模块再调用Can驱动接口Can_SetControllerMode()执行具体CAN控制器的状态切换(CAN_T_START, CAN_T_STOP, CAN_T_SLEEP, CAN_T_WAKEUP)。

        由于延时等原因,网络的通信模式可能会和ComM请求的不一致,这就需要CanSM通过以下方式来提供接口向ComM反馈当前的通信模式:

        CanSM提供API。ComM可以通过这个API调用来得到CAN网络当前的通信模式。

        CanSM使用ComM提供的回调函数来通知通信模式的改变。

2.2、CAN收发器状态管理

        当CanSM接收到ComM的CAN状态切换请求,如果对应的CAN通道包含transceiver,CanSM需要切换对应CAN收发器的状态,调用CanIf的CanIf_SetTrcvMode()请求CAN收发器在CANTRCV_TRCVMODE_NORMAL, CANTRCV_TRCVMODE_SLEEP, CANTRCV_TRCVMODE_STANDBY之间切换,CanIf模块再调用Can收发器驱动接口CanTrcv_SetOpMode()执行具体CAN收发器的状态切换。

2.3、Busoff检测

        当CAN控制器检测到Busoff(Busoff中断或者调用Can_MainFunction_BusOff()进行polling),调用CanIf_ControllerBusOff()通知busoff事件到CanIf,CanIf再调用CanSM_ControllerBusOff()通知busoff事件到CanSM。CanSM在检测到有Can通道busoff事件发生后,将尝试进行busoff恢复。

博主关闭了所有页面的评论