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

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

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

一秒鐘最高可以發(fā)送多少幀CANFD報文呢?

AGk5_ZLG_zhiyua ? 來源:ZLG開發(fā)者社區(qū) ? 作者:ZLG開發(fā)者社區(qū) ? 2022-07-28 11:47 ? 次閱讀

我們知道CANFD比CAN擁有更長的數(shù)據(jù)長度(最長64字節(jié)),更高的波特率(8Mbps甚至更高)。那么波特率更高,數(shù)據(jù)更長的CANFD,一秒鐘最高可以發(fā)送多少幀CANFD報文呢?

要想知道問題的答案,那么我們就要知道一幀CANFD報文由多少個位組成,再由具體波特率算出報文時間,最后就可以得出每秒能發(fā)送的幀數(shù)了。接下來,我們就一步步來算出答案。 要想知道CANFD報文由多少個位組成,那么我們就要了解CANFD幀結(jié)構(gòu),知道每個段占用位數(shù)從而得出CANFD報文位數(shù)。

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??幀結(jié)構(gòu)

6468cec2-0e27-11ed-ba43-dac502259ad0.png

如上圖所示,分別為CANFD標(biāo)準(zhǔn)幀和擴(kuò)展幀,其組成如下:

1. 幀起始:起始信號,由1個顯性位組成。2. 仲裁段:

標(biāo)準(zhǔn)幀仲裁段由11位ID和r1位(顯性)、IDE(顯性)組成,總共13位;

擴(kuò)展幀仲裁段由29位ID和SRR(隱性)、IDE(隱性)、r1位(顯性)組成,總共32位。

○SRR:替代CAN標(biāo)準(zhǔn)幀中的RTR位;

○IDE:擴(kuò)展幀標(biāo)志位;

○r1:保留位,為顯性;

3. 控制段:由EDL、r0、BRS、ESI、DLC總共8個位組成。

EDL:CANFD幀標(biāo)識,為隱性;

r0:保留位,為顯性;

BRS:位速率切換,該位顯性則仍采用仲裁域波特率;該位為隱性,則該位發(fā)送到采樣點后,采用數(shù)據(jù)域波特率;

ESI:錯誤狀態(tài)指示位,指示發(fā)送節(jié)點為主動錯誤狀態(tài)(顯性),還是被動錯誤狀態(tài)(隱性);

DLC:數(shù)據(jù)段長度指示,4個位組成。

4. 數(shù)據(jù)段:0~64字節(jié),也就是0~512個位。5. CRC段:由固定填充位FSB(6/7位)、填充位計數(shù)(4位)、CRC(17/21位)CRC界定符(1位)組成,總共28或33位組成。

6477b900-0e27-11ed-ba43-dac502259ad0.png

6. 固定填充位(FSB):CRC段中每4個位固定填充一個與上位相反的位。

采用CRC17時,F(xiàn)SB為6個位;

采用CRC21時,F(xiàn)SB為7個位;

7. 填充位計數(shù):由填充位計數(shù)(3位)和奇偶校驗位(1位)組成。

8. CRC:

報文長度小于16時,采用CRC17,17位組成;

報文長度大于16時,采用CRC21,21位組成。

9. CRC界定符:固定為隱性位;從該位采樣后,切換為仲裁域波特率。10. ACK段:由ACK位和ACK界定符位組成,總共2位。

ACK:接收節(jié)點應(yīng)答位,接收節(jié)點應(yīng)應(yīng)答顯性位;

ACK界定符,固定為隱性;

11. 幀結(jié)束:固定為7個隱性位。
12. 幀間隔:每次發(fā)送一幀報文后,需留3位時間作為幀間隔。

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??一幀CANFD報文位數(shù)

知道CANFD幀結(jié)構(gòu)組成后,我們可以算出:CANFD報文位數(shù)=幀起始(1位)+仲裁段(13/32位)+控制段(8位)+數(shù)據(jù)段(0~512位)+CRC段(28/33位)+ACK段(2位)+幀結(jié)束(7位)從上述公式中可以看出,影響報文位數(shù)主要為仲裁段(幀ID長度)和數(shù)據(jù)段(CRC段受數(shù)據(jù)段長度影響)。那么我們通過幀類型、幀長度組合出不同情況報文位數(shù):

