女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

CAN、LIN報文的發(fā)送過程詳解

832065824 ? 來源:汽車電子嵌入式 ? 作者:汽車電子嵌入式 ? 2022-11-14 10:02 ? 次閱讀

前言

最近在研究AUTOSAR通信協(xié)議棧的時候發(fā)現(xiàn)對IPDU的Trigger Transmit很是疑惑,產(chǎn)生了以下幾個問題:

(1)Com模塊的IPDU的trigger發(fā)送和CanIf或者Can模塊的Trigger發(fā)送一樣嗎?

(2)怎么通過CanIf模塊發(fā)送trigger IPDU?

(3)哪個模塊完成Can trigger IPDU的判斷?

(4)請說明Can IPDR的Trigger Transmit的整個過程?

(5)Lin IPUD和Can IPDU的trigger transmit有何異同?

本文先梳理一遍CAN、LIN報文的發(fā)送過程,然后回答這些問題。

AUTOSAR 通信服務(wù)-Com模塊概念詳解

AUTOSAR 通信服務(wù)-PDU Router

AUTOSAR CAN通信協(xié)議棧分析(3)-CanIf

Can通信協(xié)議棧分析(1)-Can Driver

73bed7f6-63a7-11ed-8abf-dac502259ad0.png

正文

1.CAN報文IPDU的發(fā)送過程

1.1 COM模塊發(fā)送IPDU

73ed8394-63a7-11ed-8abf-dac502259ad0.png

在COM模塊中,周期報文通過Com_MainFunctionTx周期調(diào)度函數(shù)發(fā)送,事件觸發(fā)型報文通過Com_TriggerIPDUSend通信服務(wù)接口發(fā)送。無論是Com_MainFunctionTx還是Com_TriggerIPDUSend最后都是調(diào)用PDUR模塊的PduR_ComTransmit來發(fā)送報文,且傳入到PduR模塊的PduInfo->SDU數(shù)據(jù)buffer指針不為NULL。

740b9f1e-63a7-11ed-8abf-dac502259ad0.png

74573bea-63a7-11ed-8abf-dac502259ad0.png

1.2 PDUR模塊發(fā)送IPDU

747d2cf6-63a7-11ed-8abf-dac502259ad0.png

強調(diào)Com模塊過來的Can IPDU->SDU一定不為NULL是因為它會影響報文的發(fā)送方式(1.3章節(jié)詳解)。PduR模塊對于Com模塊的CAN IPDU直接調(diào)用CanIf_Transmit發(fā)送,CanIf收到IPDU發(fā)送請求后直接調(diào)用CanDriver的接口發(fā)送報文,Copy Data到CanController發(fā)送。

74ac4220-63a7-11ed-8abf-dac502259ad0.png

PduR模塊的PduRestPdu配置容器提供了PduRDestPduDatProvision配置參數(shù)來配置每一個發(fā)送報文是直接發(fā)送還是觸發(fā)式發(fā)送。

Note: 在ETAS的集成配置環(huán)境ISOLAR中這個參數(shù)無論配置成啥都不影響PduR模塊的配置代碼。個人認為這個PduR模塊對于Can報文的發(fā)送都是直接調(diào)用CanIf_Transmit,確實不需要這個參數(shù),所以到底是ISOLAR有問題還是確實這個參數(shù)不影響代碼的生成還有待研究。

1.3 CanIf模塊發(fā)送IPDU

74df1128-63a7-11ed-8abf-dac502259ad0.png

CanIf模塊提供CanIfTrggerTransmitSupport配置參數(shù)來配置CanIf模塊是否支持Trigger方式發(fā)送報文。

7510126e-63a7-11ed-8abf-dac502259ad0.png

CanIf為每一Tx IPDU提供了CanIfTxPduTriggerTransmit的配置參數(shù)。如果該報文的上層發(fā)送模塊是PduR模塊且配置了該參數(shù)為True,這在PduR模塊就是生成PduR_CanIfTriggerTransmit的函數(shù)。

1.3.1 DIRECT發(fā)送

75a1dc80-63a7-11ed-8abf-dac502259ad0.png

CanIf模塊的CanIf_Transmit接口函數(shù)本身并不會判斷傳入的IPDU是否是需要Trigger發(fā)送(僅僅會做一些Det的檢測),而是直接調(diào)用Can_Write來發(fā)送IPDU,由Can模塊通過傳入的IpduInfo->Sdu是否為NULL來確定是DIRECT發(fā)送還是TRIGGER發(fā)送IPDU。

