在上一篇連載中,我們初步認識了CAN FD協議,介紹了其產生背景、概要以及用例。本篇我們將帶大家更深入的探究CAN FD,通過對CAN FD的7個幀結構的詳細講解,讓大家對CAN FD和CAN的區別有所認識。

?? CAN FD的幀結構

CAN FD 幀由7個不同的位場組成,幀起始(SOF)、仲裁場、控制場、數據場、CRC校驗場、ACK應答場、和幀結尾(EOF),本章介紹每個幀構成及其中包含的欄位。

仲裁場。橙色部分表示與CAN的傳輸速度相同;來源:Vector Japan

(1)SOF(Star of Frame)幀起始

CAN匯流排具有兩種邏輯狀態,隱性和顯性。顯性表示邏輯」0」,隱性表示邏輯」1」。

從節點發送幀時, 發送的第一個部分為幀開始的部分,表現為顯性狀態。這一部分被稱為 SOF(Start Of Frame)。在SOF,CAN FD與CAN相同,僅有1bit的「顯性」位。只有匯流排空閑時才允許節點發送信號,發送時,SOF將匯流排從隱性(1)改變為顯性(0),所有節點必須同步於首先開始發送報文的節點的幀起始前沿。對於SOF的定義,CAN FD和CAN是相同的。

SOF(Star of Frame)。橙色部分表示與CAN的傳輸速度相同來源:Vector

(2)仲裁場

CAN FD的仲裁場是由Identifier識別符和RRS位構成。CAN FD 與 CAN 相同的地方是,都有Identifier識別符,可用於區別消息的同時又可以表示消息的優先順序。不同的是,在CAN FD中使用的RRS位,而CAN中使用的是RTR位。

仲裁場。橙色部分表示與CAN的傳輸速度相同來源:Vector

RRS位(Remote Request Substitution)遠程請求替換位:即傳統CAN中的RTR位

與傳統CAN相比,CAN FD取消了對遠程幀的支持,用RRS位替換了RTR位,為常顯性。

(2)控制場

CAN FD的控制場由IDE位、FDF位、RES位、BRS位和ESI位構成。

與傳統CAN相比,CAN FD在控制場中新添加了FDF位、BRS位、ESI位。與CAN相同,IDE位表示擴展幀標誌,res位為預留位。

控制場。橙色部分表示與CAN的傳輸速度相同,藍色表示可變快速率來源:Vector

FDF位(FD Format Indicator):

FDF位在CAN的數據幀中位顯性(0),在CAN FD的幀中常為隱形(1),表示CAN FD報文;

BRS位(Bit Rate Switch):位速率轉換開關

當BRS為隱形位(1)時,表示轉換可變速率,即發送節點在BRS位的採樣點,將會切換到高速傳輸的時鐘模式,其他接收節點也必須轉換位時鐘模式。在CRC界定符的採樣點,所有節點的波特率將會再切換回仲裁場的波特率。也就是說,所有CAN FD節點都有兩種類型的波特率。

ESI(Error State Indicator):錯誤狀態指示

ESI是指示發送節點的錯誤狀態的標誌,當發送節點的錯誤狀態是激活時,發送隱性位(1),如果錯誤狀態未激活時,發送顯性位(0)。通過ESI位,所有節點都可以確認當前的傳輸節點的錯誤狀態。 而在CAN幀中,無法得知其傳輸節點的錯誤狀態。

數據長度編碼(DLC: Data Length Code):

DLC表示傳輸了多少位元組的數據。CAN和CAN FD都具有4位配置。CAN FD對有效數據場長度作了很大的擴充,數據場最大可達64位元組。數據長度可以從0到8,12,16,20,24,32,48,64位元組中選擇。而CAN只有0到8個位元組。DLC與數據長度之間的關係如下表所示。不能指定除此處描述之外的數據長度,例如14位元組或50位元組。

數據長度代碼和相應的數據量來源:Vector

(4)數據場

與CAN一樣,數據場由數據幀裏的發送數據組成,在數據場中設置發送數據。首先發送最高有效位(MSB)。

數據場。橙色部分表示與CAN的傳輸速度相同,藍色表示可變快速率來源:Vector

(5)CRC校驗場

  • CRC校驗場有以下五點發生了變化:
  • 添加Stuff Count
  • CRC的計算方法
  • CRC的位長度
  • 位填充規則
  • 接收端CRC界定符的允許位時間

