精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

AUTOSAR LIN通信協議棧怎么保證NM報文先發送的?

汽車ECU開發 ? 來源:汽車電子嵌入式 ? 2023-02-02 10:19 ? 次閱讀

前言

最近在研究AUTOSAR通信協議棧的時候產生了以下幾個問題:

(1)Lin數據由linif的調度表觸發發送的話,com怎么控制Lin類型的PDU停止和發送了?

(2)怎么保證NM報文先發送的?

本文先梳理一遍通信協議棧的一些關鍵概念及重要機制,然后回答這些問題。

正文

1.Lin報文的發送機制

Lin報文的發送機制在<<Can/Lin報文的觸發發送(Trigger Transmit) >>一文中已經詳細講解過,這里再簡單回顧下。

16824096-a29a-11ed-bfe3-dac502259ad0.png

Lin報文的周期發送是通過調度表實現的,而Lin調度表存在于LinIf模塊,LinIf模塊在周期調用調度表的時候通過callback的方式實現IPDU的trigger transmit,也就是向上獲取到sdu數據,然后調用Lin_SendFrame發送報文。調度表中的報文都是需要周期發送處理的報文,對于偶發sporadic frame的發送,COM --> PDUR -->CanIf_Transmit中設置發送flag,實現偶發幀發送。我們這里主要討論Lin周期報文的發送機制。

1693418e-a29a-11ed-bfe3-dac502259ad0.png

16b34ed4-a29a-11ed-bfe3-dac502259ad0.png

LinIf模塊實現Lin調度表中報文的周期發送,且所有報文都是通過調用pdur模塊的PduR_TriggerTransmit的callback函數完成sdu數據的獲取。

16c5e59e-a29a-11ed-bfe3-dac502259ad0.png

16e314e8-a29a-11ed-bfe3-dac502259ad0.png

LinIf模塊調用PduR_LinIfTriggerTransmit函數來獲取PDU數據,如果獲取數據成功,則調用LinIf_SendFrame往LinDriver發送數據,如果獲取數據失敗則不會發送Lin報文。

那也就是說,如果找到PduR_LinIfTriggerTransmit返回失敗的原因也就找到了LinIf停止發送報文的原因。

繼續往下分析PduR_LinIfTriggerTransmit函數,PduR_LinIfTriggerTransmit --> Com_TriggerTransmit

分析Com_TriggerTransmit函數

16f2a282-a29a-11ed-bfe3-dac502259ad0.png

17044910-a29a-11ed-bfe3-dac502259ad0.png

Com_TriggerTransmit函數會首先會檢查PDU所在的PduGroup是否Started了,如果沒有Started,則Com_TriggerTransmit函數返回E_NOT_OK。、

也就是說如果PDU所在的PduGroup沒有Started則Com_TriggerTransmit返回E_NOT_OK,PduR_LinIfTriggerTransmit返回失敗,則LinIf_ManiFunction_<>不會往LinDriver發送數據。

2.NM報文和App報文的發送

171a1ae2-a29a-11ed-bfe3-dac502259ad0.png

如果我們使用Can網絡管理的話,那么Can網絡管理報文由CanNm模塊控制發送,而應用報文的發送是由Com模塊和ComM模塊協同管理發送的,那么問題就來了:

NM報文由CanNm模塊控制發送,App報文由Com/ComM模塊控制發送,那么我們怎么保證每次上電/Reset后NM報文首先發送到總線上去了

AUTOSAR標準里面沒有規定NM報文和APP報文誰先發送出去的配置。但是NM模塊提供了一個

Std_ReturnType Nm_GetState(

NetworkHandleType nmNetworkHandle,

Nm_StateType* nmStatePtr,

Nm_ModeType* nmModePtr

)

接口可以獲取當前NM模式和狀態,如果我們在請求ComM到FullCom前先確包NM模式進入到Network狀態的話,那么NM報文一定會在APP報文之前發送出去。

Example:

Nm_StateType NmCurrentState;


Nm_ModeType NmCurrentMode; Nm_GetState(ComMConf_ComMChannel_ComMChannel_Can_Network_0,&NmCurrentState,&NmCurrentMode);


if(( NM_MODE_SYNCHRONIZE == NmCurrentMode )||( NM_MODE_NETWORK == NmCurrentMode ))


{


    ComM_RequestComMode(ComMConf_ComMUser_ComMUser_Can_Network_0,COMM_FULL_COMMUNICATION);


    ComM_RequestComMode(ComMConf_ComMUser_ComMUser_Can_Network_1,COMM_FULL_COMMUNICATION);


}

3.問題回答

問題1:Lin數據由Linif的調度表觸發發送的話,com怎么控制所有Lin報文所在的PDU的停止和發送了?

:LinIf通過LinIf_MainFunction --> PduR_LinIfTriggerTransmit --> Com_TriggerTransmit獲取Lin報文的PDU數據,如果獲取失敗則不會調用LinIf_SendFrame發送報文。而Com_TriggerTransmit函數在獲取PDU數據時首先會檢查PDU所在的PduGroup是否Started,如果沒有Started則Com_TriggerTransmit返回E_NOT_OK,最終LinIf_MainFunction停止往驅動發送報文,也就停發Lin報文。也就是說,我們通過BswM調用Com模塊提供的Com_IpduGroupStart,Com_IpduGroupStop同樣能控制Lin報文的停止和發送。

問題2:怎么保證NM報文先發送的?

:需要手寫代碼或者通過BswM模式控制和仲裁實現。具體就是在請求APP報文所在Network進入到FullCom之前確保NM模式已經進入了NetWork狀態。