如果是IpduInfo->Sdu不為NULL,則為DIRECT發(fā)送方式,Can_Write直接完成Copy Data into controller完成報文的發(fā)送。

1.3.2 Trigger發(fā)送

75c9977a-63a7-11ed-8abf-dac502259ad0.png

如果是IpduInfo->Sdu為NULL,則為TRIGGER發(fā)送方式,Can_Write --> CanIf_TriggerTransmit --> PduR_CanIfTriggerTransmit --> Com_TriggerTransmit完成IpduInfo->Sdu into Controller的數(shù)據(jù)拷貝,也就是所謂的Trigger數(shù)據(jù)發(fā)送。

1.4 Can模塊發(fā)送IPDU

75fa0fd6-63a7-11ed-8abf-dac502259ad0.png

Can模塊提供CanTriggerTransmitEnable配置參數(shù)來配置是否使用Trigger Transmit功能。Can模塊完成IPDUD最終的Trigger發(fā)送。

2.LIN報文IPUD的發(fā)送過程

2.1 COM模塊發(fā)送IPDU

COM模塊統(tǒng)一了所有IPUD的處理方式,和1.1節(jié)完全一樣。

2.2 PDUR模塊發(fā)送IPDU

2.2.1 Lin偶發(fā)幀sporadic frame發(fā)送

761b5812-63a7-11ed-8abf-dac502259ad0.png

Lin報文的周期發(fā)送是通過調(diào)度表實現(xiàn)的,而Lin調(diào)度表存在于LinIf模塊,LinIf模塊在周期調(diào)用調(diào)度表的時候通過callback的方式實現(xiàn)IPDU的trigger transmit,也就是向上獲取到sdu數(shù)據(jù),然后調(diào)用Lin_SendFrame發(fā)送報文。調(diào)度表中的報文都是需要周期發(fā)送處理的報文,對于偶發(fā)sporadic frame的發(fā)送,COM --> PDUR -->CanIf_Transmit中設(shè)置發(fā)送flag,實現(xiàn)偶發(fā)幀發(fā)送。

2.2.2 Lin非偶發(fā)幀sporadic frame發(fā)送

76501642-63a7-11ed-8abf-dac502259ad0.png

2.3 LinIf模塊發(fā)送IPDU

76775be4-63a7-11ed-8abf-dac502259ad0.png

LinIf模塊實現(xiàn)Lin調(diào)度表中報文的周期發(fā)送,且所有報文都是通過調(diào)用pdur模塊的PduR_TriggerTransmit的callback函數(shù)完成sdu數(shù)據(jù)的獲取。

76a35622-63a7-11ed-8abf-dac502259ad0.png

LinIf模塊的LinIfTxPdu配置容器中提供了LinifTxTriggerTransmitUL的配置參數(shù),但是這個參數(shù)依賴于LinIfUserTxUL參數(shù),如果LinIfUserTxUL配置為PDUR,則LinifTxTriggerTransmitUL參數(shù)不管有無配置,則一定為PduR_TriggerTransmit,也就是PduR模塊一定會生成一個PduR_TriggerTransmit配置callback函數(shù)。

2.4 Lin模塊發(fā)送IPDU

Lin模塊沒有trigger transmit的判斷,提供Lin_SendFrame的接口即可。

3.問題回答

問題1:Com模塊的IPDU的trigger發(fā)送和CanIf或者Can模塊的Trigger發(fā)送一樣嗎?

答:Com模塊的IPDU的trigger發(fā)送和CanIf或者Can模塊的Trigger發(fā)送不一樣。

Com模塊的trigger transmit是某個事件觸發(fā)是調(diào)用Com_TriggerIPDUSend發(fā)送IPDU,但是無論是Com的周期發(fā)送Com_MainFunctionTx還是Com_TriggerIPDUSend發(fā)送IPDU,都是調(diào)用PduR_ComTransmit,而PDUR->CanIf->Can對于Com來的IPDU都是統(tǒng)一以DIRECT的方式直接Copy Data到Can Controller。