標(biāo)準(zhǔn)幀,數(shù)據(jù)0字節(jié):

幀起始(1位)+仲裁段(13位)+控制段(8位)+數(shù)據(jù)段(0位)+CRC段(28位)+ACK段(2位)+幀結(jié)束(7位)=59位

標(biāo)準(zhǔn)幀,數(shù)據(jù)64字節(jié):

幀起始(1位)+仲裁段(13位)+控制段(8位)+數(shù)據(jù)段(512位)+CRC段(33位)+ACK段(2位)+幀結(jié)束(7位)=576位

擴(kuò)展幀,數(shù)據(jù)0字節(jié):

幀起始(1位)+仲裁段(32位)+控制段(8位)+數(shù)據(jù)段(0位)+CRC段(28位)+ACK段(2位)+幀結(jié)束(7位)=78位

擴(kuò)展幀,數(shù)據(jù)64字節(jié):

幀起始(1位)+仲裁段(13位)+控制段(8位)+數(shù)據(jù)段(512位)+CRC段(33位)+ACK段(2位)+幀結(jié)束(7位)=590位

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??仲裁域和數(shù)據(jù)域所占報文位數(shù)

由于CANFD采用了雙波特率形式:標(biāo)準(zhǔn)波特率(也稱仲裁域波特率)和數(shù)據(jù)域波特率,所以幀結(jié)構(gòu)中不同段采用的波特率也不同。

仲裁域波特率所占位數(shù):

幀起始(1位)+仲裁段(13位)+控制段的EDL、r0、BRS(3位)+ACK段(2位)+幀結(jié)束(7位)

數(shù)據(jù)域波特率所占位數(shù):

控制段的ESI、DLC(5位)+數(shù)據(jù)段(0~512位)+CRC段(28/33位)

主要說明的是,BRS位和CRC界定符位均同時使用了兩個波特率:

BRS位:由**仲裁域波特率*仲裁域采樣點+數(shù)據(jù)域波特率*(1 -仲裁域采樣點)**組成;

CRC界定符:由**數(shù)據(jù)域波特率*數(shù)據(jù)域采樣點+仲裁域波特率*(1 -數(shù)據(jù)域采樣點)**組成;

我們此處將BRS認(rèn)定采用仲裁域波特率、CRC界定符采用數(shù)據(jù)域波特率以方便計算。

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??位填充

當(dāng)然,上述報文位數(shù)中,還未包含填充位個數(shù)。在CAN/CANFD協(xié)議中規(guī)定:每5個相同的位就必須填充一個相反位,該位即為填充位。 我們知道字節(jié)0x55或0xAA,其二進(jìn)制分別為0101 0101或1010 1010,也就是每個位與上一位均相反,若此時ID和數(shù)據(jù)均為0x55或0xAA,則可以使填充位個數(shù)最少。 同理,字節(jié)0xFF或0x00,其二進(jìn)制位1111 1111或00000000,也就是所有位均一致,若此時ID和數(shù)據(jù)均為0x00或0xFF,此時報文的填充位個數(shù)最多。

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??不同類型報文所占位數(shù)

基于以上報文位數(shù)的計算,我們可以得出算出不同類型報文所占位數(shù),如下表所示。

65464de2-0e27-11ed-ba43-dac502259ad0.png

從上表可知: 當(dāng)報文為CANFD標(biāo)準(zhǔn)幀ID為0x555,數(shù)據(jù)長度為0時,報文位數(shù)最少,為59位。 當(dāng)報文為CANFD擴(kuò)展幀ID為0x0,數(shù)據(jù)長度為64字節(jié),數(shù)據(jù)全為0xFF時,報文位數(shù)最多,為703位。

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??CANFD報文時間計算

