0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ECU系統(tǒng)休眠后通過診斷報文喚醒ECU且喚醒網(wǎng)絡(luò)后快發(fā)NM報文

832065824 ? 來源:汽車電子嵌入式 ? 2023-05-09 09:36 ? 次閱讀

前言

在<>一文中我們分析并實現(xiàn)了通過診斷報文喚醒ECU且喚醒網(wǎng)絡(luò)的需求,但是經(jīng)過測試發(fā)現(xiàn)網(wǎng)絡(luò)喚醒后NM報文沒有快發(fā)過程,而是直接跳過快發(fā)過程進入NM報文的周期發(fā)送階段。但是,新的的需求是讓診斷報文喚醒網(wǎng)絡(luò)后有快發(fā)過程,又該怎么實現(xiàn)了?本文就先分析CanNM報文的主動喚醒和被動喚醒及其相關(guān)的NM報文發(fā)送機制,然后給出一個診斷報文喚醒網(wǎng)絡(luò)后進入快發(fā)階段的解決方案。

Note: 本文使用的AUTOSAR工具為Vector公司的Davinci Configurator,CAN收發(fā)器NXP公司的TJA1043。

正文

1.CanNM狀體機分析

參考文檔:AUTOSAR架構(gòu)下關(guān)于CanNm的幾點思考

48cfacae-ee04-11ed-90ce-dac502259ad0.png

CanNM的Repeat Message State(RMS)狀態(tài)包括兩個子狀態(tài):NM Normal Transmit State和NM Immediate Transmit State。

從其他狀態(tài)進入到NM Normal Transmit State子狀態(tài),Can NM報文沒有快發(fā)階段,直接進入到Normal Cyclic報文發(fā)送階段。

從其他狀態(tài)進入到NM Immediate Transmit State子狀態(tài),Can NM報文有快發(fā)階段(快發(fā)周期和次數(shù)可配置)。

從Bus Sleep Mode進入到NMNormal Transmit State的條件(NM_02):

當(dāng)ECU處于Bus-Sleep階段時,如果接收到有效的NM報文(ComM調(diào)用NM_PassiveStartUp),則會進入到Normal Transmit State。當(dāng)進入到該階段后,在T_REPEAT_MESSAGE 超時前,ECU將按照T_NM_MessageCycle周期來傳輸報文,同時T_MESSAGE_TIMEOUT也會啟動。

從BusSleep Mode進入到NM Immediate Transmit State的條件(NM_03):

當(dāng)ECU在Bus-Sleep階段,存在本地喚醒請求時(ComM調(diào)用NM_NetworkRequest),ECU應(yīng)當(dāng)主動激活網(wǎng)絡(luò),并進入Immediate Transmit State階段,同時將發(fā)送的NM報文中的Active Wake up bit置為1。在該狀態(tài)下,應(yīng)當(dāng)按照N_ImmediateNM_TIMES的次數(shù)發(fā)送報文周期為T_NM_ImmediateCycleTime的網(wǎng)絡(luò)管理報文。

從Pre-Bus Sleep Mode進入到NMNormal Transmit State的條件(NM_15):

在Pre-Bus-Sleep模式下,如果存在遠程喚醒請求(ComM調(diào)用NM_PassiveStartUp),則會進入到RMS階段中的Normal Transimit State。同時啟動T_REPEAT_MESSAGE。

從Pre-BusSleep Mode進入到NM Immediate Transmit State的條件(NM_16):

在Pre-Bus-Sleep模式下,如果存在本地喚醒請求,即ComM調(diào)用函數(shù)接口CanNm_NetworkRequest來進入到RMS中的Immediate Transmit階段,應(yīng)當(dāng)按照N_ImmediateNM_TIMES的次數(shù)發(fā)送報文周期為T_NM_ImmediateCycleTime的網(wǎng)絡(luò)管理報文。

小結(jié):

1)當(dāng)CanNM處于Bus-Sleep或者Pre-Bus-Sleep模式時,如果有本地喚醒事件發(fā)生則ComM調(diào)用CanNm_NetworkRequest將CanNM狀態(tài)機切換到NM Immediate Transmit State,Can NM進入快發(fā)狀態(tài)。

2)當(dāng)CanNM處于Bus-Sleep或者Pre-Bus-Sleep模式時,如果有網(wǎng)絡(luò)(遠程)喚醒事件發(fā)生則ComM調(diào)用NM_PassiveStartUp將CanNM狀態(tài)機切換到Normal Transimit State,Can NM報文不會有快發(fā)階段,Can NM報文周期發(fā)送。

問題:本地喚醒事件和網(wǎng)絡(luò)喚醒事件是怎么觸發(fā)ComM主動和被動喚醒網(wǎng)絡(luò)的?

2.ComM狀態(tài)機分析

48ea9f1e-ee04-11ed-90ce-dac502259ad0.png

