一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

CanTrcv_SetOpMode被哪個模塊調(diào)用?在什么場景下調(diào)用?

832065824 ? 來源:汽車電子嵌入式 ? 作者:Tomas Li ? 2022-10-31 10:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

汽車工程師CAN收發(fā)器應(yīng)該都比較熟悉,但是最近在復(fù)盤AUTOSAR架構(gòu)下的CanTrcv模塊的時發(fā)現(xiàn)對CAN收發(fā)器及CanTrcv模塊還有幾個疑問:

(1)CanTrcv_SetOpMode被哪個模塊調(diào)用,在什么場景下調(diào)用?

(2)CanTrcv和EcuM的關(guān)系,在什么場景下CanTrcv會調(diào)用?

(3)不同類型的Can收發(fā)器主要使用場景是?

本文我們來一起探索并回答這些問題。

正文

1.CanTrcv_SetOpMode被哪個模塊調(diào)用,在什么場景下調(diào)用?

1.1 CanSM模塊切換CanTrcv模塊狀態(tài)

CanTrcv模塊在上電后的初始狀態(tài)配置,一般配置初始狀態(tài)為SLEEP狀態(tài)。而后,CanTrcv模塊的狀態(tài)通過其他模塊調(diào)用CanTrcv_SetOpMode來切換。如果沒有BswM的參與(Action中切換CanTrcv狀態(tài)),一般都是CanSM模塊調(diào)用CanIf_SetTrcvMode --> CanTrcv_SetOpMode來切換CanTrcv模塊的狀態(tài)。

8e5ec5b0-5788-11ed-a3b6-dac502259ad0.png

CanSM的CANSM_BSM_S_PRE_NOCOM和CANSM_BSM_S_PRE_FULLCOM兩個狀態(tài)會調(diào)用

CanIf_SetTrcvMode切換CanTrcv模塊的狀態(tài)。

8eaf3aea-5788-11ed-a3b6-dac502259ad0.png

CANSM_BSM_S_PRE_NOCOM的子狀態(tài)CANSM_BSM_DeInitPnNotSupported會調(diào)用CanIf_SetTrcvMode將CanTrcv切換到Normal狀態(tài)后又立馬切換到StandBy狀態(tài)(Note: 不知道為啥有這個操作?)。

8ecc29d4-5788-11ed-a3b6-dac502259ad0.png

8eeea630-5788-11ed-a3b6-dac502259ad0.png

在CANSM_BSM_S_NOCOM狀態(tài)下如果檢查到有來自COM模塊的通信請求(T_FULL_COM_MODE_REQUEST)后會切換到CANSM_BSM_PRE_FULLCOM狀態(tài),然后調(diào)用CanIf_SetTrcvMode將CanTrcv模塊狀態(tài)切換到NORMAL狀態(tài)。

8f12fcd8-5788-11ed-a3b6-dac502259ad0.png

1.2 BswM的Action切換CanTrcv模塊的狀態(tài)

如果CanSM對CanTrcv的模式狀態(tài)管理不能滿足項目實(shí)際的需求,我們可以通過BswM設(shè)計在滿足特定條件下調(diào)用CanTrcv_SetOpMode來快速切換CanTcv模式狀態(tài)。

8f311cd6-5788-11ed-a3b6-dac502259ad0.png

1.3 EcuM的Callout函數(shù)中切換CanTrcv模塊的狀態(tài)

EcuM通過中斷或輪詢檢測到來自CAN收發(fā)器或控制器的喚醒事件后,就可以對該喚醒事件進(jìn)行驗(yàn)證。EcuM通過打開相應(yīng)的CAN收發(fā)器和控制器來實(shí)現(xiàn)喚醒事件驗(yàn)證。EcuM模塊調(diào)用集成代碼EcuM_StartWakeupSource來打開相應(yīng)的CAN收發(fā)器和控制器。

注意:雖然控制器和收發(fā)器已打開,但CAN接口模塊(CanIf)不會將CAN消息轉(zhuǎn)發(fā)到任何上層模塊。只有當(dāng)CanIf對應(yīng)的PDU通道模式設(shè)置為“在線”時,才會轉(zhuǎn)發(fā)CAN消息。

ECU狀態(tài)管理器模塊將通過通信管理器模塊ComM繼續(xù)正常啟動CAN網(wǎng)絡(luò)。否則,它將調(diào)用EcuM_StopWakeupSources關(guān)閉CAN控制器和收發(fā)器。

