chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

CAN DLC與實際發(fā)送數(shù)據(jù)長度有何關(guān)系

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

掃碼添加小助手

加入工程師交流群

Q1、Prepare Bus-Sleep Mode進(jìn)入Network Mode條件

A1CAN網(wǎng)絡(luò)管理中,Prepare Bus-Sleep Mode進(jìn)入Network Mode可以通過三種方式,如下所示:

pYYBAGMG4JCALkZ3AACUY_N4y2I973.png

由CanNm_RxIndication()方式進(jìn)入,即:在PBSM(Prepare Bus-Sleep Mode)下收到網(wǎng)絡(luò)管理報文方式進(jìn)入;

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

由CanNm_NetworkRequest()方式進(jìn)入,同CanNm_PassiveStartUp()方式,此方式也屬于上層請求行為。不同于CanNm_PassiveStartUp()方式,此方式表明當(dāng)前節(jié)點需要通信,需要主動喚醒網(wǎng)絡(luò)。比如前面提到的一種情況:VFC置位時,即可主動調(diào)用CanNm_NetworkRequest()接口進(jìn)入RMS狀態(tài)。

Q2:CAN DLC與實際發(fā)送數(shù)據(jù)長度關(guān)系

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

對于ClassicalFrame,DLC的長度有效范圍為0~8,對應(yīng)的發(fā)送數(shù)據(jù)長度為0~8 bytes,如果DLC長度≥8,則發(fā)送數(shù)據(jù)長度為8 byte。

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

pYYBAGMG4KiAOJJWAAEpyKwS8rM465.png

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

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

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

poYBAGMG4LyABLs6AACWlJ25nUA653.png

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

pYYBAGMG4M-ANOLkAADNj0UUJrU566.png

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

Q3:$3E 80發(fā)送時機(jī)

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

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

pYYBAGMG4OWAL-hbAABuuhxFelE773.png

如上,討論一種工況:

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

t1時刻,接收端中斷收到$3E 80,進(jìn)入中斷例程處理3E 80數(shù)據(jù);

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

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

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

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

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



審核編輯:劉清

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

    關(guān)注

    58

    文章

    3005

    瀏覽量

    471364
  • 網(wǎng)絡(luò)管理
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    29125
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    992

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    在物聯(lián)網(wǎng)設(shè)備面臨的多種安全威脅中,數(shù)據(jù)傳輸安全威脅和設(shè)備身份安全威脅本質(zhì)區(qū)別?

    在物聯(lián)網(wǎng)設(shè)備面臨的多種安全威脅中,數(shù)據(jù)傳輸安全威脅和設(shè)備身份安全威脅本質(zhì)區(qū)別,實際應(yīng)用中哪一種更難防范?
    發(fā)表于 11-18 06:41

    CAN集線器什么作用

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

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

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

    CAN如何進(jìn)行錄波,接收所有數(shù)據(jù)

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

    廣成科技藍(lán)牙轉(zhuǎn)CAN模塊的作用和應(yīng)用場景

    藍(lán)牙轉(zhuǎn)CAN設(shè)備通常內(nèi)置CAN通信接口電路和藍(lán)牙通信模塊。它實時監(jiān)聽CAN總線和藍(lán)牙總線,當(dāng)檢測到CAN總線上有數(shù)據(jù)時,會立即對
    的頭像 發(fā)表于 09-29 11:05 ?619次閱讀

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

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

    移植CANfestival,發(fā)現(xiàn)can無法接收數(shù)據(jù),為什么?

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

    【飛凌T527N開發(fā)板試用】CAN的使用

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

    如何使用20829 can-fd發(fā)送64字節(jié)擴(kuò)展標(biāo)識符數(shù)據(jù)幀?

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

    如何查找 TLE9881 接收幀的 DLC?

    我們的項目使用 TLE9881,并使用經(jīng)典 CAN 協(xié)議進(jìn)行通信。 您能幫我找到接收到的 CAN 幀的 DLC 嗎?
    發(fā)表于 07-15 06:42

    CAN總線協(xié)議網(wǎng)關(guān)模塊與數(shù)據(jù)采集器:工業(yè)自動化數(shù)據(jù)交互中樞

    、航空航天、船舶、醫(yī)療設(shè)備等眾多領(lǐng)域,并成為一種廣泛使用的工業(yè)標(biāo)準(zhǔn)通信協(xié)議。 CAN 總線的數(shù)據(jù)幀由幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC 場、應(yīng)答場和幀結(jié)束等部分組成。其中,仲裁場用于確定消息的優(yōu)先級,
    的頭像 發(fā)表于 05-09 10:10 ?647次閱讀
    <b class='flag-5'>CAN</b>總線協(xié)議網(wǎng)關(guān)模塊與<b class='flag-5'>數(shù)據(jù)</b>采集器:工業(yè)自動化<b class='flag-5'>數(shù)據(jù)</b>交互中樞

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

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

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

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

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

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

    CAN loopback模式測試

    ); HAL_NVIC_EnableIRQ(CAN_RX0_IRQn);。 發(fā)送和接收測試 發(fā)送報文:創(chuàng)建一個 CAN 報文結(jié)構(gòu)體,填寫標(biāo)準(zhǔn) ID、擴(kuò)展 ID、
    發(fā)表于 01-18 16:29