上下电管理
2026/5/8 18:50:07 网站建设 项目流程

上电:

主动唤醒:

由bswm主动请求ComM_RequestComMode(User, COMM_FULL_COMMUNICATION)以及ComM_CommunicationAllowed从默认COMM_NO_COM_NO_PENDING_REQUEST ->COMM_NO_COM_REQUEST_PENDING ->COMM_FULL_COM_NETWORK_REQUESTED;

ComM_Prv_ChannelMainFunction函数中迁移状态机至

ComM_Prv_FullComNetworkReq_StateHandling请求网络Nm_NetworkRequest,ComM_Prv_RequestBusSm,CanSM_NetworkModeTrans控制controller和cantrcv;

CANSM扮演的角色就是在ComM发起请求后,ComM会轮询等待channelRamPtr_pst->ChannelState_e和当前请求一致,否则会卡在死循环

被动唤醒:

根据ECUM的配置有多种途径,仅介绍其中一种做法,则是通过ComM_EcuM_Wakeupindication通知;

CanTrcv_MainFunction

CanTrcv_MainFunction_SPI

EcuM_SetWakeupEvent

设置事件EcuM_Prv_dataValWkpEventsInd_u32

在EcuM_MainFunction周期轮询中根据事件判断是否为有效唤醒源,

EcuM_Prv_WakeupValidation中

BswM_EcuM_CurrentWakeup 通知BSWM ,在此调用ComM_CommunicationAllowed;

ComM_EcuM_WakeUpIndication 确认CAN Channel唤醒源为被动唤醒ComM_ChannelStruct[X].PassiveRequestState_u8

后续会在ComM_Prv_ChannelMainFunction函数中迁移状态机

COMM_NO_COM_NO_PENDING_REQUEST ->COMM_NO_COM_REQUEST_PENDING ->COMM_FULL_COM_NETWORK_REQUESTED -> COMM_FULL_COM_READY_SLEEP;

调用ComM_Prv_RequestBusSm,CanSM_NetworkModeTrans控制controller和cantrcv,Nm_PassiveStartUp, CanNm_PassiveStartUp至此开始网络;

下电:

参考这个状态机,CANNM先切状态,根据配置timer到期后切入prepare,Nm_PrepareBusSleepMode调用ComM_Nm_PrepareBusSleepMode,等待bus sleep以及CANSM释放后进入COMM_NO_COMMUNICATION,然后BSWM再根据 ComM状态是否进入

COMM_NO_COMMUNICATION选择进入shutdown,关闭pdugroup和NVM_WriteAll,然后状态机流转停止调度器以及1145和SBC下电;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询