CAN FD的CRC校驗場中,添加了新的Stuff Count,CRC也有了17位和21位。本小節介紹新加的Stuff Count和更改後的CRC計算、位填充法以及CRC界定符的變化。

CRC校驗場。橙色部分表示與CAN的傳輸速度相同,藍色表示可變快速率來源:Vector

Stuff Count(CAN FD)

Stuff Count。橙色部分表示與CAN的傳輸速度相同,藍色表示可變快速率來源:Vector

Stuff Count由以下兩個元素組成:

  1. 格雷碼計算:CRC區域之前的填充位數除以8,得到的餘數(Stuff bit count modulo 8)進行格雷碼計算得到的值(Bit0-2)
  2. 奇偶校驗:通過格雷碼計算後的值的奇偶校驗(偶校驗)

Stuff Count如下表所示。

Stuff Count的編碼

CRC

隨著數據場的擴大,為了保證信息發送的質量,CAN FD的CRC計算不僅要包括數據段的位,還包括來自SOF的Stuff Count和填充位。通過比較CRC的計算結果,可以判斷接收節點是否能夠正常接收。

在CAN中,CRC的位數是15位,而在CAN FD中,CRC場擴展到了21位,詳見以下:

  • 當傳輸數據為16位元組或更少時:CRC 17位
  • 當傳輸數據超過16個位元組時:CRC 21位

位填充法

與CAN一樣,填充位插入到SOF和數據場的末尾之間。插入的填充位數值是經過格雷碼計算轉換後的值,並且用奇偶校驗位保護(Stuff Count)。

在CRC校驗場中,填充位被放置在固定的位位置,這稱為固定填充位(Fixed Stuff Bit)。固定填充位的值是上一位的反碼。

  • CRC校驗場的第一位
  • 每間隔4位添加一個固定填充位
CRC校驗場位填充。橙色部分表示與CAN的傳輸速度相同,藍色表示可變快速率來源:Vector

CRC界定符

CRC界定符是表示CRC校驗場的結束,是一個1位的常態隱性位。但是,在CAN FD中,考慮到節點之間的位的距離,在接收端允許最大2位時間。CAN FD幀的數據場(可變速段)是CRC界定符的第一位採樣點。

(6)ACK應答場

CAN FD的ACK應答場包括應答間隙和應答界定符,其構成和CAN是相同的。不同的是,在CAN中,應答場的長度是1位,但在CAN FD,接收節點利用2位時間將其識別為有效應答。

由從高速的數據場到慢速的仲裁場時,時鐘切換會引起收發器相移和匯流排傳播延遲。為了補償其相移和延遲,相比傳統的CAN,在CAN FD中多加了這額外的1位時間。在ACK之後,發送ACK界定符。這是一個表示ACK結束的分隔符,為是1位隱性位。

ACF。橙色部分表示與CAN的傳輸速度相同來源:Vector

(7)幀結尾

每一個數據幀均由一標誌序列界定,這個標誌序列由7個「隱性」位組成。CAN FD的幀結尾與CAN相同。

EOF。橙色部分表示與CAN的傳輸速度相同來源:Vector

?? CAN FD幀的波形

下圖顯示了CAN FD幀的波形。從圖片可以看出,紅框標出的數據段已經加速。

數據段正在加速來源:Vector

關於CAN FD的連載到此結束,回顧全篇,本文介紹了CAN FD介紹的背景和協議,你能理解CAN FD與CAN的區別了嗎?由於CAN FD是基於CAN的擴展,因此在協議方面沒有太大差異。

如果有一天真的引入CAN FD,有可能會引進相應的接收器和控制器,除此之外,不僅是資料庫會更新,可能對車載網路的整體架構也會產生影響,比如對通信標準和網路架構的重新設計。

此外,隨著數據段的波特率加速,EMC也將成為一大挑戰。為了應對這個挑戰,CiA(CAN in Automation)發布了CiA 601-4,以滿足CAN FD 的振鈴抑制電路。

為了能夠引入CAN FD,我們還需要面對許多挑戰,EMC的解決方案,通信標準的變更,相應部件的引入和環境的測試等各種難題。但是,大約在2019年左右,一些汽車製造商將開始大規模生產使用CAN FD汽車。希望這篇文章能夠幫助從事汽車網路開發的工程師!

推薦閱讀:

相關文章