comm网络关闭流程

完整步骤详解

步骤 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 可以安全执行后续休眠/下电序列。

相关推荐
内容为空3 天前
AUTOSAR COM 发送流程笔记:Com_SendSignal 与 Com_MainFunctionTx
autosar
嵌软小白呗6 天前
Autosar-SecOC功能详解(一)
e2e·can·autosar·crc·secoc
内容为空10 天前
TC397 CAN 模块硬件资源与配置详解笔记
autosar
阿歪i12 天前
EB 配置MCAL (1)
s32k144·autosar·mcal
内容为空12 天前
AUTOSAR COM 模块:ComIPduGroup 与 ComSignalGroup 区别笔记
autosar
MESMarketing18 天前
互动分享 | 软件工具的安全合规实践
功能测试·测试工具·matlab·ci/cd·autosar
豆包公子24 天前
程序流监控:AUTOSAR CP 功能安全在裸机 MCU 上的实现(理论篇)
运维·单片机·嵌入式硬件·安全·车载系统·autosar
咸鱼嵌入式1 个月前
【AutoSAR】详解CANIF模块
单片机·mcu·车载系统·autosar
正午游巳1 个月前
第二十六节:枚举和数组
汽车·autosar·汽车电子·车载嵌入式