我們知道CANFD比CAN擁有更長(zhǎng)的數(shù)據(jù)長(zhǎng)度(最長(zhǎng)64字節(jié)),更高的波特率(8Mbps甚至更高)。那么波特率更高,數(shù)據(jù)更長(zhǎng)的CANFD,一秒鐘最高可以發(fā)送多少幀CANFD報(bào)文呢?
要想知道問(wèn)題的答案,那么我們就要知道一幀CANFD報(bào)文由多少個(gè)位組成,再由具體波特率算出報(bào)文時(shí)間,最后就可以得出每秒能發(fā)送的幀數(shù)了。接下來(lái),我們就一步步來(lái)算出答案。
要想知道CANFD報(bào)文由多少個(gè)位組成,那么我們就要了解CANFD幀結(jié)構(gòu),知道每個(gè)段占用位數(shù)從而得出CANFD報(bào)文位數(shù)。
幀結(jié)構(gòu)
如上圖所示,分別為CANFD標(biāo)準(zhǔn)幀和擴(kuò)展幀,其組成如下:
1. 幀起始:起始信號(hào),由1個(gè)顯性位組成。
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個(gè)位組成。
EDL:CANFD幀標(biāo)識(shí),為隱性;
r0:保留位,為顯性;
BRS:位速率切換,該位顯性則仍采用仲裁域波特率;該位為隱性,則該位發(fā)送到采樣點(diǎn)后,采用數(shù)據(jù)域波特率;
ESI:錯(cuò)誤狀態(tài)指示位,指示發(fā)送節(jié)點(diǎn)為主動(dòng)錯(cuò)誤狀態(tài)(顯性),還是被動(dòng)錯(cuò)誤狀態(tài)(隱性);
DLC:數(shù)據(jù)段長(zhǎng)度指示,4個(gè)位組成。
4. 數(shù)據(jù)段:0~64字節(jié),也就是0~512個(gè)位。
5. CRC段:由固定填充位FSB(6/7位)、填充位計(jì)數(shù)(4位)、CRC(17/21位)CRC界定符(1位)組成,總共28或33位組成。
6. 固定填充位(FSB):CRC段中每4個(gè)位固定填充一個(gè)與上位相反的位。
采用CRC17時(shí),F(xiàn)SB為6個(gè)位;
采用CRC21時(shí),F(xiàn)SB為7個(gè)位;
7. 填充位計(jì)數(shù):由填充位計(jì)數(shù)(3位)和奇偶校驗(yàn)位(1位)組成。
8. CRC:
報(bào)文長(zhǎng)度小于16時(shí),采用CRC17,17位組成;
報(bào)文長(zhǎng)度大于16時(shí),采用CRC21,21位組成。
9. CRC界定符:固定為隱性位;從該位采樣后,切換為仲裁域波特率。
10. ACK段:由ACK位和ACK界定符位組成,總共2位。
ACK:接收節(jié)點(diǎn)應(yīng)答位,接收節(jié)點(diǎn)應(yīng)應(yīng)答顯性位;
ACK界定符,固定為隱性;
11. 幀結(jié)束:固定為7個(gè)隱性位。
12. 幀間隔:每次發(fā)送一幀報(bào)文后,需留3位時(shí)間作為幀間隔。
一幀CANFD報(bào)文位數(shù)
知道CANFD幀結(jié)構(gòu)組成后,我們可以算出:
CANFD報(bào)文位數(shù)=幀起始(1位)+仲裁段(13/32位)+控制段(8位)+數(shù)據(jù)段(0~512位)+CRC段(28/33位)+ACK段(2位)+幀結(jié)束(7位)
從上述公式中可以看出,影響報(bào)文位數(shù)主要為仲裁段(幀ID長(zhǎng)度)和數(shù)據(jù)段(CRC段受數(shù)據(jù)段長(zhǎng)度影響)。那么我們通過(guò)幀類型、幀長(zhǎng)度組合出不同情況報(bào)文位數(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位
仲裁域和數(shù)據(jù)域所占報(bào)文位數(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位)
主要說(shuō)明的是,BRS位和CRC界定符位均同時(shí)使用了兩個(gè)波特率:
BRS位:由**仲裁域波特率*仲裁域采樣點(diǎn)+數(shù)據(jù)域波特率*(1 -仲裁域采樣點(diǎn))**組成;
CRC界定符:由**數(shù)據(jù)域波特率*數(shù)據(jù)域采樣點(diǎn)+仲裁域波特率*(1 -數(shù)據(jù)域采樣點(diǎn))**組成;
我們此處將BRS認(rèn)定采用仲裁域波特率、CRC界定符采用數(shù)據(jù)域波特率以方便計(jì)算。
位填充
當(dāng)然,上述報(bào)文位數(shù)中,還未包含填充位個(gè)數(shù)。在CAN/CANFD協(xié)議中規(guī)定:每5個(gè)相同的位就必須填充一個(gè)相反位,該位即為填充位。
我們知道字節(jié)0x55或0xAA,其二進(jìn)制分別為0101 0101或1010 1010,也就是每個(gè)位與上一位均相反,若此時(shí)ID和數(shù)據(jù)均為0x55或0xAA,則可以使填充位個(gè)數(shù)最少。
同理,字節(jié)0xFF或0x00,其二進(jìn)制位1111 1111或00000000,也就是所有位均一致,若此時(shí)ID和數(shù)據(jù)均為0x00或0xFF,此時(shí)報(bào)文的填充位個(gè)數(shù)最多。
不同類型報(bào)文所占位數(shù)
基于以上報(bào)文位數(shù)的計(jì)算,我們可以得出算出不同類型報(bào)文所占位數(shù),如下表所示。
從上表可知:
當(dāng)報(bào)文為CANFD標(biāo)準(zhǔn)幀ID為0x555,數(shù)據(jù)長(zhǎng)度為0時(shí),報(bào)文位數(shù)最少,為59位。
當(dāng)報(bào)文為CANFD擴(kuò)展幀ID為0x0,數(shù)據(jù)長(zhǎng)度為64字節(jié),數(shù)據(jù)全為0xFF時(shí),報(bào)文位數(shù)最多,為703位。
CANFD報(bào)文時(shí)間計(jì)算
最后,我們就可以根據(jù)波特率算出不同類型報(bào)文時(shí)間了,計(jì)算公式如下:
報(bào)文時(shí)間=仲裁域位時(shí)間*仲裁域位數(shù)+數(shù)據(jù)域位時(shí)間*數(shù)據(jù)域位數(shù)
我們以位數(shù)最少的CANFD報(bào)文為例,在仲裁域波特率為1Mbps(位時(shí)間1us),數(shù)據(jù)域波特率為5Mbps(位時(shí)間200ns)時(shí),其報(bào)文時(shí)間= 1us * 26 + 33 * 200ns = 32.6us。
那么一秒鐘最多可以發(fā)送報(bào)文呢?由于報(bào)文發(fā)送成功后,需經(jīng)過(guò)幀間隔(3個(gè)位)后才能發(fā)送下一幀報(bào)文,也就說(shuō)仲裁段要在原來(lái)基礎(chǔ)上加3個(gè)位,就可以算出每秒發(fā)送多少幀了。那么上述位數(shù)最少報(bào)文的發(fā)送時(shí)間耗時(shí)= 1us *(26 + 3)+ 33 * 200ns = 35.6us,也就是1秒鐘最多可以發(fā)送1000000us / 35.6us = 28089幀報(bào)文。也就是說(shuō),1M/5M波特率下,發(fā)送CANFD標(biāo)準(zhǔn)加速幀,最多可以發(fā)送28089幀。
下面我們給出一些常用波特率下,不同類型報(bào)文每秒最多可以發(fā)送的CANFD報(bào)文幀數(shù)(下表中報(bào)文BRS位為1,ESI位為0),供大家參考。
500K/2M波特率
1M/5M波特率
1M/8M波特率
審核編輯:黃飛
-
CAN
+關(guān)注
關(guān)注
57文章
2760瀏覽量
463993 -
波特率
+關(guān)注
關(guān)注
2文章
308瀏覽量
34212 -
幀結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
13瀏覽量
10678 -
CANFD
+關(guān)注
關(guān)注
0文章
58瀏覽量
4975
原文標(biāo)題:CANFD每秒最多可發(fā)多少幀報(bào)文是算出來(lái)的~
文章出處:【微信號(hào):嵌入式情報(bào)局,微信公眾號(hào):嵌入式情報(bào)局】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論