CanIf模塊本身不做IPDU是否需要trigger transmit的判斷,而是直接將IpudInfoPtr傳遞給Can模塊,Can模塊中通過IpduInfoPtr->Sdu是否為NULL來絕對是使用DIRECT的方式還是trigger transmit/也就是向上調(diào)用callback后set buffer來發(fā)送報文。

問題2:怎么通過CanIf模塊發(fā)送trigger IPDU?

答:CanIfUser(可以自定義一個模塊,或者是其他模塊)在調(diào)用CanIf_Transmti發(fā)送報文的時候傳入的IpduInfoPtr->Sdu == NULL同時CAN模塊需要enable trigger transmit就可以實現(xiàn)CAN IPDU使用CanIf模塊trigger transmit。

問題3:哪個模塊完成Can trigger IPDU的判斷?

答:CanDriver模塊。

問題4:請說明Can IPDR的Trigger Transmit的整個過程?

答:CanDriver模塊通過判斷CanIf模塊傳入的IpduInfoPtr-Sdu為NULL且Can模塊enbale了trigger transmit后調(diào)用CanIf_TriggerTransmt -> PduR_TriggerTransmt -> Com_TriggerTransmt完成Copy Data into Controller的數(shù)據(jù)拷貝操作,之后通過Can發(fā)送報文。

問題5:Lin IPDU和Can IPDU的trigger transmit有何異同?

答:

相同點:IPDU的trigger transmit都是最后調(diào)用Com_TriggerTransmit函數(shù)實現(xiàn)的。

不同點:Lin IPDU如果是非偶發(fā)幀(sporadic frame)在通過調(diào)度表發(fā)送時都是使用trigger transmit分方式發(fā)送的且COM -> PDUR對LIN IPDU的發(fā)送無影響;而Can IPDU的周期發(fā)送主要是通過COM -> PDUR向下傳遞IpduInfoPtr通過DIRECT方式發(fā)送的。

審核編輯:郭婷

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

    關(guān)注

    57

    文章

    2885

    瀏覽量

    466721
  • LIN
    LIN
    +關(guān)注

    關(guān)注

    4

    文章

    223

    瀏覽量

    40933

原文標題:Can/Lin報文的觸發(fā)發(fā)送(Trigger Transmit)

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

