?

基于CANFD協議與CAN協議CRC校驗差異化研究

2022-12-02 08:00潘文卿李國朋張魯兵
內燃機與配件 2022年19期
關鍵詞:傳輸速率校驗字節

潘文卿,李國朋,張魯兵,鞠 敏

(濰柴動力股份有限公司,山東 濰坊 261061)

0 引言

在CAN通訊過程中CAN控制器具備完整的錯誤檢測能力,其中包含:位錯誤檢測、格式錯誤檢測、填充錯誤檢測、應答錯誤檢測和CRC錯誤檢測。作為一種重要的錯誤檢測手段,CRC錯誤檢測是接收節點判斷CAN幀信息的完整性和正確性并向總線確認應答的依據。

1 CANFD與CAN

2011年BOSCH首次發布了CANFD(CAN with Flexible Data rate)方案,在滿足CAN總線特性的基礎上升級了波特率和數據長度的兩大特性,在數據段傳輸時即可以提升速率又可以增加數據長度,最大可以一次傳輸64個字節的數據,同時還可以提升數據段的傳輸速率,最大可以提升到5Mbps,如此一來,CANFD可以大大提升數據加載量和傳輸速率。同時CANFD還繼承了傳統CAN的主要特性,采用雙線串行通訊協議,非破壞性仲裁技術,分布式實時控制,可靠的錯誤處理和檢測機制,很好的繼承了CAN的特性并優化了CAN總線最大只能傳輸8個字節數據,傳輸速率最大只能到1Mbps的局限性??梢院芎玫慕鉀Q當前整車智能化帶來的數據量急劇上升導致總線負載率過高,傳輸不穩定的問題。CANFD可以理解成CAN協議的升級版,只是將協議升級,物理層未作改變。CANFD可以向下兼容傳統CAN,由傳統CAN轉移到CANFD比較方便。

1.1 CANFD幀結構

對比傳統CAN[1]協議,CAN與CANFD主要區別:傳輸速率有提升,數據長度有提升,幀格式不同。CAN協議最大傳輸速率是1Mbps,CANFD協議的仲裁段的最大傳輸速率也是1Mbps,只是數據段的最大傳輸速率提升到了5Mbps,為了更加穩定的提升速率,CANFD協議的仲裁段和數據段的的傳輸速率一般保持1:1或者是1:2或者是1:4的提升數據段的速率,不然在傳輸過程中速率提升的太快會影響數據采集的有效性,造成大量錯誤幀。

CANFD協議的幀結構特點如圖1所示:

1)CAN與CANFD使用相同的SOF標志位來標識報文的起始。幀起始由1個顯性位構成,標識著報文的開始,并在總線上起著同步作用。

2)CANFD協議不支持遠程幀,所以原來RTR遠程傳輸請求位用SRR遠程請求替換位替代,并且始終為顯性位’0’。

3)CANFD與CAN有著相同過的標識符擴展位IDE位,當IDE位為顯性位0的時候表示ID長度是11bits的標準幀,當IDE位為隱形位1的時候表示ID長度是29bits的擴展幀。

4)為了區分CANFD與CAN,CANFD幀結構中增加了FDF(FD Format)位,為0表示傳統CAN協議;為1表示CANFD協議。

5)CANFD最顯著的特征就是數據段可以提升傳輸速率,在CANFD仲裁場增加BRS(Bit Rate Switch)位速率轉換開關位,為隱形位1時表示進行速率切換,發送節點在BRS位時將會切換到高速傳輸的波特率,其他接收節點也必須轉換對應的波特率。在CRC界定符的采樣點,所有節點的波特率再切換回仲裁場的波特率;當BRS位為顯性0時表示不進行速率切換。

6)CANFD最大可傳輸64字節的數據,所以原來4個字節的DLC(Data Length Code)需要重新編碼即支持傳統CAN的0到8個字節,也要支持最大64個字節的CANFD,數據長度可以從0到8,12,16,20,24,32,48,64字節中選擇,具體編碼方式如表1所示,CANFD的長度只能是表中顯示的長度,不隨意指定數據長度,例如30個字節是不支持的。

表1 CAN&CANFD DLC編碼表

7)CRC(Cyclic Redundancy Check)校驗在傳統CAN的基礎上進行了升級,如果數據段的長度大于16個字節時,CRC的長度為21bits,小于等于16個字節時,CRC的長度是17bits, CANFD對CRC算法做了改變。在校驗和部分從第一位開始每4bits添加一個填充位加以分割,這個填充位的值是上一位的反碼。

8)ESI(Error State Indicator)錯誤知識狀態位,為顯性位0時表示CANFD節點處于主動報錯狀態,為隱性位1時表示CANFD節點處于被動報錯狀態[2]。通過ESI位,所有節點都可以確認當前的傳輸節點的錯誤狀態。而在傳統CAN幀中,無法得知其傳輸節點的錯誤狀態。

9)EOF(End of Frame)幀結束,7個隱性位。如果某一位編號下出現一個顯性電平:[第1-6位]發送器或接收器檢測到一個幀結構錯誤。此時接收器丟棄該幀,同時產生一個錯誤標記(接收節點CAN控制器處于錯誤主動狀態,則產生顯性錯誤幀;如果處于錯誤被動狀態,則產生隱性錯誤幀)。如果是顯性錯誤幀,則發送器重新發送該幀。[第7位]該位對于接收器有效,但對于發送器無效。如果此位出現顯性錯誤幀,則接收器已經把報文接收成功,而發送器又重新發送,則該幀就被接收器接收兩次,這時就需要由高層協議來處理。

2 CRC介紹

CRC即冗余校驗碼(Cyclic Redundancy Check):是數據通信領域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,并將得到的結果附在幀的后面,接收設備也執行同樣的算法,以保證數據傳輸的正確性和完整性。

