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

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

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

AUTOSAR通信之CanIf模塊簡(jiǎn)介1

jf_78858299 ? 來源:汽車控制與人工智能 ? 作者:Demu ? 2023-02-13 14:29 ? 次閱讀

1 位置和作用

如圖1所示,CAN接口模塊(下文簡(jiǎn)“CanIf”)位于底層CAN驅(qū)動(dòng)(CanDrv)、CAN收發(fā)器(CanTrcv)和上層通信服務(wù)層(CanSm、CanNm)、CAN傳輸協(xié)議(CanTp)、PDU路由器(PduR)之間。它表示上層通信層的CAN驅(qū)動(dòng)程序服務(wù)接口。

圖片

圖1 CanIf的位置

CanIf提供了獨(dú)特的接口來管理不同CAN硬件,如CAN控制器和CAN收發(fā)器。同時(shí),基于物理CAN通道相關(guān)的CAN狀態(tài)管理器模塊(CanSm)可以控制多個(gè)底層內(nèi)部和外部的CAN控制器或CAN收發(fā)器。

CanIf由與CAN硬件無關(guān)的任務(wù)組成,屬于ECU CAN通信驅(qū)動(dòng)程序。CanIf滿足PduR和AUTOSAR COM棧上層通信模塊的控制流和數(shù)據(jù)流要求:發(fā)送請(qǐng)求處理、發(fā)送確認(rèn)、接收指示、錯(cuò)誤通知和CAN控制器的啟動(dòng)/停止,從而喚醒或參與網(wǎng)絡(luò)。它的數(shù)據(jù)處理和通知API基于CAN L-SDU,用于控制和模式處理的API提供了CAN控制器相關(guān)的視圖。

圖片

圖2 CanIf模塊和其他模塊的關(guān)系

在發(fā)送請(qǐng)求時(shí),CanIf用相應(yīng)的參數(shù)完成L-PDU的傳輸,并通過對(duì)應(yīng)CanDrv將CAN L-PDU轉(zhuǎn)發(fā)給CAN控制器。在接收端,CanIf將接收到的I-PDU作為I-SDU分發(fā)到上層模塊。接收L-SDU和上層之間的分配是靜態(tài)配置的。在傳輸確認(rèn)時(shí),CanIf負(fù)責(zé)向上層發(fā)送傳輸成功的信息。

CanIf提供對(duì)CAN驅(qū)動(dòng)程序的通信抽象訪問和CAN收發(fā)驅(qū)動(dòng)程序服務(wù),用于對(duì)CAN網(wǎng)絡(luò)的控制和監(jiān)視。CAN接口將CAN狀態(tài)管理器的狀態(tài)向下轉(zhuǎn)發(fā)到底層CAN驅(qū)動(dòng)程序,向上CAN接口模塊將CAN驅(qū)動(dòng)程序或 CAN收發(fā)器驅(qū)動(dòng)程序傳遞到相應(yīng)的NM模塊。

2 上下層關(guān)系

上層

AUTOSAR BSW分層架構(gòu)中,CanIf的上層可以是PduR,可以是CanNm,可以CanTp,可以CanSm,EcuM或復(fù)雜的驅(qū)動(dòng)模塊CDD,普遍標(biāo)定協(xié)議模塊XCP,全局時(shí)間同步模塊CanTSyn ,J1939傳輸層模塊 J1939Tp和J1939網(wǎng)絡(luò)管理模塊 J1939Nm。

CanIf使用的API由通知服務(wù)組成,它們將CAN相關(guān)數(shù)據(jù)傳輸?shù)侥繕?biāo)上層。這些服務(wù)的調(diào)用參數(shù)指向CanDrv中的緩沖信息,或者直接指向CAN硬件。另外,CanIf支持對(duì)總線鏡像模塊的調(diào)出,來報(bào)告接收和傳輸幀的內(nèi)容。EcuM會(huì)初始化CanIf。

下層

CanIf的下層模塊主要是CAN驅(qū)動(dòng)程序CanDrv。由于CanIf在AUTOSAR BSW架構(gòu)中的地位,它與CanDrv有著密切的關(guān)系。CanDrv只提供對(duì)CAN控制器的硬件抽象訪問,但是CanDrv會(huì)檢測(cè)和處理CAN控制器的事件,并將這些事件通知到CanIf。CanIf將CanSm的操作模式請(qǐng)求傳遞給相應(yīng)的底層CAN控制器。