收藏 人收藏

    評論

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

    CAN報文流程解析

    CAN報文流程解析,直流充電樁上的CAN通訊解析過程
    發(fā)表于 03-24 14:03 ?0次下載

    使用CAN以及CANIF配置了S32K310的CAN驅(qū)動模塊,如何進行報文的接收呢?

    我使用CAN以及CANIF配置了S32K310的CAN驅(qū)動模塊。我知道調(diào)用CAN_Write()函數(shù)進行報文發(fā)送,但我存有以下的一些問題:
    發(fā)表于 03-21 07:24

    STM32G473 CAN發(fā)送數(shù)據(jù)出現(xiàn)丟幀怎么解決?

    配置CAN以FIFO模式發(fā)送,單片機周期發(fā)送不同ID的CAN報文,同時使用軟件ZCANPRO周期發(fā)送
    發(fā)表于 03-11 08:30

    CAN總線與LIN總線的區(qū)別

    隨著汽車電子系統(tǒng)的復(fù)雜性增加,車輛內(nèi)部通信的需求也在不斷增長。CAN總線和LIN總線作為兩種主要的車載通信協(xié)議,各自扮演著重要的角色。 1. 設(shè)計原理 CAN總線: 數(shù)據(jù)傳輸速率: CAN
    的頭像 發(fā)表于 11-12 10:13 ?4304次閱讀

    基于APM32E103 SPI轉(zhuǎn)CAN芯片MCP2515移植測試

    發(fā)送者以廣播形式把報文發(fā)送給所有接收者,節(jié)點在接收報文時,會經(jīng)過過濾器組根據(jù)標識符決定是否需要該報文,這種設(shè)計節(jié)省了 CPU 的開銷。
    的頭像 發(fā)表于 11-11 11:44 ?1054次閱讀
    基于APM32E103 SPI轉(zhuǎn)<b class='flag-5'>CAN</b>芯片MCP2515移植測試

    CAN總線知識】全面了解CAN總線協(xié)議

    基本概念1.報文總線上的信息以不同格式的報文發(fā)送,但長度有限?當總線開放時,任何連接的單元均可開始發(fā)送一個新報文?2.信息路由在
    的頭像 發(fā)表于 10-15 08:05 ?2115次閱讀
    【<b class='flag-5'>CAN</b>總線知識】全面了解<b class='flag-5'>CAN</b>總線協(xié)議

    CAN底層報文抓到了,卻不知怎么解析?以及如何看到信號運行狀態(tài)?

    本文介紹CAN總線中DBC文件的重要性及ZCANPRO如何實現(xiàn)DBC解析、數(shù)據(jù)發(fā)送和實時曲線分析,幫助您更有效地分析和利用CAN總線數(shù)據(jù)。在CAN總線的實際應(yīng)用中,我們經(jīng)常需要解析底層
    的頭像 發(fā)表于 09-30 08:05 ?2390次閱讀
    <b class='flag-5'>CAN</b>底層<b class='flag-5'>報文</b>抓到了,卻不知怎么解析?以及如何看到信號運行狀態(tài)?

    CAN總線的報文類型介紹

    CAN(Controller Area Network)總線是一種廣泛使用的串行通信協(xié)議,特別適用于汽車和工業(yè)自動化領(lǐng)域。CAN總線上的報文類型主要可以分為以下幾種,每種類型都有其特定的用途和格式。
    的頭像 發(fā)表于 09-03 14:20 ?3835次閱讀

    如何在CANtest上通過報文發(fā)送實現(xiàn)CCP指令的發(fā)送

    如題,我在CANtest上通過CAN報文發(fā)送了CCP指令\'CONNECT\'、\'SET-MTA\'和‘Upload’。前兩個指令的返回均沒有報錯,可\'Upload\'的返回直接
    發(fā)表于 08-13 10:46

    基于VB6.0 實現(xiàn) CAN信號收發(fā) Demo

    本文主要講的是,基于TSMaster實現(xiàn)TOSUN系列CAN/CANFD,LIN設(shè)備的操作。主要給大家介紹在TSMaster軟件里如何實現(xiàn)CAN信號收發(fā)Demo工程。本文關(guān)鍵詞:CAN
    的頭像 發(fā)表于 07-27 08:21 ?1198次閱讀
    基于VB6.0 實現(xiàn) <b class='flag-5'>CAN</b>信號收發(fā) Demo

    CYT2BL和SDL v8.0.0是否有可能實現(xiàn)以相同ID發(fā)送和接收CAN報文(RxID、TxID)的功能?

    我使用的是 CYT2BL 和 SDL v8.0.0。 我想發(fā)送和接收具有相同 ID 的 CAN 報文。 1.是否有可能實現(xiàn)以相同 ID 發(fā)送和接收
    發(fā)表于 07-23 06:12

    北斗短報文終端如何進行雙向通信?

    北斗短報文終端的雙向通信功能是基于中國北斗衛(wèi)星導航系統(tǒng)(BDS)的衛(wèi)星通信能力實現(xiàn)的。以下是北斗短報文終端進行雙向通信的具體過程和特點:北斗短報文終端一、雙向通信
    的頭像 發(fā)表于 07-12 11:19 ?1269次閱讀
    北斗短<b class='flag-5'>報文</b>終端如何進行雙向通信?

    TC3XX can發(fā)送報文,周期上下波動嚴重怎么解決?

    使用FULL CAN發(fā)送,周期調(diào)用Can_17_McmCan_lWriteMsgObj發(fā)送報文,查看周期是穩(wěn)定的,但到發(fā)出來和中斷觸發(fā)的時間會上下波動,而且波動越來越大。
    發(fā)表于 07-11 08:00

    試圖從CAN卡向TC375發(fā)送報文時,TC375始終收不到,為什么?

    我試圖在TC375上進行CAN收發(fā)測試,測試目的是完成TC375和CAN卡的通訊,現(xiàn)在我已經(jīng)成功地將CAN報文從TC375發(fā)送到了
    發(fā)表于 07-04 06:04

    TSMaster 中不同總線報文消息過濾的操作方式

    TSMaster軟件平臺支持對不同總線(CANLIN、FlexRay)報文和信號的過濾,包括全局接收過濾、數(shù)據(jù)流過濾、窗口過濾、字符串過濾、可編程過濾,針對不同的總線信號過濾器的使用方法基本相
    的頭像 發(fā)表于 06-22 08:21 ?2016次閱讀
    TSMaster 中不同總線<b class='flag-5'>報文</b>消息過濾的操作方式