最后,我們就可以根據(jù)波特率算出不同類型報文時間了,計算公式如下: 報文時間=仲裁域位時間*仲裁域位數(shù)+數(shù)據(jù)域位時間*數(shù)據(jù)域位數(shù) 我們以位數(shù)最少的CANFD報文為例,在仲裁域波特率為1Mbps(位時間1us),數(shù)據(jù)域波特率為5Mbps(位時間200ns)時,其報文時間= 1us * 26 + 33 * 200ns = 32.6us。 那么一秒鐘最多可以發(fā)送報文呢?由于報文發(fā)送成功后,需經(jīng)過幀間隔(3個位)后才能發(fā)送下一幀報文,也就說仲裁段要在原來基礎(chǔ)上加3個位,就可以算出每秒發(fā)送多少幀了。那么上述位數(shù)最少報文的發(fā)送時間耗時= 1us *(26 + 3)+ 33 * 200ns = 35.6us,也就是1秒鐘最多可以發(fā)送1000000us / 35.6us = 28089幀報文。也就是說,1M/5M波特率下,發(fā)送CANFD標(biāo)準(zhǔn)加速幀,最多可以發(fā)送28089幀。

下面我們給出一些常用波特率下,不同類型報文每秒最多可以發(fā)送的CANFD報文幀數(shù)(下表中報文BRS位為1,ESI位為0),供大家參考。

500K/2M波特率

655b8478-0e27-11ed-ba43-dac502259ad0.png

1M/5M波特率

65694554-0e27-11ed-ba43-dac502259ad0.png

1M/8M波特率

6579ba24-0e27-11ed-ba43-dac502259ad0.png

645bb318-0e27-11ed-ba43-dac502259ad0.jpg??高性能CANFD接口卡

既然CANFD每秒最多可以發(fā)送28000幀報文(1M/5Mbps),那么什么樣的設(shè)備可以能擁有如此高性能的收發(fā)能力呢?答案就是,致遠(yuǎn)電子最新發(fā)布八通道CANFD卡——USBCANFD-800U。 USBCANFD-800U采用創(chuàng)新型的ARM+FPGA架構(gòu),使得多路CANFD同時實現(xiàn)高性能收發(fā)。即使在1M/5M波特率下,也能夠輕松實現(xiàn)滿載收發(fā)不丟幀。 此外,其還具有硬件采集CAN總線負(fù)載、微秒級別的收發(fā)報文時間戳、微秒級別的定時發(fā)送精度等一系列特性,以滿足用戶的高階需求。

審核編輯 :李倩

聲明:本文內(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)注

    57

    文章

    2665

    瀏覽量

    462526
  • 幀結(jié)構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    10647
  • CANFD
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    4892

