一,寫在前面
目前STM32H7系列全部支持CAN_FD,現在互聯網上的關於STM32 CAN_FD的內容基本沒有,寥寥幾篇也都是關於濾波器的,所以就決定來研究一下,這篇博客就拋磚引玉了,希望大家看完批評指正。
二,CAN,FDCAN簡介
CAN是(Controller Area Network)的縮寫,即控制器局域網絡,屬於工業現場總線,是ISO國際標準化的串行通信協議。
從OSI(Open System Interconnection開放系統互聯)7層網絡模型的角度來看,CAN現場總線僅僅定義了。
第 1 層(物理層)和第 2 層(數據鏈路層)。
FDCAN是(CAN with Flexible Data rate)繼承了CAN總線的主要特性。CAN總線採用雙線串行通訊協議,基於非破壞性仲裁技術,分佈式實時控制,可靠的錯誤處理和檢測機制使CAN總線有很高的安全性,但CAN總線帶寬和數據場長度卻受到制約。CAN FD總線彌補了CAN總線帶寬和數據場長度的制約。
FDCAN與CAN_FD的關係 FDCAN是ST公司在編寫庫的時候取的名字。CAN_FD是發明這個總線協議的博世公司取的名字。
三,CAN與FDCAN的區別
要想弄清楚他們自己的區別,就需要了解他們的歷史。
CAN:1986 年德國電氣商博世公司開發出面向汽車的CAN 通信協議.
CAN_FD:隨着人們對數據傳輸帶寬要求的增加,傳統的CAN總線由於帶寬的限制難以滿足這種增加的需求。此外爲了縮小CAN網絡(max. 1MBit/s)與FlexRay(max.10MBit/s)網絡的帶寬差距,2011年BOSCH公司推出了CAN FD 。
雖然CAN_FD在2011年就推出了,但是目前使用普及率以及資料寥寥無幾。
CAN_FD和CAN對比的優勢:
CAN_FD全稱是Flexible Data-Rate,意思就是幀報文中數據段波特率可變的特性,即仲裁段和數據控制段使用標準的通信波特率,而傳輸數據段時就會切換到更高的通信波特率,數據傳輸率可大於1Mbit/s,5Mbit/s(STM32H7目前最高支持5Mbit/s)。
在這裏插入圖片描述
支持的數據長度更長
經典CAN支持的數據長度爲8個字節。CAN_FD對數據的最大長度做了擴充,最大支持64個字節。
在這裏插入圖片描述
優化CRC。
CAN FD爲此在CRC算法上進行了優化與修改,將填充位加入到差錯校驗碼中進行計算,也就是CRC以包含了填充位位流進行計算。確定從第一個填充位開始,序列中每4位就插入一個填充位用以分割,且該填充位就是上一位的反碼。
在這裏插入圖片描述
當進行格式檢查時,若填充位不是上一位的反碼,就及時報錯處理。而針對不同的數據場長度值,CAN FD會選擇兩種新BCH型CRC多項式。
在這裏插入圖片描述
控制場增加控制位
在這裏插入圖片描述
EDL(Extended Data Length)用於區分是否爲CAN-FD幀:
1. 隱性: 表示爲CAN-FD 報文,並採用新的DLC編碼和CRC算法。
2. 顯性: 表示爲CAN報文
BRS(Bit Rate Switch)爲位速率轉換開關,用於切換Data-Phase的速率:
1. 隱性:轉換可變速率
2. 顯性:不轉換速率
ESI(Error State Indicator)爲錯誤狀態指示位:
1. 隱性:發送節點處於被動錯誤狀態(Error Passive)
2. 顯性:發送節點處於主動錯誤狀態(Error Active)
四,CAN_FD幀結構分析
爲了區分經典CAN數據幀和CAN_FD數據幀,使用先前保留的位之一,該位稱之爲FD幀位。如果他是隱性值,則下列序列被解釋爲CAN_FD數據幀。如果他具有顯性值,則它是經典數據或遠程幀。在新引入的BRS(比特率開關)位中,當它具有陰性(r)值時,應用第二比特。如果它具有顯性(d)值,則仲裁階段比特時間設置也用於數據階段。
在這裏插入圖片描述
SOF =幀起始,CRC =循環冗餘校驗,ACK =確認,EOF =幀結束,IMF =間歇字段
CAN_FD協議控制器還必須支持經典CAN幀。兩種CAN協議(經典和CAN_FD)在ISO 11898-1:2015中都是國際標準化的。具有11位標識符的CAN FD數據幀使用FBFF(FD基本幀格式),具有29位標識符的CAN FD數據幀使用FEFF(FD擴展幀格式)。CAN FD協議不支持遠程請求的數據幀。
在這裏插入圖片描述
RRS =遠程請求替換,SRR =替代遠程請求,IDE =標識符擴展,FDF =靈活數據速率格式,d =顯性,r =隱性,r0 =保留
控制字段包括經典CAN數據幀不提供的附加位。FDF(FD格式)位指示FD幀格式的使用。在BRS(比特率開關)位的採樣點處,執行比特率切換。這保證了最大的穩健性。以下ESI(錯誤狀態指示符)位提供有關錯誤狀態的信息:顯性值表示錯誤活動狀態。
在這裏插入圖片描述
IDE(標識符擴展),FDF(靈活數據速率格式),BRS(比特率切換;隱性,如果是備用比特率),ESI(錯誤狀態指示;隱性,如果錯誤被動)
在CAN FD協議的標準化過程中,引入了一些額外的安全防護裝置以提高通信可靠性。這就是CRC字段包括17位(對於有效載荷高達16字節的幀)或21位(對於大於16字節的幀)多項式和8位填充位計數器加上奇偶校驗位的原因。CRC字段使用具有與前一位相反的值的固定填充位(FSB)。所有這些安全防護裝置可確保在所有條件下都能檢測到所有單一故障。即使檢測到多個故障的可能性也得到了改善。
在這裏插入圖片描述
五,最後
本文由我個人編輯並整理,難免存在一些錯誤;
這一篇主要對CAN_FD進行了簡要的說明;
後面逐步STM32H7系列的消息RAM以及濾波進行說明;
參考鏈接:https://www.can-cia.org/can-knowledge/can/can-fd/
http://www.360doc.com/content/16/1212/12/30375878_614027257.shtml
僅供個人學習使用,禁止商用。
————————————————
原文鏈接:https://blog.csdn.net/whj123999/article/details/90273980