來源 |智能網聯(lián)汽車網
隨著汽車電子、工業(yè)自動化的蓬勃發(fā)展,CAN總線上的設備數(shù)量、數(shù)據(jù)量都大大增加,給CAN總線帶來了極大的挑戰(zhàn)。為滿足更高的帶寬及數(shù)據(jù)吞吐量,CAN FD(CAN with Flexible Data-Rate)誕生了。那究竟CAN FD與傳統(tǒng)CAN的區(qū)別是什么?在數(shù)據(jù)傳輸和實時性能方面又有什么不同?
一般從使用傳統(tǒng)CAN轉換到CAN FD會有以下3個原因:
01CAN FD提高位速率的同時提供更短的CAN幀
延遲時間更短.
更好的實時性能
更高的帶寬
02CAN FD可以在CAN幀中容納從8到64字節(jié)更多的數(shù)據(jù)
相對更少的系統(tǒng)開銷 = 更好的數(shù)據(jù)吞吐量
發(fā)送較大數(shù)據(jù)對象時,軟件更簡單高效
03CAN FD具有更高性能的CRC算法
降低未檢測到錯誤的風險
由于CAN FD是在CAN總線的數(shù)據(jù)量負荷逐漸達到極限后的產物,本文旨在對比CAN FD與傳統(tǒng)CAN的同時詳細介紹CAN FD。
01.CAN FD與傳統(tǒng)CAN的數(shù)據(jù)幀格式
圖 1 傳統(tǒng) CAN 幀(上圖)和 CAN FD 幀(下圖)比較。兩種幀都是單字節(jié)數(shù)據(jù),而且在此例中, CAN FD 幀沒有提高位速率??梢钥闯?,兩種幀從幀起始(SOF)位到整個 11 個仲裁位都相同。仲裁之后,傳統(tǒng) CAN(標記為 A)中是遠程傳輸請求位(RTR 位),CAN FD 幀中是遠程請求替換位(RRS 位)。對于數(shù)據(jù)幀,該位在這兩種幀格式中始終為顯性(0)。通常定義為邏輯 0 和 0 伏信號的顯性位由底部較粗的黑線表示(標記為 B)。
圖 1 傳統(tǒng) CAN 和 CAN FD 幀之比較
遠程傳輸請求位(RTR 位)之后的位是顯性標識符擴展位(IDE 位),表示該幀是使用 11 位仲裁的基本幀格式。注意,本文將不涉及使用 29 位仲裁的 EF 擴展幀格式(EFEFF) 。
IDE 位之后是 r0 位(保留位),其在傳統(tǒng) CAN 幀格式中始終為顯性。在 CAN FD 幀格式中,該位為隱性(見 C),指示該幀不是傳統(tǒng) CAN 幀,而是保留格式的 CAN 幀,現(xiàn)在稱其為 CAN FD(CAN Flexible Data-rate)。換句話說,該位指示 CAN 幀是傳統(tǒng) CAN 幀還是 CAN FD 幀。自 ISO11898-1 標準發(fā)布以來,該位被稱為 FDF 位(靈活數(shù)據(jù)格式位),代替在 ISO11898-1 標準先前版本中被稱為 r0 位的名稱。在任何先前文檔或數(shù)據(jù)表中見到對 r0 位的引用,它與 2015 年發(fā)布的 ISO11898-1 版中的 FDF 位是相同的。
02. CANFD的附加位
FDF 位/r0 位(從現(xiàn)在開始我們將其稱為 FDF 位)之后是 FD 格式的保留位(res)和傳統(tǒng) CAN 格式的數(shù)據(jù)長度碼位(DLC)。換句話說,按照以前的 ISO11898-1 標準所有產生的傳統(tǒng) CAN 控制器都將錯誤地解讀 CAN FD 幀,從而導致傳統(tǒng) CAN 控制器的錯誤幀。在循環(huán)冗余檢查(CRC)定界符(圖 1 中標記為 D)之后,傳統(tǒng) CAN 和 CAN Fd 在其位模式方面是一致的。換句話說,在下一幀開始之前,傳統(tǒng)格式和 FD 格式使用相同的結束模式。
所有 CAN FD 控制器都可以處理傳統(tǒng) CAN 幀和 CAN FD 幀的混合。這意味著在現(xiàn)有系統(tǒng)中開始使用 CAN FD 控制器以及僅使用傳統(tǒng) CAN 格式的傳統(tǒng) CAN 控制器是可行的。當所有老的傳統(tǒng) CAN 控制器都被 CAN FD 控制器替換時,可以將傳統(tǒng) CAN 幀與 CAN FD 幀混合使用,或者僅使用兩種類型之一。
在 CAN FD 幀中的 FDF 位之后是保留位。將此位設置為隱性指示未來協(xié)議,與 FDF 位指示從傳統(tǒng) CAN 轉換到 CAN FD 格式的方式相同。未來協(xié)議尚未定義。值得注意的是,傳統(tǒng) CAN 格式的 r0/FDF 位用于指示 CAN FD 格式之前耗費了 25 年時間。
在保留位之后是 BRS 位(位速率轉換)。這個額外的位允許 CAN FD 幀以兩種不同的格式發(fā)送。如果 BRS 位為顯性被發(fā)送,則所有位將以與圖 1 所示的仲裁中所使用的相同的位速率發(fā)送。如果BRS 位為隱性,則在此位后幀格式將使用較高的位速率,直到并包括 CRC 定界符。
BRS 位之后是 ESI 位(錯誤狀態(tài)指示器),通常顯性發(fā)送為主。如果 CAN FD 幀發(fā)送節(jié)點變?yōu)殄e誤-被動,則該位將被隱性發(fā)送,指示發(fā)送方節(jié)點存在重要的通信問題。目前尚不清楚該位如何在更廣泛的應用中使用,但是它已經被汽車制造商根據(jù)所需進行了采納。
在這 3 個新位(保留位,BRS 位和 ESI 位)之后是 4 個 DLC 位,指示 CAN 幀中的數(shù)據(jù)字節(jié)數(shù)。表 1 顯示了這 4 個位如何用于指示 CAN 幀中的數(shù)據(jù)字節(jié)數(shù)。傳統(tǒng) CAN 幀最多可容納 8 個字節(jié)的數(shù)據(jù)。從表中可以看出,超出 8 個字節(jié)可以發(fā)送 DLC 碼,但只有 8 字節(jié)的數(shù)據(jù)將被放置在發(fā)送的 CAN 幀中。仔細觀察表格你會發(fā)現(xiàn) 9 到 15 的 DLC 在 CAN FD 格式中有所差異。9 到 63 的任何數(shù)量的字節(jié)需 6 位 DLC,并且到 64 字節(jié)將需 7 位 DLC。折中方案是保持 4 位 DLC,并限制 CAN FD 幀(12, 16, 20, 24, 38, 48 和 64)中的字節(jié)長度數(shù)。
03.CANFD顯著提高數(shù)據(jù)傳輸速率
DLC 位后的數(shù)據(jù)(圖 1 顯示一個數(shù)據(jù)字節(jié)的 CAN 幀)。該數(shù)據(jù)前和后的位是固定長度的任意數(shù)量數(shù)據(jù)字節(jié)。本例中要傳輸一個字節(jié)的數(shù)據(jù),傳統(tǒng)格式需 55 位,CAN FD 格式需 70 位。在最差的情況下,也可以在幀中包含多個填充位。如果幀在同一級別的行中超過 5 位,則協(xié)議將在幀中添加一個額外的位,具有反相極性,以確保可以使用級別更改來重新同步采樣點。
這個添加和除去額外的位用于重新同步的過程稱為填充,并且這些位在 CAN 協(xié)議中被標記為填充位。通過在每個 CAN 幀中打包更多的數(shù)據(jù)來提高數(shù)據(jù)傳輸效率,這可以從表 1 的最后兩列看出。效率方程式假定在開銷中最差情況下的填充位數(shù)。由于其較低的開銷,傳統(tǒng) CAN 與 CAN FD 相比效率略高。通過將 CAN FD 幀中的字節(jié)數(shù)從 8 字節(jié)增加到 64 字節(jié),可以將效率從 50%增加到88%。
在表中,還包括以不同幀格式使用的 CRC 碼。傳統(tǒng) CAN 格式對于所有幀類型使用 15 位 CRC 編碼,因為所有幀具有相似的長度。CAN FD 幀更復雜一些,因為 64 字節(jié)幀比 8 字節(jié)幀要長 8 倍。為了解決這個問題,在 CAN FD 幀中使用兩種不同的 CRC 長度:如果幀保持 16 字節(jié)或更少,則使用 17 位的 CRC-17;且如果 CAN 幀保持 20 字節(jié)或更多,則使用具有 21 位的 CRC-21。
它是具有 2 個額外位的 CRC 加上填充計數(shù)器中的 4 位和固定填充位,這就使得 CAN FD 幀比傳統(tǒng) CAN幀更長。有人會說這個比較不完全公平,因為傳統(tǒng)CAN 幀在CRC段可以有多達3個填充位,在控制段還可以有 3 個位。
CAN FD 幀的 CRC 段中的額外位為數(shù)據(jù)內容提供了更好的保護,系統(tǒng)高安全性是從傳統(tǒng) CAN 轉到CAN FD 的充分理由。
CAN 幀中有超過 8 個字節(jié)的數(shù)據(jù),由于提高了效率,數(shù)據(jù)吞吐量將會增加,這是從傳統(tǒng) CAN 轉到CAN FD 的另一個原因。
04.如何平衡數(shù)據(jù)傳輸效率與實時性能
重要的是要記住,盡管使用更長的 CAN 幀的效率確實有所提高,但 CAN 幀和每秒幀數(shù)更少,這增加了通信中的延遲時間并降低了實時性能。為了減少此問題并增加數(shù)據(jù)吞吐量,可以將 CAN FD 幀中的位速率提高到傳統(tǒng) CAN 以上的可能性。
迄今為止對 CAN FD 的描述是在整個 CAN 幀中具有相同的位速率。如上所述,隱性 BRS 位將要求在幀的數(shù)據(jù)部分中切換到較高的位速率。
在圖 2 中,添加了第 3 個 CAN 幀。該第 3 幀是具有與中間 CAN FD 幀相同內容的 CAN FD 幀,但是在本例中,該幀以中間的 CAN FD 幀的數(shù)據(jù)速率的兩倍發(fā)送幀。
圖 2 CAN FD 幀不含/含有提高 2 倍數(shù)據(jù)速率
因為它具有相同的內容,所以你將獲得相同的 DLC 和數(shù)據(jù),但是當 CAN FD 以更高的位速率發(fā)送時,BRS 位將被隱性發(fā)送(見 E)。BRS 位包含在 CRC 計算中,即使 CAN-ID,DLC 和數(shù)據(jù)相同,也會產生兩個不同的 CRC 內容。
從圖 2 可以看出,以較高位速率發(fā)送的第一個位是 ESI 位,后面是 DLC,數(shù)據(jù)字節(jié)和 CRC 位。以較高位速率發(fā)送的最后一位是 CRC 定界符。由此可以理解,較高的位速率不僅適用于 CAN Fd 幀的數(shù)據(jù)段,而且也適用于周圍的位。
圖 3 與圖 2 相同,除了先前描述的幀下面的一個新幀。這個新幀與所有其他幀具有相同的內容,但位速率是仲裁位速率的八倍。與具有不變位速率或雙位速率的 CAN FD 幀相比,變化相對較大。
可以看出,不僅數(shù)據(jù)的單字節(jié)獲得較高的位速率,而且?guī)?DLC 和 CRC 部分也一樣,其總共有大約 40 位。
圖 4 顯示 3 個 CAN 幀,頂部為 8 個字節(jié)的傳統(tǒng) CAN 幀。中間是一個具有 64 字節(jié)的 CAN FD 幀,底部的 CAN 幀是相同的 CAN FD 幀內容,但是位速率增加(速度快八倍)。
圖 3 在圖 2 的基礎上多了位速率增加 8 倍的 CAN FD 幀
從圖 4 可以看出,更多的數(shù)據(jù)將使 CAN 幀傳送時間更長,這將阻止其它高優(yōu)先級 CAN 幀開始發(fā)送。為了保持實時性能,需要增加位速率以減少 CAN 幀的長度,并且減少 CAN 幀占用通信線路的時間以及防止其它高優(yōu)先級幀訪問通信。
圖 4 頂部是 8 字節(jié)傳統(tǒng) CAN幀;
中間是位速率相同的 64 字節(jié) CAN FD幀;
底部是位速率增加了 8 倍的 64 字節(jié) CAN FD幀
總之,具有高位速率的 CAN FD 將增加實時性能,因為較高的位速率使得 CAN 幀在傳送時間上更短,從而減少通信中的延遲。通過在每個幀中傳送更多數(shù)據(jù),可以增加數(shù)據(jù)吞吐量,但是如果不結合使用較高的位速率,這將降低實時性能。在許多情況下,編程中會使用 64 字節(jié)長的 CAN 幀,這通常在系統(tǒng)暫停且沒有實時控制運行時完成。即使沒有實時需求,使用更高的位速率來提高數(shù)據(jù)吞吐量仍然有利,并縮短下載時間。
-
CAN總線
+關注
關注
145文章
1911瀏覽量
130558 -
CAN
+關注
關注
57文章
2694瀏覽量
463122 -
CAN FD
+關注
關注
0文章
76瀏覽量
12877 -
數(shù)據(jù)幀
+關注
關注
0文章
43瀏覽量
6726
原文標題:CAN FD與傳統(tǒng)CAN的差異
文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論