圖片

CanDrv提供了標(biāo)準(zhǔn)化的L-PDU,以確保CanIf的硬件獨(dú)立性。指向這個(gè)規(guī)范化的L-PDU的指針要么指向一個(gè)臨時(shí)緩沖區(qū),要么指向依賴于CAN硬件的CanDrv。CanDrv調(diào)用的回調(diào)服務(wù)是在CanIf中聲明和實(shí)現(xiàn)的。由CanIf調(diào)用的回調(diào)服務(wù)被聲明并放置在對(duì)應(yīng)的上層通信服務(wù)層中,如PduR、CanNm、CanTp。

配置的CAN控制器的數(shù)量不一定是使用的CAN收發(fā)器的數(shù)量。如果多個(gè)不同類型的CAN控制器在同一個(gè)CAN網(wǎng)絡(luò)上運(yùn)行,一個(gè)CAN收發(fā)器是足夠的,但是根據(jù)CAN控制器設(shè)備的類型,需要一個(gè)或兩個(gè)不同的CanDrv。

第二個(gè)可用的底層CAN設(shè)備驅(qū)動(dòng)程序是CAN收發(fā)器CanTrcv。

每個(gè)CanTrcv對(duì)CAN收發(fā)器進(jìn)行操作模式的控制。CanIf只是將幾個(gè)底層CanTrcv的API映射到一個(gè)惟一的API,因此,CanSm能夠觸發(fā)相應(yīng)CAN收發(fā)模式的轉(zhuǎn)換。CanIf中不執(zhí)行屬于CanTrcv所控制的功能。

CanIf將所有底層CanTrcv的下列服務(wù)映射到一個(gè)惟一的接口:

  • 唯一的CanTrcv模式請(qǐng)求和讀取服務(wù)來管理每個(gè)底層CAN收發(fā)設(shè)備的操作模式;
  • 為CAN收發(fā)器讀取服務(wù),喚醒原因支持;
  • 模式請(qǐng)求服務(wù)啟用、禁用、清除喚醒事件狀態(tài)使用的每個(gè)CAN收發(fā)器(CanIf_SetTrcvMode)。

3 配置

CanIf的設(shè)計(jì)經(jīng)過優(yōu)化,以管理CAN協(xié)議的特定功能和用于底層CAN控制器的處理。

CanIf不需要重構(gòu)就可以更改CAN配置。函數(shù)CanIf_Init()從配置容器和參數(shù)中獲取所需的CAN配置信息。

圖片

可以獲取到的信息包括:

  • CAN控制器的數(shù)量。CAN控制器的數(shù)量對(duì)于發(fā)送和接收I-PDU的調(diào)度以及對(duì)可用CAN驅(qū)動(dòng)程序狀態(tài)的控制是非常必要的,如下圖CanIfCtrlDrvCfg。

圖片

  • 硬件對(duì)象句柄的數(shù)目。為了監(jiān)督發(fā)送請(qǐng)求,CAN接口需要知道HTH的數(shù)量以及每個(gè)HTH與相應(yīng)的CAN控制器之間的分配,如下圖CanIfHthCanCtrlIdRef和CanIfHthIdSymRef。

圖片

圖片

  • 通過每個(gè)硬件對(duì)象的過濾器所接收到的CAN ID的范圍。CAN接口使用HRH和L-PDU之間的固定分配,在相應(yīng)的硬件對(duì)象中接收,進(jìn)行搜索算法,見下圖CanIfHrhSoftwareFilter,CanIfHrhCanCtrlIdRef和 CanIfHrhIdSymRef。

圖片

圖片

圖片

CanIf需要所有已使用的上層通信服務(wù)層和L-SDU的信息來分配。為了在AUTOSAR COM棧中集成CanIf,必須在配置時(shí)設(shè)置以下信息:

  • 傳遞上層模塊,并為每個(gè)傳輸L-SDU傳輸I-PDU,用于發(fā)送確認(rèn)服務(wù)的調(diào)度,參見CanIfTxPduId。

圖片

  • 接收上層模塊并為每個(gè)L-SDU接收I-PDU。用于接收指示期間的L-SDU調(diào)度,參見 CanIfRxPduId。

