<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

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

星星科技指導員 ? 來源:焉知汽車 ? 2024-04-27 06:08 ? 次閱讀

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

要想知道問題的答案,那么我們就要知道一幀CANFD報文由多少個位組成,再由具體波特率算出報文時間,最后就可以得出每秒能發送的幀數了。接下來,我們就一步步來算出答案。

要想知道CANFD報文由多少個位組成,那么我們就要了解CANFD幀結構,知道每個段占用位數從而得出CANFD報文位數。

幀結構

865178e4-fed6-11ee-a297-92fbcf53809c.png

如上圖所示,分別為CANFD標準幀和擴展幀,其組成如下:

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

2. 仲裁段:

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

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

○ SRR:替代CAN標準幀中的RTR位;

○ IDE:擴展幀標志位;

○ r1:保留位,為顯性;

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

EDL:CANFD幀標識,為隱性;

r0:保留位,為顯性;

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

ESI:錯誤狀態指示位,指示發送節點為主動錯誤狀態(顯性),還是被動錯誤狀態(隱性);

DLC:數據段長度指示,4個位組成。

4. 數據段:0~64字節,也就是0~512個位。

5. CRC段:由固定填充位FSB(6/7位)、填充位計數(4位)、CRC(17/21位)CRC界定符(1位)組成,總共28或33位組成。

86553650-fed6-11ee-a297-92fbcf53809c.png

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

采用CRC17時,FSB為6個位;

采用CRC21時,FSB為7個位;

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

8. CRC:

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

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

9. CRC界定符:固定為隱性位;從該位采樣后,切換為仲裁域波特率。

10. ACK段:由ACK位和ACK界定符位組成,總共2位。

ACK:接收節點應答位,接收節點應應答顯性位;

ACK界定符,固定為隱性;

11. 幀結束:固定為7個隱性位。

12. 幀間隔:每次發送一幀報文后,需留3位時間作為幀間隔。

一幀CANFD報文位數

知道CANFD幀結構組成后,我們可以算出:

CANFD報文位數=幀起始(1位)+仲裁段(13/32位)+控制段(8位)+數據段(0~512位)+CRC段(28/33位)+ACK段(2位)+幀結束(7位)

從上述公式中可以看出,影響報文位數主要為仲裁段(幀ID長度)和數據段(CRC段受數據段長度影響)。那么我們通過幀類型、幀長度組合出不同情況報文位數:

標準幀,數據0字節:

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

標準幀,數據64字節:

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

擴展幀,數據0字節:

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

擴展幀,數據64字節:

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

仲裁域和數據域所占報文位數

由于CANFD采用了雙波特率形式:標準波特率(也稱仲裁域波特率)和數據域波特率,所以幀結構中不同段采用的波特率也不同。

仲裁域波特率所占位數:

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

數據域波特率所占位數:

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

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

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

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

我們此處將BRS認定采用仲裁域波特率、CRC界定符采用數據域波特率以方便計算。

位填充

當然,上述報文位數中,還未包含填充位個數。在CAN/CANFD協議中規定:每5個相同的位就必須填充一個相反位,該位即為填充位。

我們知道字節0x55或0xAA,其二進制分別為0101 0101或1010 1010,也就是每個位與上一位均相反,若此時ID和數據均為0x55或0xAA,則可以使填充位個數最少。

同理,字節0xFF或0x00,其二進制位1111 1111或00000000,也就是所有位均一致,若此時ID和數據均為0x00或0xFF,此時報文的填充位個數最多。

不同類型報文所占位數

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

86716492-fed6-11ee-a297-92fbcf53809c.png

從上表可知:

當報文為CANFD標準幀ID為0x555,數據長度為0時,報文位數最少,為59位。

當報文為CANFD擴展幀ID為0x0,數據長度為64字節,數據全為0xFF時,報文位數最多,為703位。

CANFD報文時間計算

最后,我們就可以根據波特率算出不同類型報文時間了,計算公式如下:

報文時間=仲裁域位時間*仲裁域位數+數據域位時間*數據域位數

我們以位數最少的CANFD報文為例,在仲裁域波特率為1Mbps(位時間1us),數據域波特率為5Mbps(位時間200ns)時,其報文時間= 1us * 26 + 33 * 200ns = 32.6us。

那么一秒鐘最多可以發送報文呢?由于報文發送成功后,需經過幀間隔(3個位)后才能發送下一幀報文,也就說仲裁段要在原來基礎上加3個位,就可以算出每秒發送多少幀了。那么上述位數最少報文的發送時間耗時= 1us *(26 + 3)+ 33 * 200ns = 35.6us,也就是1秒鐘最多可以發送1000000us / 35.6us = 28089幀報文。也就是說,1M/5M波特率下,發送CANFD標準加速幀,最多可以發送28089幀。

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

500K/2M波特率

86849b02-fed6-11ee-a297-92fbcf53809c.png

1M/5M波特率

868b29ea-fed6-11ee-a297-92fbcf53809c.png

1M/8M波特率