8f4d892a-5788-11ed-a3b6-dac502259ad0.png

2.CanTrcv和EcuM的關(guān)系,在什么場景下CanTrcv會調(diào)用EcuM_SetWakeupEvent?

在回答這個問題前,先介紹一下ECU系統(tǒng)設(shè)計相關(guān)的一些知識。

ECU在設(shè)計時根據(jù)具體需求可以在硬件上添加SBC或無SBC。如果ECU有SBC,ECU就是一個斷電系統(tǒng)。那么ECU在系統(tǒng)下電(Shutdown)流程的最后一步會調(diào)用SBC的服務(wù)接口斷掉MCU的電,整個MCU在休眠中是處于斷電狀態(tài)的。在外部信號(Can Transceiver/Lin Transceiver的INH引腳,Dio喚醒引腳 )喚醒MCU時,SBC重新給MCU供電,MCU重新冷啟動。

如果ECU無SBC,ECU就是一個深度休眠系統(tǒng)。那么ECU在系統(tǒng)下電(Shutdown)流程的最后一步會調(diào)用MCU的服務(wù)進(jìn)入到Deep Sleep深度休眠狀態(tài)(MCU陷入深度休眠狀態(tài),程序不在運(yùn)行,但是MCU還有電存在)。在外部信號(Can Transceiver/Lin Transceiver的INH引腳,Dio喚醒引腳 )通過中斷喚醒MCU,MCU被喚醒后,程序可以選擇軟件復(fù)位,整個軟件重新運(yùn)行,也可以選擇從上次停止的地方接著運(yùn)行。

8f897fc0-5788-11ed-a3b6-dac502259ad0.png

如果是深度休眠系統(tǒng)且ECU被喚醒后接著跑的話,我們可以通過配置(EcuM中enable sleep support,EcuM實(shí)現(xiàn)EcuM_EnbaleWakeupSource集成代碼,中斷函數(shù)中調(diào)用EcuM_CheckWakeup)最后在CanTrcv_CheckWakeup函數(shù)中調(diào)用EcuM_SetWakeupEvent來實(shí)現(xiàn)喚醒源檢測。

8fb5646e-5788-11ed-a3b6-dac502259ad0.png

如果是斷電系統(tǒng)或者深度休眠系統(tǒng)被喚醒后軟件復(fù)位,那么上圖的整個交互過程就不存在了。程序重啟后需要在其他設(shè)計的模塊(CDD_WKSM)開啟喚醒源檢測,如果檢測到喚醒源就需要調(diào)用EcuM_SetWakeupEvent來設(shè)置喚醒源事件。

問題:CanTrcv和EcuM的關(guān)系,在什么場景下CanTrcv會調(diào)用EcuM_SetWakeupEvent?

答:如果是休眠系統(tǒng)且ECU被喚醒后繼續(xù)跑,則CanTrcv需要進(jìn)行喚醒源檢測并調(diào)用EcuM_SetWakeupEvent設(shè)置喚醒源事件。如果是斷電系統(tǒng),或者休眠系統(tǒng)且ECU被喚醒后軟件復(fù)位,則CanTrcv不用做喚醒源檢測,也不會調(diào)用EcuM_SetWakeupEvent設(shè)置喚醒源事件,需要自定義起碼模塊是西安喚醒源檢測。

3.不同類型的Can收發(fā)器主要使用場景是?

生產(chǎn)CAN收發(fā)器的廠商比較有名是NXP,Infineon,TI等,類型很多,收發(fā)器支持的功能也不近一樣。這里介紹NXP的三種比較有代表性的收發(fā)器,TJA1044,TJA1043,TJA1145。

是否有STB引腳 是否有EN引腳 是否有INH引腳 是否有SPI引腳 是否支持PN局部網(wǎng)絡(luò)管理 使用場景
TJA1044 Y N N N N 休眠系統(tǒng),任意CAN報文在CAN_RX引腳上產(chǎn)生中斷喚醒
TJA1043 Y Y Y N N 斷電系統(tǒng),任意報文喚醒收發(fā)器,INH接到SBC
JTA1145 N N N Y Y 局部網(wǎng)絡(luò)管管理,特定報文喚醒收發(fā)器,INH引腳接到SBC

