前言
最近在做CAN網(wǎng)絡(luò)管理的工作,發(fā)現(xiàn)網(wǎng)絡(luò)休眠(關(guān)閉)后在ECU系統(tǒng)沒有休眠/下電前如果又收到了NM報文,ECU的網(wǎng)絡(luò)沒有被重新喚醒(開啟),ECU系統(tǒng)也沒有結(jié)束下電(Shutdown)流程,而是直接下電后再被喚醒,而不是我們期望的在PreShutdown到Shutdown階段收到NM報文重回到Startup階段。
正文
1.網(wǎng)絡(luò)休眠時的相關(guān)系統(tǒng)狀態(tài)
在本地喚醒源(Local wake up source,一般是IGN等硬線信號)Disable掉后,User會調(diào)用ComM_RequestComMode請求ComM進入到NoCom狀態(tài),如果這個時候沒有接收到NM報文,且沒有收到診斷請求ComM會切換到NoCom狀態(tài),這個時候ComM會調(diào)用CanSM_RequestComMode(network:=
我們具體來看CanSM對Can Transceiver的操作,以及此時Transceiver的狀態(tài)。
CanSM-->CanIf-->CanTrcv最終會拉低TJA1043收發(fā)器的STB_N腳,這個時候TJA1043收發(fā)器的INH腳是處于高電平狀態(tài)。
TJA1043收發(fā)器處于Standby mode時的報文收發(fā)功能是關(guān)閉的,也就是收發(fā)器在Standby mode下是不能收發(fā)報文的。
所以這個時候,ComM處于NoCom狀態(tài),NM處于Bus Sleep狀態(tài),就算這個時候Can-Bus上有NM報文過來,Can Transceiver根本就收不到,也就是不可能讓ECU系統(tǒng)狀態(tài)機從Preshutdown跳轉(zhuǎn)到Startup。
那能讓Can Transceiver別不要進入到Standby Mode么?-- 不能,因為ComM進入NoCom后CanSM-->CanIf-->CanTrcv設(shè)置Transceiver進入到Standby mode這個過程是AUTOSAR靜態(tài)代碼自動實現(xiàn)的,我們不可能去改靜態(tài)代碼。
所以我們該怎么做才能實現(xiàn)網(wǎng)絡(luò)關(guān)閉后ECU沒有休眠前網(wǎng)絡(luò)喚醒?
2.網(wǎng)絡(luò)休眠后重新喚醒網(wǎng)絡(luò)需要做的準備工作
要實現(xiàn)網(wǎng)絡(luò)關(guān)閉后ECU沒有休眠前網(wǎng)絡(luò)喚醒需要以下必要操作:
1)配置CanIf和EcuM的Wake up validation功能。
2)User判斷Can Transceiver進入到Standby模式后,通過CanIf_SetTransceiverMode --> CanTrcv_SetTransceiverMode設(shè)置收發(fā)器到Sleep模式。
軟件設(shè)置Can收發(fā)器到Sleep模式后通過硬件設(shè)計保證INH腳在Sleep模式是以低電平狀態(tài)輸入到MCU。
3)Can收發(fā)器進入Sleep模式后如果收到CAN報文就會使得INH腳切換到High電平狀態(tài),User通過判斷INH腳從Low電平狀態(tài)跳變?yōu)镠igh狀態(tài)來得知Can-Bus收到了報文,這個時候通過調(diào)用CanIf_SetTransceiverMode --> CanTrcv_SetTransceiverMode設(shè)置Can Transceiver到Normal狀態(tài),這樣Can Transceiver就能接收到報文了,報文就能到達CanIf模塊。
4)允許網(wǎng)絡(luò)通信CommunicationAllowed=TRUEComM,這樣通過ComM_EcuM_WakeUpIndication(ChX)這個條件就能使得ComM進入到FullCom狀態(tài),如果收到的是NM報文,就能維持住網(wǎng)絡(luò)。
3.總結(jié)
想要實現(xiàn)網(wǎng)絡(luò)關(guān)閉但ECU沒有休眠前網(wǎng)絡(luò)喚醒需要通過檢測TJA1043收發(fā)器的INH腳的電平狀態(tài)來判斷接收到Can報文,然后通過EcuM和CanIf的喚醒源校驗(NM報文校驗)功能來觸發(fā)ComM模塊切換到FullCom狀態(tài),最后ComM進入FullCom后調(diào)用CanSM接口喚醒網(wǎng)絡(luò),同時NM狀態(tài)進入到Network Mode的Repeat Message State,整個網(wǎng)路開啟。
審核編輯:劉清
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3671瀏覽量
107935 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
379瀏覽量
22655 -
ecu
+關(guān)注
關(guān)注
14文章
934瀏覽量
55812 -
CAN網(wǎng)絡(luò)
+關(guān)注
關(guān)注
1文章
45瀏覽量
17442
原文標題:網(wǎng)絡(luò)關(guān)閉但ECU沒有休眠前如何網(wǎng)絡(luò)喚醒
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
電動汽車的ECU進入休眠后,目前有3種喚醒模式,CAN總線和AC電壓的喚醒設(shè)計原理是什么?
cc2530休眠前和喚醒后各個模塊寄存器的值有變化嗎?
Zigbee 怎么實現(xiàn)沒有網(wǎng)絡(luò)就進入休眠的功能
如果設(shè)備加入到網(wǎng)絡(luò)后,在休眠后怎么檢測到協(xié)調(diào)器掉網(wǎng)?
如何實現(xiàn)局部網(wǎng)絡(luò)的休眠喚醒機制?
無os的LwIP在TCP server歷程中如何進行網(wǎng)絡(luò)數(shù)據(jù)發(fā)送呢
ECU是怎么啟動或關(guān)閉的呢?ECU啟動方式有沒有一般規(guī)律呢
CH582M freeRTOS如何實現(xiàn)休眠? 休眠后如何喚醒?
MSP430休眠喚醒裝置設(shè)計詳析
ECU從休眠到網(wǎng)絡(luò)喚醒時間怎么測?

ECU系統(tǒng)休眠后通過診斷報文喚醒ECU且喚醒網(wǎng)絡(luò)
理一理AUTOSAR架構(gòu)下的喚醒源事件

以太網(wǎng)休眠喚醒利器—OPEN Alliance TC10

評論