圖片

ECU連接到一個(gè)或多個(gè)CAN網(wǎng)絡(luò),CanIf需要控制器和ECU的描述。因此,以下信息是從AUTOSAR系統(tǒng)配置的一部分CAN通信矩陣中獲取得到,見CanIfTxPduCfg和CanIfRxPduCfg:

  • ECU物理通道上接收的所有I-PDU,用于軟件過濾和接收L-SDU調(diào)度;
  • 所有I-SDU應(yīng)由ECU上的每個(gè)物理通道傳遞,用于發(fā)送請(qǐng)求和發(fā)送L-PDU調(diào)度;
  • L-PDU的屬性,包括ID和數(shù)據(jù)長(zhǎng)度,用于軟件濾波,接收指示服務(wù),數(shù)據(jù)長(zhǎng)度檢查;
  • 傳輸L-SDU的傳遞模塊,即PduR、CanNm和CanTp,用于發(fā)送確認(rèn)服務(wù);
  • 接收L-SDU的接收器,即PduR、CanNm和CanTp,用于L-PDU的調(diào)度;
  • L-PDU和L-SDU名稱,用于表示Rx/Tx數(shù)據(jù)緩沖區(qū)的地址;
圖片

圖片

4 功能服務(wù)

CanIf的服務(wù)可以分為以下幾個(gè)主要內(nèi)容:

  • 初始化
  • 發(fā)送請(qǐng)求服務(wù)
  • 發(fā)送確認(rèn)服務(wù)
  • 接待指示服務(wù)
  • 控制器模式控制服務(wù)
  • PDU模式控制服務(wù)

CanIf的應(yīng)用模式:

  • 中斷模式:

CanDrv處理由CAN控制器觸發(fā)的中斷。CanIf在事件發(fā)生時(shí)得到觸發(fā),在這種情況下,在CanDrv中相應(yīng)的ISR中調(diào)用相關(guān)的CanIf服務(wù)。

  • 輪詢模式:

由SchM觸發(fā)CanDrv,并執(zhí)行后續(xù)進(jìn)程。在這種情況下,必須在定義的時(shí)間間隔內(nèi),調(diào)用下列函數(shù):

  • Can_MainFunction_Write
  • Can_MainFunction_Read
  • Can_MainFunction_BusOff
  • Can_MainFunction_Wakeup
  • Can_MainFunction_Transceiver

CanIf由CanDrv通知事件接收、發(fā)送、BusOff和超時(shí)),這些事件發(fā)生在一個(gè)CAN控制器中等同于中斷驅(qū)動(dòng)操作。CanDrv更新屬于CAN控制器中發(fā)生事件的相應(yīng)信息,如接收L-PDU。

  • 混合模式:

中斷和輪詢驅(qū)動(dòng)CanDrv。根據(jù)所使用的CAN控制器,該功能可以分為中斷驅(qū)動(dòng)和輪詢驅(qū)動(dòng)兩種操作模式。比如,輪詢驅(qū)動(dòng)的FullCAN接收和中斷驅(qū)動(dòng)的基本CAN接收,輪詢驅(qū)動(dòng)的傳輸和中斷驅(qū)動(dòng)的接收等。

AUTOSAR提供了獨(dú)特的接口,對(duì)三種類型的操作模式都有效。無論是在中斷、輪詢還是混合處理事件時(shí),CanIf都以相同的方式工作,區(qū)別是調(diào)用內(nèi)容不同,還有通知中斷的方式:搶占式或協(xié)作式。所有服務(wù)都是按照配置執(zhí)行的。

初始化

EcuM調(diào)用CanIf的函數(shù)CanIf_Init()來初始化整個(gè)CanIf。在初始化過程,將對(duì)所有全局變量和數(shù)據(jù)結(jié)構(gòu)初始化,包括標(biāo)示和緩沖區(qū)。EcuM分別通過調(diào)用相應(yīng)的初始化服務(wù)來執(zhí)行CanDrv和CanTrcv的初始化。

在初始化完成后,CAN控制器保持在啟動(dòng)復(fù)位后的停止模式。在這種模式下,CanIf和CanDrv既不能發(fā)送也不能接收L-PDU。