TJA1044收發(fā)器相比基礎(chǔ)版本增加了standby的低功耗模式,此模式的功耗在10uA左右。同時CAN收發(fā)器處在standby模式時會開啟CAN總線喚醒功能,當(dāng)CAN總線上有數(shù)據(jù)時,RXD會產(chǎn)生從高到低的跳變沿,此跳變沿可以被MCU用來做喚醒源。此種收發(fā)器一般用在KL30(長電)和KL15同時供電的產(chǎn)品上,如儀表,中控,導(dǎo)航等產(chǎn)品。

Standby模式下的功耗已經(jīng)很低了,如果車廠要求功耗做的更低,或者要求支持本地喚醒,此時就需要使用帶sleep模式,INH引腳和wake引腳的收發(fā)器了。以TJA1043為例,當(dāng)MCU配置TJA1043進(jìn)入sleep模式之后,INH引腳拉低,LDO關(guān)閉輸出,MCU關(guān)閉不消耗電流。當(dāng)CAN總線有喚醒信號,或者wake引腳有跳變沿,INH引腳被拉高,LDO打開輸出,MCU啟動并配置TJA1043進(jìn)入Normal模式接收CAN報文。傳統(tǒng)的VCU,BMS等產(chǎn)品就使用了此收發(fā)器。

像T-BOX這類應(yīng)用,一般對低功耗的要求更嚴(yán)格,如果使用TJA1043這類收發(fā)器,一旦被和自己不相關(guān)的CAN報文喚醒之后,需要軟件進(jìn)行判斷處理,盡快的再次進(jìn)入休眠模式。此時就對CAN收發(fā)器提出了新的功能需求,既局部網(wǎng)絡(luò)喚醒功能,相關(guān)標(biāo)準(zhǔn)為11898-6:2013。NXP支持該功能的收發(fā)器為TJA1145,可以通過SPI接口配置喚醒報文的速率,ID和數(shù)據(jù),不滿足條件的CAN報文無法喚醒TJA1145。

需要提醒的是,TJA1145不支持CAN FD的局部網(wǎng)絡(luò)喚醒功能,如果TJA1145被用于CAN FD總線中,需要選用TJA1145T/FD and TJA1145TK/FD,其他型號接收到CAN FD的喚醒信號會識別為錯誤信號。






審核編輯:劉清

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

    關(guān)注

    114

    文章

    17089

    瀏覽量

    184104
  • PDU
    PDU
    +關(guān)注

    關(guān)注

    0

    文章

    96

    瀏覽量

    17310
  • CAN收發(fā)器
    +關(guān)注

    關(guān)注

    3

    文章

    175

    瀏覽量

    26320