86986f60-fed6-11ee-a297-92fbcf53809c.png

審核編輯:黃飛

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

    關注

    56

    文章

    2467

    瀏覽量

    459223
  • 波特率
    +關注

    關注

    2

    文章

    280

    瀏覽量

    33759
  • 幀結構
    +關注

    關注

    0

    文章

    13

    瀏覽量

    10620
  • CANFD
    +關注

    關注

    0

    文章

    43

    瀏覽量

    4803

原文標題:CANFD每秒最多可發多少幀報文是算出來的~

文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    怎么把視一幀一幀的播放并且可以用鼠標獲得某點的...

    labview 怎么把視一幀一幀的播放并且可以用鼠標獲得某點的坐標并保存坐標值?
    發表于 12-01 13:48

    如何確保平鋪順序結構上一幀數據都處理完才進入下一幀

    在進行數據處理時,下一幀會用到上一幀計算出的數據,但是上一幀有好多輸出的時候,有些數據并沒有處理出來,就進入了下一幀,導致最后結果錯誤。該怎么辦么?加了等待時間什么的,也不管用…
    發表于 02-27 10:39

    有關串行通信里面一幀一幀發送數據的問題?。。?!

    我想實現一幀一幀的發送數據,一幀發送數據的長度可以自己定義,請問要怎么修改一幀發送數據的長度???怎么實現???
    發表于 07-26 10:29

    RS-485通信時一幀數據中包含多少個字節的有效數據合適呢?

    大家好,想問下有沒有用單片機做過RS-485通信的呢?我現在通過自定義的RS-485協議進行多機通信,這個時候的協議中的有效數據為多少個字節比較合適呢?我看有的人說一幀數據中包含的有效字節數過多,會發生滑位,想請有經驗的指點
    發表于 04-06 09:38

    關于CAN多發送的問題

    現在我的設備需要發送3共24個字節的數據給上位機,但是在上位機的通訊要求中只給了報文ID 0X1FD08063,我以前只試過用三個報文ID發送三
    發表于 12-19 16:42

    請問STM32F4的OTG模塊一幀內32最大可以傳輸多少字節給PC?

    我使用的是OTG_FS的bulk方式傳輸,PC為主機,單片機為設備。1:一幀內32最大可以傳輸多少字節給PC?一幀內可以傳輸多少次事務,次事務傳輸可以傳輸多少個數據包,
    發表于 11-14 09:03

    can總線報文的數據結構原理

    組成。起始標志數據的開始(遠程同樣具有起始),它僅
    發表于 12-17 10:59

    為什么以太網發送時2變為了一幀?

    在調試網口的過程中發現應該是2的數據接收過程中變為了一幀硬件平臺 為stm32f407+DM9161 在定時器內 1秒鐘 調用次tcp_write函數發送個固定好的字符竄 求大神
    發表于 10-30 23:33

    CAN報文定義

    協議中CAN報文種類報文傳輸過程中有:數據、遠程、錯誤、過載
    發表于 09-14 09:23

    CANFD的發送模式解析

    + TXFIFO。三者的區別如下:1. TXBUFF 發送模式TXBUFF 的發送方式為專用發送發送緩存區,每個換緩存區僅能保存一幀報文,根據對 Message RAM 的配置可以選擇將報文放入指定編號的發送
    發表于 03-21 14:35

    CANFD的接收模式簡析

    ,定要明白濾波器只在接收報文時生效,發送模式與濾波器無關。通過對 Message RAM 的配置可知,CANFD 的濾波器配置可以分為兩套,分別是:標準標識符。(ID范圍:0x00
    發表于 04-14 15:43

    串口一幀數據到底什么意思,比如接收串漢字個漢字算一幀嗎?

    關于串口接收發送問題,一幀數據到底什么意思,比如接收串漢字,個漢字算一幀嗎?還是不固定。搞不懂
    發表于 09-26 08:03

    【Z站推薦】CANFD每秒最多可以發送多少幀報文?

    我們知道CANFD比CAN擁有更長的數據長度(最長64字節),更高的波特率(8Mbps甚至更高)。那么波特率更高,數據更長的CANFD,一秒鐘最高可以發送多少幀CANFD報文呢?我們知
    的頭像 發表于 07-29 09:34 ?1360次閱讀
    【Z站推薦】<b class='flag-5'>CANFD</b>每秒最多可以發送多少幀<b class='flag-5'>報文</b>?

    一幀CAN報文多少字節

    一幀CAN FD報文位數 根據CAN FD幀結構組成,可以算出一幀CAN FD報文位數: CAN FD
    的頭像 發表于 07-18 10:48 ?4797次閱讀

    CAN FD報文時間計算

    1us),數據域波特率為5Mbps(位時間200ns)時,其報文時間 = 1us * 26 + 33 * 200ns = 32.6us。 那么一秒鐘最多可以發送報文呢?由于報文發送成功后,需經過幀間隔(3
    的頭像 發表于 07-18 10:49 ?1508次閱讀
    CAN FD<b class='flag-5'>報文</b>時間計算
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>