ECU上電或喚醒后,如果檢測到為本地喚醒或其他條件需要ECU進行主動喚醒時,用戶調(diào)用ComM接口ComM_RequestComMode請求ComM COMM_FULL_COMMUNICATION使能通信,ComM在接收到請求后,調(diào)用 CanSM_RequestComMode()請求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請求進入主動喚醒。

ECU上電或喚醒后,如果檢測到為遠程喚醒或其他添加需要ECU進行passive喚醒時,調(diào)用 ComM_EcuM_WakeUpIndication(如果ECUM中的wakeup source綁定了ComM通道,則在調(diào)用EcuM_CheckWakeup時自動調(diào)用),如果通道的NMVariant為FULL或PASSIVE,ComM調(diào)用 Nm_PassiveStartUp請求NM進行passive喚醒,并調(diào)用 CanSM_RequestComMode()請求CanSM將相應(yīng)的Can通道狀態(tài)切換為FULLCOM。

問題:本地喚醒事件和網(wǎng)絡(luò)喚醒事件是怎么觸發(fā)ComM主動和被動喚醒網(wǎng)絡(luò)的?

答:本地喚醒事件由User檢測后調(diào)用ComM_RequestComMode上報給ComM;網(wǎng)絡(luò)喚醒事件由EcuM輪詢到喚醒事件后調(diào)用ComM_EcuM_WakeUjpIndication上報給ComM。ComM根據(jù)事件類型調(diào)用Nm_NetworkRequest主動喚醒網(wǎng)絡(luò),調(diào)用Nm_PassiveStartUp被動喚醒網(wǎng)絡(luò)。

3.解決方案

通過上面的分析我們可以得到解決本文提出的問題的答案:讓診斷報文喚醒ECU后走主動喚醒網(wǎng)絡(luò)的路徑,就能實現(xiàn)診斷報文喚醒網(wǎng)絡(luò)后有NM報文快發(fā)過程的需求。

具體的做法:就是在<>一文中實現(xiàn)的Callout函數(shù)中直接調(diào)用ComM_RequestComMode主動請求喚醒網(wǎng)絡(luò)。

4.總結(jié)

ComM NM CanNM NM報文狀態(tài)
User調(diào)用ComM_RequestComMode 主動喚醒網(wǎng)絡(luò):調(diào)用NM_NetworkRequest 調(diào)用CanNM_NetworkRequest 從Sleep狀態(tài)切換到NM Immediate Transmit State子狀態(tài) 快發(fā)NM報文結(jié)束后周期發(fā)送NM報文
EcuM調(diào)用ComM_EcuM_WakeUjpIndication 被動喚醒網(wǎng)絡(luò):調(diào)用
NM_PassiveStartUp
調(diào)用
CanNM_PassiveStartUp
從Sleep狀態(tài)切換到NM Normal Transmit State 無快發(fā)NM報文過程,直接周期發(fā)送NM報文

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 收發(fā)器
    +關(guān)注

    關(guān)注

    10

    文章

    3370

    瀏覽量

    105791
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2694

    瀏覽量

    463155
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7485

    瀏覽量

    88541
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    876

    瀏覽量

    54360
  • 報文
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4012

