国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

CAN DLC與實際發送數據長度有何關系

冬至配餃子 ? 來源:開心果 Need Car ? 作者:開心果 Need Car ? 2022-08-25 10:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Q1、Prepare Bus-Sleep Mode進入Network Mode條件

A1CAN網絡管理中,Prepare Bus-Sleep Mode進入Network Mode可以通過三種方式,如下所示:

pYYBAGMG4JCALkZ3AACUY_N4y2I973.png

由CanNm_RxIndication()方式進入,即:在PBSM(Prepare Bus-Sleep Mode)下收到網絡管理報文方式進入;

由CanNm_PassiveStartUp()方式進入。調用CanNm_PassiveStartUp()接口,表明網絡需要被動喚醒,收到網絡管理報文也屬于被動接收,和CanNm_RxIndication()方式進入不一樣嗎?這里說一下個人理解:在PBSM模式下,ECU依然有接收報文的能力,如果接收到NM Msg,可以通過CanNm_RxIndication()接收,喚醒網絡;如果收到特定的應用報文(比如:包含KL15信號的應用報文)或者診斷報文,也想把網絡喚醒,顯然非網絡管理報文不會通過CanNm_RxIndication()接口接收,如果想讓非網絡管理喚醒網絡,此時就可以讓上層主動調用CanNm_PassiveStartUp()接口,進而喚醒網絡;

由CanNm_NetworkRequest()方式進入,同CanNm_PassiveStartUp()方式,此方式也屬于上層請求行為。不同于CanNm_PassiveStartUp()方式,此方式表明當前節點需要通信,需要主動喚醒網絡。比如前面提到的一種情況:VFC置位時,即可主動調用CanNm_NetworkRequest()接口進入RMS狀態。

Q2:CAN DLC與實際發送數據長度關系

A2:DLC(Data Length Code),一幀CAN報文中,發送數據的長度,用4個Bit表示。

對于ClassicalFrame,DLC的長度有效范圍為0~8,對應的發送數據長度為0~8 bytes,如果DLC長度≥8,則發送數據長度為8 byte。

對于FD frame,DLC不僅可以等于0~8,還可以等于9~F,對應的數據長度分為12、16、20、24、32、48、64。如下所示:

pYYBAGMG4KiAOJJWAAEpyKwS8rM465.png

對于ClassicalFrame,如果設置DLC = 4,實際在總線上傳輸的數據長度是4 byte還是8 byte?答:4 byte。雖然可以這樣設置,但是工程實際中,很少這樣用,一幀報文只傳輸4個數據或者更少,會降低有效數據負載,效率低。

注意:假設傳輸一個ClassicalFrame,雖然總線只傳輸4 byte數據,但是CAN模塊消耗的硬件資源(RAM),實際是8 byte(eg:tc3xx)。

發送一幀CAN報文,對應一個Tx Buffer Element,在Tx Buffer Element中,根據發送CAN報文的類型決定消耗的DB(Data Buffer)大小,如下所示:

poYBAGMG4LyABLs6AACWlJ25nUA653.png

一幀CAN報文消耗多大的DB呢?DB空間的消耗,由TXESC.TBDS決定,因此,DB最小需要8 byte。如下所示:

pYYBAGMG4M-ANOLkAADNj0UUJrU566.png

什么意思呢?就是在硬件配置階段,即使配置DLC = 4,但是一幀CAN報文也必須消耗8 byte的硬件RAM資源。而數據發送到總線時,只發送4 byte的數據。

Q3:$3E 80發送時機

A3:$3E 80的主要作用在于維持節點的會話狀態,即:將節點維持在非默認會話。工程中,基于UDS軟件升級過程中,Tester或者Gateway節點會使用功能尋址周期性發送$3E 80。何時發送$3E 80更合適呢?