原文標(biāo)題:關(guān)于CanTrcv模塊的幾點(diǎn)思考

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何查看及更改函數(shù)/函數(shù)塊的調(diào)用環(huán)境

    模塊化設(shè)計的思想是把一些相似的功能(比如電機(jī)控制、閥控制)設(shè)計成函數(shù)或函數(shù)塊,這樣就可以反復(fù)調(diào)用。其優(yōu)點(diǎn)是:使程序架構(gòu)更加清晰,避免重復(fù)編寫相似功能的代碼。不過可能會產(chǎn)生一個疑惑:既然PLC的程序
    的頭像 發(fā)表于 11-17 09:08 ?1486次閱讀
    如何查看及更改函數(shù)/函數(shù)塊的<b class='flag-5'>調(diào)用</b>環(huán)境

    verilog模塊調(diào)用、任務(wù)和函數(shù)

    在做模塊劃分時,通常會出現(xiàn)這種情形,某個大的模塊中包含了一個或多個功能子模塊,verilog是通過模塊調(diào)用或稱為
    的頭像 發(fā)表于 05-03 10:29 ?640次閱讀
    verilog<b class='flag-5'>模塊</b>的<b class='flag-5'>調(diào)用</b>、任務(wù)和函數(shù)

    labview wince下調(diào)用DLL 如何編譯

    labview wince下調(diào)用DLL 如何編譯。
    發(fā)表于 11-08 13:33

    很贊的labview下調(diào)用地圖

    ://url.elecfans.com/u/78643b3008labview下調(diào)用地圖源代碼,有地圖,有三微,可以看到你家里哦,趕緊試試 不要錯過了 覺得好就支持我@@@?。。?!labview下調(diào)用地圖源代碼:[hide] [/hide]
    發(fā)表于 11-21 11:24

    求Labview 下調(diào)用Fortran dll的詳細(xì)教程

    各位好,我現(xiàn)在用到LabVIEW下調(diào)用Fortran dll的問題,調(diào)用老是出問題,請問有用過的嗎?能不能給個詳細(xì)的教程
    發(fā)表于 09-28 16:52

    通過調(diào)用HID.dll編寫USB HID的數(shù)據(jù)讀寫,請大神們幫忙提示一下調(diào)用哪些HID的原型函數(shù)及函數(shù)調(diào)用順序!

    通過調(diào)用HID.dll編寫USB HID的數(shù)據(jù)讀寫,請大神們幫忙提示一下調(diào)用哪些HID的原型函數(shù)及函數(shù)調(diào)用順序!
    發(fā)表于 07-06 10:02

    頂層調(diào)用模塊的VHDL例程

    本站提供的頂層調(diào)用模塊的VHDL例程,希望對你的學(xué)習(xí)有所幫助!
    發(fā)表于 05-27 15:38 ?0次下載

    當(dāng)函數(shù)執(zhí)行完畢后,如何返回調(diào)用處?

    當(dāng)函數(shù)執(zhí)行完畢后,如何返回調(diào)用處呢?由于該函數(shù)可能會被多次調(diào)用,且每次調(diào)用的地方很可能不一樣,這樣調(diào)用函數(shù)也就不可能知道自己該返回到哪里,
    的頭像 發(fā)表于 09-14 14:27 ?1.7w次閱讀
    當(dāng)函數(shù)執(zhí)行完畢后,如何返回<b class='flag-5'>調(diào)用</b>處?

    Linux下系統(tǒng)調(diào)用的技巧

    文件, 這些文件能插入到正在運(yùn)行的內(nèi)核,或者從正在運(yùn)行的內(nèi)核中移走。內(nèi)核模塊至少必須有2個函數(shù):  int_module和cleanup_module。第一個函數(shù)是模塊插入內(nèi)核時
    發(fā)表于 04-02 14:36 ?498次閱讀

    JLinkScript文件基礎(chǔ)及其IAR下調(diào)用方法的PDF文件

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是 JLink Script 文件基礎(chǔ)及其 IAR 下調(diào)用方法。 JLink 可以說是 MCU 開發(fā)者最熟悉的調(diào)試工具了,相比于其他
    發(fā)表于 12-11 00:02 ?5次下載
    JLinkScript文件基礎(chǔ)及其<b class='flag-5'>在</b>IAR<b class='flag-5'>下調(diào)用</b>方法的PDF文件

    探討VHDL和Verilog模塊互相調(diào)用的問題

    1、 關(guān)于如何在VHDL模塊調(diào)用一個Verilog模塊 VHDL模塊聲明一個要與調(diào)用的Veri
    的頭像 發(fā)表于 04-30 14:06 ?1.1w次閱讀
    探討VHDL和Verilog<b class='flag-5'>模塊</b>互相<b class='flag-5'>調(diào)用</b>的問題

    多重復(fù)性功能模塊情況下如何下調(diào)用已有模塊

    層次原理圖中,怎么去調(diào)用已經(jīng)創(chuàng)建好的模塊呢?
    的頭像 發(fā)表于 01-04 15:24 ?2109次閱讀

    仿真測試2:全加器(模塊調(diào)用

    做任何模塊前,要確定輸入輸出端口有哪些,有一個整體的概念;方便以后模塊調(diào)用;
    的頭像 發(fā)表于 10-10 14:10 ?1144次閱讀
    仿真測試2:全加器(<b class='flag-5'>模塊</b><b class='flag-5'>調(diào)用</b>)

    mallocLinux上執(zhí)行的是哪個系統(tǒng)調(diào)用

    malloc底層為什么是內(nèi)存池 malloc大家都用過,其是庫函數(shù)。我們都知道庫函數(shù)不同的操作系統(tǒng)中其實(shí)執(zhí)行的是系統(tǒng)調(diào)用,那么mallocLinux上執(zhí)行的是哪個系統(tǒng)
    的頭像 發(fā)表于 11-13 10:36 ?1353次閱讀
    malloc<b class='flag-5'>在</b>Linux上執(zhí)行的是<b class='flag-5'>哪個</b>系統(tǒng)<b class='flag-5'>調(diào)用</b>

    verilog如何調(diào)用其他module

    。 1.2 為什么要調(diào)用其他模塊? 復(fù)雜的設(shè)計中,我們通常需要實(shí)現(xiàn)各種不同的功能,并且這些功能往往可以通過不同的模塊來實(shí)現(xiàn)。通過調(diào)用其他
    的頭像 發(fā)表于 02-22 15:56 ?7587次閱讀