如果在運(yùn)行期間需要重新初始化整個(gè)CAN模塊,EcuM會(huì)調(diào)用CanSm,通過調(diào)用CAN接口模塊的API服務(wù)CanIf_SetControllerMode()來啟動(dòng)CAN控制器所需的狀態(tài)轉(zhuǎn)換,具體過程后續(xù)介紹CAN狀態(tài)管理時(shí)會(huì)展開。CanIf將來自CanSm的調(diào)用映射到Candrv的調(diào)用上。

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

    關(guān)注

    10

    文章

    3440

    瀏覽量

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

    關(guān)注

    57

    文章

    2762

    瀏覽量

    464007
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3738

    瀏覽量

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

    關(guān)注

    0

    文章

    94

    瀏覽量

    17005
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AUTOSAR MCAL MCU模塊的相關(guān)資料分享

    作者:Stephen Du免責(zé)聲明: 本文為個(gè)人學(xué)習(xí)筆記及總結(jié),僅代表個(gè)人觀點(diǎn),盡可能保證內(nèi)容準(zhǔn)確性。復(fù)制/轉(zhuǎn)發(fā)請(qǐng)注明來源/作者。歡迎添加微信交流學(xué)習(xí)。AUTOSAR MCAL MCU模塊解析1
    發(fā)表于 11-03 08:18

    AUTOSAR的相關(guān)資料推薦

    AUTOSAR基礎(chǔ)篇EcuM_wto9109的博客-CSDN博客【AutoSAR】【EcuM】ECU狀態(tài)管理專注汽車軟件開發(fā)、AutoSAR、車載以太網(wǎng)、SOA、EE架構(gòu)。07-08
    發(fā)表于 01-27 08:25

    AUTOSAR_MCAL_CAN_IM.pdf提示找不到 config/CanIf.xdm怎么解決?

    AUTOSAR_MCAL_CAN_IM.pdf 文件中聲明還需要 CanIf 插件來實(shí)現(xiàn) CAN 插件。但是,當(dāng)我嘗試在 Tresos 上添加 CanIf 模塊時(shí),它給出了一個(gè)錯(cuò)誤
    發(fā)表于 03-30 08:48

    AUTOSAR通信CanIf模塊簡(jiǎn)介2

    CAN接口模塊(下文簡(jiǎn)“CanIf”)位于底層CAN驅(qū)動(dòng)(CanDrv)、CAN收發(fā)器(CanTrcv)和上層通信服務(wù)層(CanSm、CanNm)、CAN傳輸協(xié)議(CanTp)、PDU路由器(PduR)之間。它表示上層
    的頭像 發(fā)表于 02-13 14:29 ?2541次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>通信</b><b class='flag-5'>之</b><b class='flag-5'>CanIf</b><b class='flag-5'>模塊</b><b class='flag-5'>簡(jiǎn)介</b>2

    AUTOSAR通信CanIf模塊簡(jiǎn)介3

    CAN接口模塊(下文簡(jiǎn)“CanIf”)位于底層CAN驅(qū)動(dòng)(CanDrv)、CAN收發(fā)器(CanTrcv)和上層通信服務(wù)層(CanSm、CanNm)、CAN傳輸協(xié)議(CanTp)、PDU路由器(PduR)之間。它表示上層
    的頭像 發(fā)表于 02-13 14:29 ?3577次閱讀
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>通信</b><b class='flag-5'>之</b><b class='flag-5'>CanIf</b><b class='flag-5'>模塊</b><b class='flag-5'>簡(jiǎn)介</b>3

    AutosarBSWM配置簡(jiǎn)介

    AUTOSAR基礎(chǔ)軟件層主要用于提供基礎(chǔ)軟件服務(wù),包括標(biāo)準(zhǔn)化的系統(tǒng)功能以及功能接口,并且由一系列的基礎(chǔ)服務(wù)軟件組件構(gòu)成,包括系統(tǒng)服務(wù)、內(nèi)存服務(wù)、通信服務(wù)等。
    的頭像 發(fā)表于 05-26 11:15 ?1746次閱讀
    <b class='flag-5'>Autosar</b><b class='flag-5'>之</b>BSWM配置<b class='flag-5'>簡(jiǎn)介</b>

    AUTOSAR通信協(xié)議棧配置詳解

    通訊協(xié)議棧幾乎是CP AUTOSAR中最龐雜的一塊。由于其涉及的模塊比較多(僅實(shí)現(xiàn)CAN信號(hào)的收發(fā)就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP這么多模塊的協(xié)
    的頭像 發(fā)表于 09-21 10:02 ?6101次閱讀
    <b class='flag-5'>AUTOSAR</b>中<b class='flag-5'>通信</b>協(xié)議棧配置詳解

    AUTOSAR軟件開發(fā)流程簡(jiǎn)介

    軟件功能和性能要求。這包括確定軟件組件、接口和模塊的功能和規(guī)格要求。 架構(gòu)設(shè)計(jì):在這個(gè)階段,根據(jù)需求分析的結(jié)果,設(shè)計(jì)AUTOSAR軟件的整體架構(gòu)。這包括定義軟件組件的功能和接口,以及確定軟件模塊的分層結(jié)構(gòu)和
    的頭像 發(fā)表于 10-27 15:55 ?3183次閱讀
    <b class='flag-5'>AUTOSAR</b>軟件開發(fā)流程<b class='flag-5'>簡(jiǎn)介</b>

    AUTOSAR通信協(xié)議解析 如何實(shí)現(xiàn)AUTOSAR通信

    AUTOSAR(Automotive Open System Architecture)即汽車開放系統(tǒng)架構(gòu),該架構(gòu)支持汽車電子控制單元(ECU)之間的通信,實(shí)現(xiàn)了高度模塊化和可重用性。AUTO
    的頭像 發(fā)表于 12-17 14:54 ?822次閱讀

    AUTOSAR通信組件介紹 AUTOSAR通信層功能分析

    實(shí)現(xiàn)汽車電子控制單元(ECU)的軟件設(shè)計(jì)和開發(fā)。這個(gè)架構(gòu)包括多個(gè)層,其中通信層是AUTOSAR架構(gòu)中的關(guān)鍵組成部分之一。 1. 通信組件概述 AUT
    的頭像 發(fā)表于 12-17 14:55 ?398次閱讀

    AUTOSAR通信與CAN協(xié)議的關(guān)系

    的概念,允許應(yīng)用層組件(如軟件組件和ECU抽象層)通過定義良好的接口進(jìn)行通信。 1. 通信服務(wù): AUTOSAR提供了一系列通信服務(wù),包括復(fù)
    的頭像 發(fā)表于 12-17 14:57 ?287次閱讀

    AUTOSAR通信框架的優(yōu)勢(shì) AUTOSAR通信實(shí)例與應(yīng)用場(chǎng)景

    AUTOSAR通信框架的優(yōu)勢(shì) AUTOSAR(AUTomotive Open System ARchitecture)是一個(gè)全球性的汽車軟件架構(gòu)合作伙伴計(jì)劃,旨在創(chuàng)建并建立一個(gè)開放的標(biāo)準(zhǔn)化軟件架構(gòu)
    的頭像 發(fā)表于 12-17 14:58 ?353次閱讀

    AUTOSAR通信堆棧的配置 AUTOSAR通信模塊測(cè)試方法

    )的開發(fā)和生產(chǎn)。通信堆棧是AUTOSAR架構(gòu)中的關(guān)鍵組成部分,負(fù)責(zé)處理ECU之間的通信。 AUTOSAR通信堆棧的配置
    的頭像 發(fā)表于 12-17 15:01 ?312次閱讀

    AUTOSAR通信實(shí)現(xiàn)中的常見問題

    配置與使用問題 通信協(xié)議棧模塊理解不足 問題 :開發(fā)者可能對(duì)AUTOSAR通信協(xié)議棧的組成模塊(如Com、Dcm、PduR、IpduM、TP
    的頭像 發(fā)表于 12-17 15:03 ?425次閱讀

    AUTOSAR通信與網(wǎng)絡(luò)安全 AUTOSAR通信在車輛中的應(yīng)用

    架構(gòu)合作伙伴計(jì)劃,旨在創(chuàng)建并建立一個(gè)開放的標(biāo)準(zhǔn)化軟件架構(gòu),以簡(jiǎn)化汽車電子控制單元(ECU)的開發(fā)和生產(chǎn)。 1. AUTOSAR通信概述 AUTOSAR定義了一個(gè)分層的軟件架構(gòu),其中包括
    的頭像 發(fā)表于 12-17 15:06 ?329次閱讀