本文主要想討論$36服務過程中,何時發送$3E 80更恰當。軟件升級過程中,一個$36 Block會發送大量數據,即:多幀傳輸,在多幀傳輸的過程中,發送一個$3E 80是否可行?答:可以,但是會帶來風險。為什么這樣說呢?多幀傳輸過程,一般使用物理尋址,針對特定節點升級,在多幀傳輸的過程中,發送一幀功能尋址的$3E 80,且中斷接收,如果處理3E 80的中斷例程耗時過多,導致連續幀會被延遲處理,連續幀被延時時間過長會導致接收丟幀的問題,即:下一個連續幀覆蓋被延時處理的連續幀。以500Kbps通信的經典CAN為例,如果允許上位機/Gateway節點連續發送,1ms內可以發送三幀報文,也就是說:如果接收端沒有在300us左右的時間內處理完連續幀,就可能會導致連續幀覆蓋的問題,即:接收端接收丟幀。

pYYBAGMG4OWAL-hbAABuuhxFelE773.png

如上,討論一種工況:

t0時刻,接收端中斷收到$2A XxXx...(接收完成),進入中斷例程處理$2A XxXx...數據(主要是通知上層Copy數據);

t1時刻,接收端中斷收到$3E 80,進入中斷例程處理3E 80數據;

t2時刻,接收端中斷收到連續幀$2BXxXx...,由于同一中斷(均是接收中斷,優先級一樣)正在執行,2BXx Xx...數據暫時不能處理;

t3時刻,3E 80數據處理完成,同時收到連續幀$2CXx Xx...,如果$2BXx Xx...和$2CXx Xx...使用同一個硬件緩存區,會導致連續幀$2CXx Xx...覆蓋連續幀$2BXxXx...的工況。所以,為避免接收丟幀,接收緩存區一般會配置多一些,一般工程中會將資源全部使用或者用FIFO方式接收。

理想工況,這種連續幀插入3E 80的行為不會出現問題(中斷例程不要處理大量邏輯),但在工程實際中,偶爾會遇到并行發送功能尋址$3E 80,導致連續幀發送問題的Bug。

一般在處理多幀發送過程中,如果上位機或者Gateway節點發送功能尋址的$3E 80,會選擇在連續幀結束時(發送完最后一幀連續幀)發送。

注意:需求中,有時會約束$36服務的P4 server_max為5000ms,即:只允許接收節點(Server)回復一個NRC0x78,為什么呢?如果S3超時時間設置為5000ms,且$3E 80放在連續幀的最后發送,當前Block傳輸用時接近5000ms,如果再不發送一幀$3E 80,則其他節能可能會因S3超時回到默認會話。



