很多人了解過CANFD,可能知道CANFD CRC段與傳統CAN CRC差距是CRC多項式不同,但實際CANFD CRC段與傳統CAN的差異遠不止這些。接下來,我們細說下CANFD CRC段帶來的變化。
不同數據段長度選擇不同的CRC多項式
傳統CAN采用的是15位的CRC校驗,由于CANFD支持更大的數據量,為提供通信可靠性,針對不同長度的CANFD報文,調整其CRC算法,詳見下表。
當報文為傳統CAN時,仍采用原有的CRC多項式。
當報文為CANFD且數據長度小于等于16字節時,調整為17位的CRC多項式。
當報文為CANFD且數據長度大于16字節時,則調整為21位的CRC多項式。
CRC計算時機不同
在傳統CAN中,位填充(連續5位相同位后填充一位相反位)是在CRC計算之后進行。當CAN控制器發送報文時,先對報文CRC計算后,再填入填充位發送;接收時,則對接收數據移除填充位后,再做CRC校驗。
在CANFD中,CRC計算時機調整為位填充后。也就是說,發送方發送時,先對報文進行位填充后,再做CRC計算。這種方式增加了對填充位的CRC計算,降低了錯誤漏檢的概率。
增加固定填充位和填充位計數
CANFD中,CRC域采用一種固定填充位的格式:在CRC段第一位及接下來的每四位增加一個固定填充位,填充位為上一位的反碼。 以下分別為CRC17和CRC21的固定填充位(FSB)位置。
除了固定填充位之外,CRC域的起始還包含了3位的填充位計數,及1位填充位計數檢驗位,以進一步提高通信可靠性。填充位計數在CRC段的位置如下圖紅框所示。
3位填充位計數表示的值為實際填充位計數對8取模的結果,采用格雷碼顯示。奇偶校驗位對填充位計數進行奇偶校驗。詳見下表。
需要注意的是,non-ISO CANFD協議標準,無固定填充位FSB及填充位計數。若使用USBCANFD-200U時,遇到通訊的CANFD控制器為non-ISO標準,可以在打開通道時,選擇CANFD標準為non-ISO,以兼容non-ISO標準CANFD控制器。
審核編輯:湯梓紅
-
CAN
+關注
關注
57文章
2660瀏覽量
462419 -
crc
+關注
關注
0文章
197瀏覽量
29355 -
CANFD
+關注
關注
0文章
51瀏覽量
4888
發布評論請先 登錄
相關推薦
評論