

完整步骤详解
步骤 1:用户释放最后一个全通信请求
-
接口 :
ComM_RequestComMode(User, ComMode := COMM_NO_COMMUNICATION) -
触发者:上层用户(例如某 SWC 或 BswM 动作)
-
含义 :用户显式声明不再需要全通信,将自己的请求模式改为
COMM_NO_COMMUNICATION。
步骤 2:确认综合通信模式为"无需通信"
-
接口 :
ComM_GetRequestedComMode(...) = E_OK -
含义 :ComM 内部查询,确认所有用户请求的综合结果已是
COMM_NO_COMMUNICATION,即没有模块再需要全通信。
步骤 3:强制锁定通道为"无通信"
-
接口 :
ComM_LimitChannelToNoComMode(Channel, Status := TRUE) -
含义 :设置通道限制状态,禁止后续任何模块再请求
COMM_FULL_COMMUNICATION,保证下电流程不可逆。
步骤 4:切换到 READY_SLEEP 子状态
-
动作 :
Switch to SUBS_COMM_READY_SLEEP state() -
解释 :ComM 内部状态从
COMM_FULL_COM_NETWORK_REQUESTED变为COMM_FULL_COM_READY_SLEEP,本节点停止主动维持网络。
步骤 5:释放网络管理(Nm)
-
接口 :
Nm_NetworkRelease(NetworkHandle) -
触发者:ComM → Nm
-
含义:通知 Nm 模块,本节点不再需要网络。Nm 随之停止发送周期性 NM 报文,并开始监测总线静默。
步骤 6:等待网络准备休眠指示
-
回调 :
ComM_Nm_PrepareBusSleepMode(Channel) -
来源:Nm → ComM
-
含义:Nm 通知 ComM,网络上所有节点都已释放网络(或超时无活动),总线可以进入"准备休眠"状态。
步骤 7:ComM 内部切换到 SILENT_COMMUNICATION
-
动作 :
Switch to COMM_SILENT_COMMUNICATION -
说明 :ComM 状态机从
COMM_FULL_COM_READY_SLEEP迁移到COMM_SILENT_COMMUNICATION。
步骤 8:请求底层硬件进入静默模式
-
接口 :
CanSM_RequestComMode(NetworkHandle, COMM_SILENT_COMMUNICATION) -
触发者:ComM → CanSM
-
说明:CanSM 将控制器配置为静默模式(禁止发送,允许接收)。
步骤 9:底层硬件确认静默模式切换完成
-
回调 :
ComM_BusSM_ModeIndication(NetworkHandle, COMM_SILENT_COMMUNICATION) -
来源:CanSM → ComM
-
关键性:这是硬件层面对静默模式切换完成的确认。ComM 只有收到此回调后,才会向其他模块广播静默状态。
步骤 10:广播静默模式给上层模块
-
接口(并发):
-
Rte_Ports_UserMode_P([n].Switch_currentMode(RTE_MODE_ComModes_SILENT_COMMUNICATION)) -
BswM_ComM_CurrentMode(Network, COM_M_SILENT_COMMUNICATION) -
Dcm_ComM_SilentComModeEntered(uint8)
-
-
触发者:ComM 收到步骤9的回调后
-
含义:告知 RTE、BswM、Dcm 当前通信已进入静默状态,应用层可停止周期报文发送等操作。
步骤 11:等待总线休眠指示
-
回调 :
ComM_Nm_BusSleepMode(Channel) -
来源:Nm → ComM
-
说明:在静默阶段,Nm 监测到总线持续无活动(达到阈值),即通知 ComM 总线已休眠。
步骤 12:ComM 内部切换到 NO_COMMUNICATION
-
动作 :
Switch to COMM_NO_COMMUNICATION -
说明:最终脱离静默,准备进入硬件关闭。
步骤 13:请求底层硬件进入无通信模式
-
接口 :
CanSM_RequestComMode(NetworkHandle, COMM_NO_COMMUNICATION) -
触发者:ComM → CanSM
-
说明:指示 CanSM 关闭 CAN 控制器、将收发器置为低功耗模式。
步骤 14:底层硬件确认无通信模式切换完成
-
回调 :
ComM_BusSM_ModeIndication(NetworkHandle, COMM_NO_COMMUNICATION) -
来源:CanSM → ComM
-
关键性 :这是硬件层面对彻底关断的确认。ComM 收到此回调,才认为底层真的进入了
COMM_NO_COMMUNICATION。
步骤 15:广播无通信模式给上层模块
-
接口(并发):
-
Rte_Ports_UserMode_P([n].Switch_currentMode(RTE_MODE_ComModes_NO_COMMUNICATION)) -
BswM_ComM_CurrentMode(Network, COM_M_NO_COMMUNICATION) -
Dcm_ComM_NoComModeEntered(uint8)
-
-
触发者:ComM 收到步骤14的回调后
-
含义:最终通知所有相关模块通信已完全关闭,ECU 可以安全执行后续休眠/下电序列。