審核編輯:劉清

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

    關注

    59

    文章

    3067

    瀏覽量

    472760
  • 網絡管理
    +關注

    關注

    0

    文章

    127

    瀏覽量

    29350
  • 上位機
    +關注

    關注

    27

    文章

    1002

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【瑞薩FPB-RA6E2試用】【原創】【瑞薩RA × Zephyr開發板評測】+進階級任務測試之CAN發送數據測試

    前面進行了入門級任務的測試,本次進行進階級任務之中的CAN發送數據的測試。 由于板載沒有can接口,所以需要外接can收發器轉接板,如下圖:
    發表于 12-31 13:32

    在物聯網設備面臨的多種安全威脅中,數據傳輸安全威脅和設備身份安全威脅本質區別?

    在物聯網設備面臨的多種安全威脅中,數據傳輸安全威脅和設備身份安全威脅本質區別,實際應用中哪一種更難防范?
    發表于 11-18 06:41

    CAN集線器什么作用

    CAN集線器作為工業通信網絡中的關鍵設備,主要用于解決CAN總線在實際應用中遇到的 通信距離有限、多速率網絡難兼容、以及數據冗余導致負載過高 等問題。在工業自動化、汽車制造、軌道交通等
    的頭像 發表于 11-14 14:42 ?424次閱讀
    <b class='flag-5'>CAN</b>集線器<b class='flag-5'>有</b>什么作用

    pipe發送超過16384長度,會被截斷怎么解決?

    我在使用paho_mqtt 發送數據的時候,短包沒問題,發現數據長度超過16384就會崩潰; 追查之下發現pipe 寫入數據以后,一次性讀出
    發表于 10-11 06:18

    CAN如何進行錄波,接收所有數據?

    。但是還是只能接收到過濾的傳入的數據參數內容,實際我并希望他啟用過濾。 3)RT_CAN_CMD_SET_FILTER 看can.c文件下,是
    發表于 10-09 09:12

    廣成科技藍牙轉CAN模塊的作用和應用場景

    藍牙轉CAN設備通常內置CAN通信接口電路和藍牙通信模塊。它實時監聽CAN總線和藍牙總線,當檢測到CAN總線上有數據時,會立即對
    的頭像 發表于 09-29 11:05 ?968次閱讀

    CAN發送只能使用中斷或者DMA,為什么?

    今天看了CAN發送的底層配置發現,rtt的CAN設備發送好像只能選擇DMA或者中斷的方式進行發送,這種設定是為什么呢? rt_device
    發表于 09-25 07:19

    移植CANfestival,發現can無法接收數據,為什么?

    通過can的上位機來發送報文,發現如下的情況 無論發送任何數據,發現rt_device_read返回值是0,查了一下函數返回值發現讀取失敗 然后我在下面一行打印接收到的
    發表于 09-11 07:46

    【飛凌T527N開發板試用】CAN的使用

    can1:用命令行發送 先使能can1,然后設置發送長度。 執行 cangen就可以開始發送
    發表于 08-19 17:27

    如何使用20829 can-fd發送64字節擴展標識符數據幀?

    numberOfFIFOElements更改為16。 使用兩個20829 EVK進行測試,最大傳輸數據大小為15個字節。DLC范圍是0~15 uint32數據,但實際上,另一個節點每幀
    發表于 08-04 06:56

    如何查找 TLE9881 接收幀的 DLC?

    我們的項目使用 TLE9881,并使用經典 CAN 協議進行通信。 您能幫我找到接收到的 CAN 幀的 DLC 嗎?
    發表于 07-15 06:42

    CAN總線協議網關模塊與數據采集器:工業自動化數據交互中樞

    、航空航天、船舶、醫療設備等眾多領域,并成為一種廣泛使用的工業標準通信協議。 CAN 總線的數據幀由幀起始、仲裁場、控制場、數據場、CRC 場、應答場和幀結束等部分組成。其中,仲裁場用于確定消息的優先級,
    的頭像 發表于 05-09 10:10 ?830次閱讀
    <b class='flag-5'>CAN</b>總線協議網關模塊與<b class='flag-5'>數據</b>采集器:工業自動化<b class='flag-5'>數據</b>交互中樞

    USB3014讀取請求為16Kbytes但實際數據長度只有64bytes時,這會影響USB性能嗎?

    PC 發送 64 個字節,并且在 PC 端,我的讀取請求大約是 16K 字節,那么我已經得到了 64 個字節,這是沒問題的。 但我想知道,當讀取請求為16Kbytes但實際數據長度
    發表于 05-09 06:26

    STM32G473 CAN發送數據出現丟幀怎么解決?

    發現都有丟幀的情況。 調試如下:固定發送報文數量,并仿真,對將要發送數據添加到郵箱的成功狀態進行計數。 第一種情況:等待所有發送郵箱都為空,再添加報文,出現丟幀。發20000幀,成功
    發表于 03-11 08:30

    關于STM32 CAN通信發送函數HAL_CAN_AddTxMessage()的最后一個參數填0和定義一個變量取地址的問題求解

    問題: 關于STM32 CAN通信 發送函數 HAL_CAN_AddTxMessage()的最后一個參數填0和定義一個變量取地址的問題,如果直接傳0,我實驗發現 STM32F103C8T6 會出
    發表于 03-11 08:22