原文標(biāo)題:【Z站推薦】CANFD每秒最多可以發(fā)送多少幀報文?

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    藍(lán)牙到底在傳輸什么?藍(lán)牙的工作原理

    藍(lán)牙的傳輸頻率是2.4 GHZ ,也就是一秒鐘之內(nèi)藍(lán)牙信號可以改變24億次。
    的頭像 發(fā)表于 07-14 11:48 ?1277次閱讀
    藍(lán)牙到底在傳輸什么?藍(lán)牙的工作原理

    CANFD_TopFIFO無法正常工作的原因?

    我閃爍了 CANFD_TopFIFO 示例代碼,但沒有得到預(yù)期的輸出。 在 FIFO 模式下測試 CAN Rx 時,即使接收多個報文,F(xiàn)IFO 編號也始終顯示為 0。 雖然我能正確接收報文
    發(fā)表于 07-03 08:06

    ESP32 BLE廣播功耗如何做到最低

    廣播間隔設(shè)置為500ms, 即一秒鐘廣播2次, 如何把功耗做到最低?最低可以到多少uA?
    發(fā)表于 06-21 17:11

    ESP32C6作為UDP Server,使用recvfrom無法及時收到第一幀報文的原因?如何解決?

    后調(diào)用recvfrom()阻塞等待接收報文。 在測試時發(fā)現(xiàn),AP在接收來自STA的第一幀UDP報文時recvfrom()無法及時返回結(jié)果,通常在STA發(fā)送
    發(fā)表于 06-06 07:34

    一幀CANFD報文由多少個位組成?

    要想知道CANFD報文由多少個位組成,那么我們就要了解CANFD結(jié)構(gòu),知道每個段占用位數(shù)從而得出CANFD
    的頭像 發(fā)表于 04-27 06:08 ?3132次閱讀
    <b class='flag-5'>一幀</b><b class='flag-5'>CANFD</b><b class='flag-5'>報文</b>由多少個位組成?

    STM32H743通過以太網(wǎng)連續(xù)發(fā)送圖片,段時間后,發(fā)送會很慢的原因?

    使用的是原子開發(fā)板資料中的軟件“串口 網(wǎng)絡(luò)攝像頭軟件”作為客戶端。我建了兩個線程個用來采集圖像和壓縮,個是以太網(wǎng)連接和發(fā)送壓縮圖片的,每個線程結(jié)束后加個osDelay(30);
    發(fā)表于 04-19 07:44

    CAN報文為什么會發(fā)送失?。?/a>

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

    CAN的報文格式和發(fā)送總流程

    在標(biāo)準(zhǔn)格式中,報文的起始位稱為起始(SOF),然后是由11位標(biāo)識符和遠(yuǎn)程發(fā)送請求位(RTR)組成的仲裁場。RTR位標(biāo)明是數(shù)據(jù)還是請求,
    發(fā)表于 04-11 10:07 ?7067次閱讀
    CAN的<b class='flag-5'>報文</b>格式和<b class='flag-5'>發(fā)送</b>總流程

    TC3xx連續(xù)發(fā)多CAN報文,超過40就死機(jī)了怎么解決?

    之前的應(yīng)用只發(fā)送幾個報文很正常,今天測試連續(xù)發(fā)送100(for循環(huán)內(nèi))時,發(fā)現(xiàn)最多只能連續(xù)發(fā)送40
    發(fā)表于 02-06 07:18

    CAN FD在發(fā)送報文時會有發(fā)不出去的現(xiàn)象怎么解決?

    現(xiàn)象描述: 在發(fā)送報文數(shù)據(jù)時,出現(xiàn)了較為嚴(yán)重的報文丟失現(xiàn)象。編寫測試程序,在for循環(huán)中循環(huán)發(fā)送id為0-7ff的
    發(fā)表于 02-02 07:48

    使用CYT2B75芯片CANFD模塊無法發(fā)送消息是什么原因?qū)е碌?b class='flag-5'>呢?

    接收到報文,Debug模式下,Tx buffer 直不為空,返回CY_CANFD_BAD_PARAM,發(fā)送失敗。 可以幫忙測試下嗎,是代
    發(fā)表于 02-02 06:57

    TRAVEO? T2G CYT2B7看門狗無法復(fù)位怎么解決?

    #define CY_WDT_DEFAULT_MATCH_VALUE(32000ul) // 1 sec when clk_lf = 32KHz 這是我的看門狗初始化代碼,程序并沒有一秒鐘復(fù)位
    發(fā)表于 02-01 08:35

    M467的CANFD通道如何使傳送效率最高

    現(xiàn)在我在用M467-64PIN 進(jìn)行解算與數(shù)據(jù)收發(fā); M467的CANFD通道,如何使傳送效率最高? 例如使用1M+5M傳輸模式,如何使傳送效率最高? 例如循環(huán)發(fā)送64 Byte的
    發(fā)表于 01-16 06:18

    一秒”讀懂串?dāng)_對信號傳輸時延的影響

    一秒”讀懂串?dāng)_對信號傳輸時延的影響
    的頭像 發(fā)表于 11-28 17:07 ?423次閱讀
    “<b class='flag-5'>一秒</b>”讀懂串?dāng)_對信號傳輸時延的影響

    CAN與CANFD的區(qū)別 CAN與CANFD如何轉(zhuǎn)換

    : 1. 傳輸速率:CAN的標(biāo)準(zhǔn)速率為1Mbps,而CANFD的數(shù)據(jù)傳輸速率可以達(dá)到2Mbps以上,這使得CANFD在傳輸大量數(shù)據(jù)時具有更高的效率和性能。 2. 數(shù)據(jù)長度:
    的頭像 發(fā)表于 11-22 16:37 ?4962次閱讀