原文標(biāo)題:ECU系統(tǒng)休眠后通過診斷報文喚醒ECU且喚醒網(wǎng)絡(luò)后快發(fā)NM報文

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    CAN總線指定幀喚醒的硬件實現(xiàn)方式

    CAN的指定幀喚醒是一種網(wǎng)絡(luò)管理的場景,對于我這個偏硬件的工程師來說,網(wǎng)絡(luò)管理也就是通過CAN來喚醒不同的
    發(fā)表于 03-07 09:17 ?8270次閱讀

    干貨分享 | TSMaster—LIN 喚醒休眠機制

    在汽車總線中常見的喚醒方式有硬線喚醒、網(wǎng)絡(luò)喚醒和特定信號喚醒,而LIN總線則是通過
    的頭像 發(fā)表于 09-25 08:03 ?1244次閱讀
    干貨分享 | TSMaster—LIN <b class='flag-5'>喚醒</b>與<b class='flag-5'>休眠</b>機制

    電動汽車的ECU進入休眠,目前有3種喚醒模式,CAN總線和AC電壓的喚醒設(shè)計原理是什么?

    電動汽車的ECU進入休眠,目前有3種喚醒模式,我想知道CAN總線和AC電壓的喚醒設(shè)計原理是什么?
    發(fā)表于 02-02 06:19

    CANoe:網(wǎng)絡(luò)ECU開發(fā)、測試和分析的專業(yè)工具

    規(guī)范/集成/回歸測試 仿真ECU診斷功能 針對好的/壞的測試用例,訪問所有級別診斷通信(CAN報文,傳輸協(xié)議和診斷服務(wù))的能力仿真和殘余總
    發(fā)表于 10-09 17:42

    汽車ECU的低功耗高性能實現(xiàn)

    在需要時能及時喚醒。比如當(dāng)車速超過30Km/H時則完全可以關(guān)閉倒車?yán)走_。其實CAN收發(fā)器可以工作在深度睡眠模式(參見ISO11898-6),只有當(dāng)接收到一個特定的CAN報文收發(fā)器才會喚醒
    發(fā)表于 05-10 04:23

    CH582M freeRTOS如何實現(xiàn)休眠? 休眠如何喚醒?

    有以下以后望解答:如何實現(xiàn)休眠? 休眠如何喚醒?目前嘗試用裸機例程中的休眠函數(shù),僅LowPower_Shutdown(0); 可以正常睡眠
    發(fā)表于 08-01 06:19

    TJA1145ATK配置完成喚醒ID,發(fā)現(xiàn)任意CAN FD報文將足夠其喚醒是怎么回事?

    TJA1145ATK/FD,配置好喚醒ID,發(fā)現(xiàn)去除了配置的喚醒ID可以將設(shè)備喚醒,任意的CAN FD報文也能足夠?qū)⑵?/div>
    發(fā)表于 03-21 06:47

    EcuM是如何知道有喚醒事件呢?

    ?EcuM主函數(shù)會輪詢檢測底層上報的喚醒事件,如果想進一步的分析喚醒事件是不是有效的總線喚醒源(網(wǎng)絡(luò)管理報文),需要
    的頭像 發(fā)表于 08-23 11:39 ?4924次閱讀
    EcuM是如何知道有<b class='flag-5'>喚醒</b>事件呢?

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

    如果想喚醒Can2 Bus的節(jié)點C網(wǎng)絡(luò),需要節(jié)點D(與節(jié)點C同一個網(wǎng)段)發(fā)送網(wǎng)絡(luò)管理報文喚醒節(jié)點C。
    的頭像 發(fā)表于 08-26 17:23 ?4300次閱讀
    侃侃主動/被動<b class='flag-5'>喚醒</b>源與<b class='flag-5'>網(wǎng)絡(luò)</b>主動/被動<b class='flag-5'>喚醒</b>這幾個名詞

    ECU休眠網(wǎng)絡(luò)喚醒時間怎么測?

    t0時刻,使用仿真設(shè)備(CANoe/PCan/ZLG等)發(fā)送一幀或者連續(xù)多幀有效的網(wǎng)絡(luò)管理報文;
    的頭像 發(fā)表于 08-29 17:28 ?4388次閱讀
    <b class='flag-5'>ECU</b>從<b class='flag-5'>休眠</b>到<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>喚醒</b>時間怎么測?

    網(wǎng)絡(luò)關(guān)閉但ECU沒有休眠前如何進行網(wǎng)絡(luò)喚醒呢?

    最近在做CAN網(wǎng)絡(luò)管理的工作,發(fā)現(xiàn)網(wǎng)絡(luò)休眠(關(guān)閉)ECU系統(tǒng)沒有
    的頭像 發(fā)表于 03-29 09:06 ?2845次閱讀

    ECU系統(tǒng)休眠通過診斷報文喚醒ECU喚醒網(wǎng)絡(luò)

    ECU系統(tǒng)休眠TJA1043的INH腳處于floating高阻態(tài),系統(tǒng)休眠
    的頭像 發(fā)表于 04-04 09:40 ?8040次閱讀

    理一理AUTOSAR架構(gòu)下的喚醒源事件

    最近的項目負(fù)責(zé)網(wǎng)絡(luò)管理部分,網(wǎng)路喚醒ECU系統(tǒng)休眠關(guān)系緊密,對系統(tǒng)
    的頭像 發(fā)表于 07-14 09:11 ?3463次閱讀
    理一理AUTOSAR架構(gòu)下的<b class='flag-5'>喚醒</b>源事件

    影響報文超時上報的機制有哪些

    前言 最近遇到一個CAN報文超時Notification不上報導(dǎo)致ECU休眠的偶發(fā)問題,本文分享解決問題的思路及影響報文超時上報的機制,希望能給各位讀者一點啟發(fā)。 參考文檔: 1.
    的頭像 發(fā)表于 08-07 09:16 ?1547次閱讀
    影響<b class='flag-5'>報文</b>超時上報的機制有哪些

    基于以太網(wǎng)的網(wǎng)絡(luò)管理報文

    DoIP的流程: 1)診斷儀或者作為診斷Client端的ECU發(fā)送的基于以太的診斷報文通過Swi
    的頭像 發(fā)表于 10-04 17:26 ?1056次閱讀
    基于以太網(wǎng)的<b class='flag-5'>網(wǎng)絡(luò)</b>管理<b class='flag-5'>報文</b>