審核編輯:劉清

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

    關注

    145

    文章

    1936

    瀏覽量

    130636
  • AUTOSAR
    +關注

    關注

    10

    文章

    350

    瀏覽量

    21480
  • PDU
    PDU
    +關注

    關注

    0

    文章

    93

    瀏覽量

    16966
  • LIN
    LIN
    +關注

    關注

    4

    文章

    216

    瀏覽量

    40242
  • 通信協議棧
    +關注

    關注

    0

    文章

    7

    瀏覽量

    6167

原文標題:AUTOSAR LIN通信協議棧問題總結

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    串口通信協議解析 串口通信應用實例

    串口通信協議解析 串口通信協議是指規定了數據包的內容,內容包含了起始位、主體數據、校驗位及停止位,雙方需要約定一致的數據包格式才能正常收發數據的有關規范。以下是串口通信協議的介紹: 基本概念
    的頭像 發表于 11-21 17:03 ?318次閱讀

    如何使用CAN通信如何實現對變頻器的控制?

    ,優先級越高,但是這個幀ID怎么和MODBUS報文聯系?結合發送的數據。 和MODBUS 485通信協議報文對比一下這兩者有什么區別,該如何去發送
    發表于 11-14 18:33

    PROFINET通信協議是什么

    PROFINET通信協議是一種專為工業自動化領域設計的基于以太網的實時通信協議。以下是對PROFINET通信協議的詳細解析,包括其定義、特點、體系結構、工作原理、通信方式、應用領域以及
    的頭像 發表于 09-25 18:13 ?1134次閱讀

    簡單認識UART通信協議

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發傳輸器)通信協議是一種常見的串行通信協議,廣泛應用于計算機、嵌入式系統、傳感器、無線通信
    的頭像 發表于 07-25 18:07 ?1349次閱讀

    什么是北斗短報文功能?如何實現北斗短報文通信

    北斗短報文功能是指通過北斗衛星進行短報文通信的功能。這種功能允許用戶在沒有移動通信信號覆蓋的偏遠山區、海洋、沙漠等地帶,通過北斗短報文終端
    的頭像 發表于 05-25 10:16 ?4294次閱讀
    什么是北斗短<b class='flag-5'>報文</b>功能?如何實現北斗短<b class='flag-5'>報文</b><b class='flag-5'>通信</b>?

    RS485通信協議的特性和應用范圍

    隨著工業自動化和物聯網技術的飛速發展,數據通信協議的重要性日益凸顯。RS485通信協議作為一種廣泛應用于工業自動化領域的串行通信協議,其穩定性和可靠性得到了廣泛的認可。本文將對RS485通信協
    的頭像 發表于 05-23 16:27 ?1608次閱讀

    CAN報文為什么會發送失?。?/a>

    CAN總線調試過程中出現報文發送失敗。很多工程師都對此只知其一不知其二,今天我們就以CAN報文發送失敗的問題來做一次探討。在了解CAN報文
    的頭像 發表于 04-12 08:25 ?1900次閱讀
    CAN<b class='flag-5'>報文</b>為什么會<b class='flag-5'>發送</b>失敗?

    UART串口通信協議是什么?

    ,廣泛應用于嵌入式領域。 在UART串口通信協議中,數據以字節的形式進行傳輸。發送和接收端的通信流程如下: 1、通信波特率設置:發送端和接收
    的頭像 發表于 03-19 17:26 ?1264次閱讀

    AUTOSAR平臺研究報告:國產基礎軟件+芯片全方案加快量產

    2023年12月7日,AUTOSAR組織發布了最新版本AUTOSAR R23-11標準,從功能角度方面,更新主要集中在信息安全、功能安全以及通信協議等三個方面。
    的頭像 發表于 02-21 15:30 ?2873次閱讀
    <b class='flag-5'>AUTOSAR</b>平臺研究報告:國產基礎軟件+芯片全<b class='flag-5'>棧</b>方案加快量產

    串行通信協議的帶寬是指什么?

    在SPI和I2C等串行通信協議,兩者帶寬不一樣,這里的帶寬是指什么,傳輸速率還是其他什么?如果要求很高的傳輸速率,那么要求發送端要能很快的發送數據,要有很短的上升沿下降沿時間,高低位電平也維持很短
    發表于 02-08 18:04

    PROFINET協議通信技術介紹

    PROFINET協議是PROFINET通信協議的實現基礎,它由多個層次組成,每個層次都有特定的功能和作用。
    的頭像 發表于 02-03 16:22 ?2408次閱讀

    基于嵌入式OS的LwIP協議

    設計通信協議程序,需要具備內存管理、任務管理、進程間通信、信號量、時鐘、定時處理等功能,從頭開始難度巨大,而且容易出錯。
    發表于 02-03 16:19 ?788次閱讀
    基于嵌入式OS的LwIP<b class='flag-5'>協議</b><b class='flag-5'>棧</b>

    工業控制通信協議報文幀分別是什么樣的?

    那樣先存儲起來,不知道我對同步異步通信的理解是否正確? 2、這些協議下的通信設備發送數據的格式多種多樣,請問每種協議
    發表于 01-19 14:46

    有關通信協議時一些問題?

    工業上應用到許多種協議,按通信同一時刻發送的數據位數分為串行通信和并行通信,首先我見并行通信多在
    發表于 01-14 00:58

    從Profinet到CCLink:工業通信協議的轉換實踐

    本文將探討從Profinet協議轉換到CCLink協議的過程,包括轉換的必要性、網關的使用、轉換步驟以及注意事項。通過了解這些內容,能夠更好地理解工業通信協議轉換的實際操作,并為設備通信
    發表于 12-15 14:26