前言
最近遇到一個(gè)特殊需求:在ECU系統(tǒng)休眠后需要通過網(wǎng)絡(luò)管理報(bào)文和診斷報(bào)文喚醒網(wǎng)絡(luò),但是應(yīng)用報(bào)文不能喚醒網(wǎng)絡(luò)。通常情況下,在ECU系統(tǒng)休眠后,AUTOSAR架構(gòu)中只能配置通過網(wǎng)絡(luò)管理報(bào)文喚醒網(wǎng)絡(luò)或者所有報(bào)文都能喚醒網(wǎng)絡(luò),沒有單獨(dú)的診斷報(bào)文喚醒網(wǎng)絡(luò)的配置。那在AUTOSAR架構(gòu)下如何來實(shí)現(xiàn)這個(gè)功能了?
本文先詳細(xì)介紹這個(gè)需求在AUTOSAR架構(gòu)下遇到的問題,然后再給出一個(gè)具體的解決辦法。
Note: 使用Vector的工具,以及TJA1043的CAN收發(fā)器。
正文
1.面臨的問題
1.1 TJA1043的INH腳喚醒事件
ECU系統(tǒng)休眠后TJA1043的INH腳處于floating高阻態(tài),系統(tǒng)休眠后通過硬件外部電路下拉到低電平狀態(tài)/Low-level,ECU系統(tǒng)休眠前把TJA1043的INH腳配置為喚醒腳,系統(tǒng)休眠后如果收到任意的CAN報(bào)文,TJA1043的INH腳會(huì)被拉高,產(chǎn)生CAN收發(fā)器的硬件喚醒事件(Low-Level to High-Level)。如果ECU系統(tǒng)是斷電系統(tǒng),那么INH腳應(yīng)該接在SBC上,因?yàn)镾BC是常電狀態(tài),檢測(cè)到INH的喚醒事件后就會(huì)給ECU-MCU供電,MCU冷啟動(dòng)。如果是ECU系統(tǒng)是常電系統(tǒng),INH腳應(yīng)該接到MCU的一個(gè)中斷喚醒腳上,檢測(cè)到INH的喚醒事件后,中斷喚醒MCU,MCU中的軟件可以選擇繼續(xù)跑,也可以通過軟件Reset后重新熱啟動(dòng)。
參考文章:關(guān)于CanTrcv模塊的幾點(diǎn)思考
總之,無論是斷電系統(tǒng)還是常電系統(tǒng),在ECU系統(tǒng)休眠后,任意的CAN報(bào)文都能喚醒ECU。
1.2 EcuM配置網(wǎng)絡(luò)喚醒
實(shí)現(xiàn)網(wǎng)絡(luò)喚醒,需要在EcuM模塊中配置喚醒源,同時(shí)配置喚醒源檢測(cè)。
開啟EcuM的網(wǎng)絡(luò)喚醒源校驗(yàn)Validation后需要User實(shí)現(xiàn)三個(gè)Callout函數(shù)函數(shù):
1) EcuM_StartWakeupSources(EcuM_WakeupSourceType);
2) EcuM_StopWakeupSources(EcuM_WakeupSourceType);
3) EcuM_CheckValidation(EcuM_WakeupSourceType);
參考文章:AUTOSAR架構(gòu)下關(guān)于CanNm的幾點(diǎn)思考
1.3 CanIf配置喚醒報(bào)文過濾
CanIf中可以配置Wakeup Check Valition,有兩種配置可選:
1)所有報(bào)文可以通過校驗(yàn)
2)只有NM報(bào)文可以通過校驗(yàn)
1.4ComM網(wǎng)絡(luò)喚醒
EcuM調(diào)用CanIf接口校驗(yàn)網(wǎng)絡(luò)喚醒源成功后,EcuM就會(huì)調(diào)用ComM_EcuM_WakeUpIndication請(qǐng)求通信,ComM在CommunicationAlllowed后就會(huì)調(diào)轉(zhuǎn)到Full Com狀態(tài)開啟網(wǎng)絡(luò)。
參考文章:AUTOSAR網(wǎng)絡(luò)通信問題分析
1.5診斷報(bào)文喚醒面臨的問題
我們的需求是:在ECU系統(tǒng)休眠后需要通過網(wǎng)絡(luò)管理報(bào)文和診斷報(bào)文喚醒網(wǎng)絡(luò),但是應(yīng)用報(bào)文不能喚醒網(wǎng)絡(luò)。
但是從上文中我們可以得知:
1)如果CanIf配置為所有報(bào)文可以校驗(yàn)通過,那么應(yīng)用報(bào)文也會(huì)通過校驗(yàn),從而喚醒網(wǎng)絡(luò)。
2)如果CanIf配置為只有NM報(bào)文可以通過校驗(yàn),那么診斷報(bào)文也就不能通過校驗(yàn), 從而診斷報(bào)文不能喚醒網(wǎng)絡(luò)。
3)只要ECU被喚醒后,因?yàn)槌绦蛞呀?jīng)跑起來了,理論上肯定可以讓診斷報(bào)文來喚醒網(wǎng)絡(luò)的,但是在AUTOSAR架構(gòu)下沒有提供這個(gè)配置,代碼框架已經(jīng)被限制,要實(shí)現(xiàn)這個(gè)功能就不知道在哪里實(shí)現(xiàn)。
也就是說,在AUTOSAR架構(gòu)下按通常配置是無法實(shí)現(xiàn)ECU系統(tǒng)休眠后需要通過網(wǎng)絡(luò)管理報(bào)文和診斷報(bào)文喚醒網(wǎng)絡(luò),但是應(yīng)用報(bào)文不能喚醒網(wǎng)絡(luò)的。
2.解決的辦法
如果能想辦法在EcuM調(diào)用CanIf_CheckValication的時(shí)候能讓診斷報(bào)文通過校驗(yàn)(NM報(bào)文也通過校驗(yàn),應(yīng)用報(bào)文不能通過校驗(yàn))就能解決這個(gè)問題。
審核編輯 :李倩
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3454瀏覽量
106243 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
363瀏覽量
21779 -
ecu
+關(guān)注
關(guān)注
14文章
892瀏覽量
54745
原文標(biāo)題:ECU系統(tǒng)休眠后通過診斷報(bào)文喚醒ECU且喚醒網(wǎng)絡(luò)
文章出處:【微信號(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)休眠? 休眠后如何喚醒?
如何通過外部事件快速喚醒MCU
EcuM是如何知道有喚醒事件呢?
![EcuM是如何知道有<b class='flag-5'>喚醒</b>事件呢?](https://file.elecfans.com/web2/M00/63/AB/poYBAGMES7WAJoCFAADeSJyKHwM989.png)
ECU從休眠到網(wǎng)絡(luò)喚醒時(shí)間怎么測(cè)?
![<b class='flag-5'>ECU</b>從<b class='flag-5'>休眠</b>到<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>喚醒</b>時(shí)間怎么測(cè)?](https://file.elecfans.com/web2/M00/66/57/pYYBAGMMhleAfjoEAAB87OmbMfs649.png)
網(wǎng)絡(luò)關(guān)閉但ECU沒有休眠前如何進(jìn)行網(wǎng)絡(luò)喚醒呢?
理一理AUTOSAR架構(gòu)下的喚醒源事件
![理一理AUTOSAR架構(gòu)下的<b class='flag-5'>喚醒</b>源事件](https://file1.elecfans.com/web2/M00/8C/B4/wKgZomSwoSaAFHjqAABD7BU5Tzk660.png)
簡(jiǎn)化ECU中具有選擇性喚醒功能的隔離式CAN設(shè)計(jì)
![簡(jiǎn)化<b class='flag-5'>ECU</b>中具有選擇性<b class='flag-5'>喚醒</b>功能的隔離式CAN設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論