CRC檢驗算法是基于一個多項式除法取余的結果,根據位數的需要和多項式的變化有數十種版本,該算法硬件實現簡單,位反轉偵錯能力較強及運算量適中,被廣泛應用與數字網絡傳輸及數據存儲領域。

3 CANFD與CAN的CRC差異化研究

3.1 CRC幀結構

一個傳統CAN幀結構中,CRC域放置在數據結束后應答檢測之前,如圖2所示。對于CANFD也是同樣的位置,該信息對于用戶應用界面來說是不可見的,可通過CANscope總線分析儀解碼窗口或者示波器從總線波形上得到對應的CRC數據展示。

CANFD幀結構中,CRC域在同樣的位置,并且CRC的長度隨著數據域的長度變化分為17位和21位的校驗,CRC采用一種固定填充位的格式:在CRC段第一位及接下來的每四位增加一個固定填充位,填充位的值為上一位的反碼。

如圖3和圖4分別展示CRC17和CRC21的固定填充位FSB位置。

除了固定填充位之外和CRC計算位外,CRC域的起始還包含了3位的填充位計數,及1位填充位計數檢驗位,以此四個位的加入來進一步提高通訊可靠性。填充位計數在CRC段的位置如圖5紅框所示。

3位填充位計數表示的值為實際填充位計數對8取模的結果,采用格雷碼顯示。奇偶校驗位對填充位計數進行奇偶校驗,即1的個數是奇數時,奇偶校驗位的值位1,反之為0。詳見表2。

表2 填充位計數

3.2 CRC多項式

傳統CAN采用的是15位的CRC多項式校驗,由于CANFD支持更大的數據量,為提高通訊可靠性,針對不同數據長度的CANFD報文,調整其CRC算法,詳見表3。當報文為傳統CAN時,仍采用原有的CRC多項式校驗。當報文為CANFD且數據長度小于等于16字節時,調整為17位的CRC多項式校驗。當報文為CANFD且數據長度大于16字節時,則調整為21位的CRC多項式校驗。根據CANFD報文的數據長度自動調整CRC多項式的算法,可以提高通訊數據安全校驗的可靠性。

表3 CRC多項式

3.3 CRC計算

在傳統CAN中,連續5位相同位后會填充一位相反位,并且在CRC計算之后進行填充。當CAN控制器發送報文時,先對報文進行CRC計算,然后再按照填充位原則填入填充位發送;在接收節點接收報文時,則對接收數據先根據位填充的原則移除填充位后,再做CRC校驗。

在CANFD中,CRC計算的時機調整為位填充后,位填充原則同樣為連續5個相同會后填充一個相反位,發送節點發送報文時,先對報文按照位填充原則進行位的填充,再做CRC計算。這種方式增加了對填充位的CRC計算,提高了位校驗可靠性,降低了錯誤漏檢的概率。

CANFD對CRC算法進行了改進,CRC對填充位也加入了計算。在CRC域的校驗和部分為避免連續相同位超過6個,就確定在第一位以及以后每4位添加一個填充位加以分隔,這個填充位的值是上一位的反碼,作為格式檢查,如果填充位不是上一位的反碼,就作錯誤處理。

CAN幀基于CRC多項式的安全校驗是發送節點根據發送的位計算校驗值,并在CAN幀結構CRC字段中提供該結果。接收節點使用相同的多項式來計算總線上所見位的校驗值,將自我計算的校驗值與接收的校驗值進行比較,如果匹配,則認為被正確接收,接收節點在ACK時隙中發送顯性狀態,從而覆蓋發送器的隱形狀態。在不匹配的情況下,接收節點在ACK定界符之后發送錯誤幀。

CANFD的控制器CRC校驗實現過程會相對復雜一些,在一個CAN總線網絡中,幀起始被檢測到后所有的節點開始使用三組多項式同步計算CRC序列,其中也包含發送節點,由于CRC的計算受CAN幀類型和DLC長度影響,直到CAN幀的控制域以及DLC確認后才選擇采用對應的多項式生成CRC序列,最終生成的 CRC序列會填充在幀結構中CRC字段,用于發送和接收節點進行比較判定該報文是否被正確完整發送和接收。

4 結論

CANFD協議相較于傳統CAN有更高的傳輸速率,有更大的數據帶寬,CANFD協議在仲裁場和數據場進行切換,在數據段增加數據長度,在傳輸的過程中需要更高效更準確的校驗機制來保證數據傳輸的準確性。所有基于CANFD協議的CRC校驗機制相較于傳統CAN有相應的升級以保證傳輸過程中數據的完整性和正確性,能有效防止物理層傳輸錯誤,CANFD因為數據段是可以變速率并且數據段的長度也是可變的,所以CRC校驗會更為復雜一些會根據數據長度的不同,更換CRC校驗多項式,同時增加了填充域,采用格雷碼校驗和奇偶校驗的形式保證位填充的正確性,為數據傳輸的準確性添加了雙重保險。CRC校驗用戶在應用場景下是看不到的,完整的有效的校驗機制可以讓用戶界面不需要額外關注幀傳輸數據的正確性。

猜你喜歡
傳輸速率校驗字節
使用Excel朗讀功能校驗工作表中的數據
No.8 字節跳動將推出獨立出口電商APP
電能表在線不停電校驗技術
三星利用5G毫米波 實現創紀錄傳輸速率
No.10 “字節跳動手機”要來了?
精通文件校驗的“門道”
夏季濱海濕地互花米草植物甲烷傳輸研究
數據傳輸速率
基于FPGA的CRC32校驗查找表算法的設計
人類進入“澤它時代”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合