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

相关推荐
叶修_A5 天前
AP-03 SOME/IP协议实战 - AUTOSAR自适应平台通信中间件深度解析
autosar·汽车电子·some/ip·ap·通信中间件
赞哥哥s7 天前
Autosar网络管理笔记-被动唤醒和主动请求时Nm报文发送的差异
autosar·网络管理·nm
硅农深芯8 天前
解读AUTOSAR:定义现代汽车电子的标准化架构
架构·汽车·autosar
叶修_A13 天前
【IF-SAFE-05】MTU内存测试 - ASIL-B安全机制
autosar
飞斯柯罗16 天前
[飞斯柯罗] 为满足网络安全要求,是否必须使用AUTOSAR?
autosar·crypto·mcal·软件复用·汽车网络安全·iso21434·控制器开发
叶修_A17 天前
【CP-11】复杂驱动设计 - AUTOSAR CP驱动架构与实现
架构·嵌入式·autosar·cp·驱动设计
赞哥哥s20 天前
诊断请求1101到MCU复位的完整流程
autosar·dcm·1101
无畏jh22 天前
CCFC3008PCSN与Vector适配经验分享
autosar·国产化·汽车嵌入式·ccfc3008pcsn
车软派开发学长1 个月前
零基础学习车软嵌入式AUTOSAR,以一帧CAN报文实战讲解AUTOSAR的学习
网络·stm32·车载系统·autosar·嵌入式实时数据库
龙智DevSecOps解决方案1 个月前
TESSY AUTOSAR插件详解:从ARXML模型到自动化测试的完整工作流
autosar·tessy