前言
在<
Note: 本文使用的AUTOSAR工具為Vector公司的Davinci Configurator,CAN收發(fā)器為NXP公司的TJA1043。
正文
1.CanNM狀體機(jī)分析
參考文檔:AUTOSAR架構(gòu)下關(guān)于CanNm的幾點(diǎn)思考
CanNM的Repeat Message State(RMS)狀態(tài)包括兩個(gè)子狀態(tài):NM Normal Transmit State和NM Immediate Transmit State。
從其他狀態(tài)進(jìn)入到NM Normal Transmit State子狀態(tài),Can NM報(bào)文沒有快發(fā)階段,直接進(jìn)入到Normal Cyclic報(bào)文發(fā)送階段。
從其他狀態(tài)進(jìn)入到NM Immediate Transmit State子狀態(tài),Can NM報(bào)文有快發(fā)階段(快發(fā)周期和次數(shù)可配置)。
從Bus Sleep Mode進(jìn)入到NMNormal Transmit State的條件(NM_02):
當(dāng)ECU處于Bus-Sleep階段時(shí),如果接收到有效的NM報(bào)文(ComM調(diào)用NM_PassiveStartUp),則會(huì)進(jìn)入到Normal Transmit State。當(dāng)進(jìn)入到該階段后,在T_REPEAT_MESSAGE 超時(shí)前,ECU將按照T_NM_MessageCycle周期來傳輸報(bào)文,同時(shí)T_MESSAGE_TIMEOUT也會(huì)啟動(dòng)。
從BusSleep Mode進(jìn)入到NM Immediate Transmit State的條件(NM_03):
當(dāng)ECU在Bus-Sleep階段,存在本地喚醒請(qǐng)求時(shí)(ComM調(diào)用NM_NetworkRequest),ECU應(yīng)當(dāng)主動(dòng)激活網(wǎng)絡(luò),并進(jìn)入Immediate Transmit State階段,同時(shí)將發(fā)送的NM報(bào)文中的Active Wake up bit置為1。在該狀態(tài)下,應(yīng)當(dāng)按照N_ImmediateNM_TIMES的次數(shù)發(fā)送報(bào)文周期為T_NM_ImmediateCycleTime的網(wǎng)絡(luò)管理報(bào)文。
從Pre-Bus Sleep Mode進(jìn)入到NMNormal Transmit State的條件(NM_15):
在Pre-Bus-Sleep模式下,如果存在遠(yuǎn)程喚醒請(qǐng)求(ComM調(diào)用NM_PassiveStartUp),則會(huì)進(jìn)入到RMS階段中的Normal Transimit State。同時(shí)啟動(dòng)T_REPEAT_MESSAGE。
從Pre-BusSleep Mode進(jìn)入到NM Immediate Transmit State的條件(NM_16):
在Pre-Bus-Sleep模式下,如果存在本地喚醒請(qǐng)求,即ComM調(diào)用函數(shù)接口CanNm_NetworkRequest來進(jìn)入到RMS中的Immediate Transmit階段,應(yīng)當(dāng)按照N_ImmediateNM_TIMES的次數(shù)發(fā)送報(bào)文周期為T_NM_ImmediateCycleTime的網(wǎng)絡(luò)管理報(bào)文。
小結(jié):
1)當(dāng)CanNM處于Bus-Sleep或者Pre-Bus-Sleep模式時(shí),如果有本地喚醒事件發(fā)生則ComM調(diào)用CanNm_NetworkRequest將CanNM狀態(tài)機(jī)切換到NM Immediate Transmit State,Can NM進(jìn)入快發(fā)狀態(tài)。
2)當(dāng)CanNM處于Bus-Sleep或者Pre-Bus-Sleep模式時(shí),如果有網(wǎng)絡(luò)(遠(yuǎn)程)喚醒事件發(fā)生則ComM調(diào)用NM_PassiveStartUp將CanNM狀態(tài)機(jī)切換到Normal Transimit State,Can NM報(bào)文不會(huì)有快發(fā)階段,Can NM報(bào)文周期發(fā)送。
問題:本地喚醒事件和網(wǎng)絡(luò)喚醒事件是怎么觸發(fā)ComM主動(dòng)和被動(dòng)喚醒網(wǎng)絡(luò)的?
2.ComM狀態(tài)機(jī)分析
ECU上電或喚醒后,如果檢測(cè)到為本地喚醒或其他條件需要ECU進(jìn)行主動(dòng)喚醒時(shí),用戶調(diào)用ComM接口ComM_RequestComMode請(qǐng)求ComM COMM_FULL_COMMUNICATION使能通信,ComM在接收到請(qǐng)求后,調(diào)用 CanSM_RequestComMode()請(qǐng)求CanSM將相應(yīng)的Can通道狀態(tài)切換為FULLCOM,CanSM再通過CanIf切換控制器和收發(fā)器狀態(tài),調(diào)用如果該通道的NMVariant為FULL,調(diào)用NM接口 Nm_NetworkRequest(),NM再調(diào)用CanNm接口 CanNm_NetworkRequest請(qǐng)求進(jìn)入主動(dòng)喚醒。
ECU上電或喚醒后,如果檢測(cè)到為遠(yuǎn)程喚醒或其他添加需要ECU進(jìn)行passive喚醒時(shí),調(diào)用 ComM_EcuM_WakeUpIndication(如果ECUM中的wakeup source綁定了ComM通道,則在調(diào)用EcuM_CheckWakeup時(shí)自動(dòng)調(diào)用),如果通道的NMVariant為FULL或PASSIVE,ComM調(diào)用 Nm_PassiveStartUp請(qǐng)求NM進(jìn)行passive喚醒,并調(diào)用 CanSM_RequestComMode()請(qǐng)求CanSM將相應(yīng)的Can通道狀態(tài)切換為FULLCOM。
問題:本地喚醒事件和網(wǎng)絡(luò)喚醒事件是怎么觸發(fā)ComM主動(dòng)和被動(dòng)喚醒網(wǎng)絡(luò)的?
答:本地喚醒事件由User檢測(cè)后調(diào)用ComM_RequestComMode上報(bào)給ComM;網(wǎng)絡(luò)喚醒事件由EcuM輪詢到喚醒事件后調(diào)用ComM_EcuM_WakeUjpIndication上報(bào)給ComM。ComM根據(jù)事件類型調(diào)用Nm_NetworkRequest主動(dòng)喚醒網(wǎng)絡(luò),調(diào)用Nm_PassiveStartUp被動(dòng)喚醒網(wǎng)絡(luò)。
3.解決方案
通過上面的分析我們可以得到解決本文提出的問題的答案:讓診斷報(bào)文喚醒ECU后走主動(dòng)喚醒網(wǎng)絡(luò)的路徑,就能實(shí)現(xiàn)診斷報(bào)文喚醒網(wǎng)絡(luò)后有NM報(bào)文快發(fā)過程的需求。
具體的做法:就是在<
4.總結(jié)
ComM | NM | CanNM | NM報(bào)文狀態(tài) | |
User調(diào)用ComM_RequestComMode | 主動(dòng)喚醒網(wǎng)絡(luò):調(diào)用NM_NetworkRequest | 調(diào)用CanNM_NetworkRequest | 從Sleep狀態(tài)切換到NM Immediate Transmit State子狀態(tài) | 快發(fā)NM報(bào)文結(jié)束后周期發(fā)送NM報(bào)文 |
EcuM調(diào)用ComM_EcuM_WakeUjpIndication |
被動(dòng)喚醒網(wǎng)絡(luò):調(diào)用 NM_PassiveStartUp |
調(diào)用 CanNM_PassiveStartUp |
從Sleep狀態(tài)切換到NM Normal Transmit State | 無快發(fā)NM報(bào)文過程,直接周期發(fā)送NM報(bào)文 |
審核編輯:湯梓紅
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3547瀏覽量
107004 -
CAN
+關(guān)注
關(guān)注
57文章
2825瀏覽量
466109 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7698瀏覽量
90068 -
ecu
+關(guān)注
關(guān)注
14文章
902瀏覽量
55282 -
報(bào)文
+關(guān)注
關(guān)注
0文章
38瀏覽量
4126
原文標(biāo)題:ECU系統(tǒng)休眠后通過診斷報(bào)文喚醒ECU且喚醒網(wǎng)絡(luò)后快發(fā)NM報(bào)文
文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
CAN總線指定幀喚醒的硬件實(shí)現(xiàn)方式
電動(dòng)汽車的ECU進(jìn)入休眠后,目前有3種喚醒模式,CAN總線和AC電壓的喚醒設(shè)計(jì)原理是什么?
CANoe:網(wǎng)絡(luò)和ECU開發(fā)、測(cè)試和分析的專業(yè)工具
汽車ECU的低功耗高性能實(shí)現(xiàn)
CH582M freeRTOS如何實(shí)現(xiàn)休眠? 休眠后如何喚醒?
TJA1145ATK配置完成喚醒ID后,發(fā)現(xiàn)任意CAN FD報(bào)文將足夠其喚醒是怎么回事?
EcuM是如何知道有喚醒事件呢?

侃侃主動(dòng)/被動(dòng)喚醒源與網(wǎng)絡(luò)主動(dòng)/被動(dòng)喚醒這幾個(gè)名詞

ECU從休眠到網(wǎng)絡(luò)喚醒時(shí)間怎么測(cè)?

網(wǎng)絡(luò)關(guān)閉但ECU沒有休眠前如何進(jìn)行網(wǎng)絡(luò)喚醒呢?
ECU系統(tǒng)休眠后通過診斷報(bào)文喚醒ECU且喚醒網(wǎng)絡(luò)
理一理AUTOSAR架構(gòu)下的喚醒源事件

影響報(bào)文超時(shí)上報(bào)的機(jī)制有哪些

評(píng)論