一、什么是CAN FD
CANFD(CAN Flexible Data-Rate)是CAN通信協議的一種變種,它支持高速數據傳輸,同時保持低成本、簡單的特性。CANFD使用高速位速率傳輸數據,允許更高的數據吞吐量,并且通常與現有的CAN硬件兼容。
在CANFD網絡中,節點可以以不同的位速率(Flexible Data-Rate, FDR)同時發送數據。FDR可以是5Kbps到1Mbps之間的任何值,并且可以在通信過程中動態改變。
在《 通信總線協議之CAN總線協議詳解 》中介紹了CAN 2.0 A/B總線協議,但是隨著總線技術在汽車電子領域越來越廣泛的應用,特別是自動駕駛技術的迅速發展,汽車電子對總線寬度和數據傳輸速率的要求也越來越高,傳統CAN(1MBit/s,8Bytes Payload)已難以滿足日益增加的需求。
因此,一種能夠與CAN 2.0 A/B兼容,但通信速率更高,有效載荷更高的CAN總線 :CAN-FD總線協議應運而生,在2012年,Bosch發布了新的CAN FD標準 (CAN with Flexible Data Rate)
CAN FD繼承了CAN的絕大多數特性,如同樣的物理層,雙線串行通信協議,基于非破壞性仲裁技術,分布式實時控制,可靠的錯誤處理和檢測機制等,同時CAN FD彌補了CAN在總線帶寬和數據長度方面的不足。
二、 CAN FD的特點
CAN FD傳輸速率是可變的:從控制場中的BRS位到ACK場之前(含CRC分界符)為可變速率,最高速率可達到8Mbps
CAN FD數據長度不同:CAN FD每個數據幀最多支持64個數據字節,而傳統CAN最多支持8個數據字節,這減少了協議開銷,并提高了協議效率。
CAN FD幀格式不同:CanFD新增了FDF、BRS、ESI位
FDF 位(Flexible Data Rate Format):原 CAN 數據幀中的保留位 r,用來區別是 CAN 報文還是 CAN-FD 報文,FDF 位常為隱性 1,表示 CAN FD 報文;
BRS 位( Bit Rate Switch):表示位速率轉換,當 BRS 為顯性位 0時,數據段的位速率與仲裁段的位速率一致(恒定速率),當 BRS 為隱性位 1時速率可變(即 BSR 到 CRC 使用轉換速率傳輸);
ESI 位(Error State Indicator):發送節點錯誤狀態指示,主動錯誤時發送顯性位 0 ,被動錯誤時發送隱性位 1 。
三. CAN-FD總線協議
1、CAN FD節點可以正常收、發CAN報文,但CAN節點不能正確收、發CAN FD報文,因為其幀格式不一致。
與CAN一樣,CAN FD一共具有:幀起始,仲裁段,控制段,數據段,CRC段,ACK段和幀結束,7部分組成。
2、 幀起始
CAN FD與CAN使用相同的SOF標志位來標志報文的起始幀起始由1個顯性位構成,標志著報文的開始,并在總線上起著同步的作用。
3、 仲裁段
與傳統CAN相比,CAN FD取消了遠程幀,用RRS位替換了RTR位,為常顯性;
RTR(Remote Transmission Request Bit):遠程發送請求位,RTR位在數據幀里必須是顯性,而在遠程幀里為隱性
RRS(Remote Request Substitution):遠程請求替換位,即傳統CAN中的RTR位,CAN FD中為常顯性
IDE位仍為標準幀和擴展幀標志位,若標準幀與擴展幀具有相同的前 11 位 ID,那么標準幀將會由于 IDE 位為 0,優先獲得總線;
4、 控制段
控制段中CANFD與CAN有著相同的IDE,res,DLC位;同時增加了三個控制bit位,FDF、BRS、ESI;
FDF(Flexible Data Rate Format):原CAN數據幀中的保留位r,FDF常為隱性,表示CAN FD 報文;
BRS(Bit Rate Switch):位速率轉換開關,當BRS為顯性位時數據段的位速率與仲裁段的位速率一致,當BRS為隱性位時數據段的位速率高于仲裁段的位速率;
ESI(Error State Indicator):錯誤狀態指示,主動錯誤時發送顯性位,被動錯誤時發送隱性位;
DLC同樣是4bit表示數據段的長度,對應的關系如下:
5、 數據段
數據段即為傳輸的具體數據內容
CAN FD不僅能支持傳統的0-8字節報文,同時可以支持12, 16, 20, 24, 32, 48, 64字節
6、 CRC段
為了避免位填充對CRC的影響,CAN FD在CRC場中增加了stuff count記錄填充位的個數對應8的模,并用格雷碼表示,還增加了奇偶校驗位;且在CRC中加入了填充位FSB(fixed stuff-bit)
Stuff Count由以下兩個元素組成:
格雷碼計算:CRC區域之前的填充位數除以8,得到的余數(Stuff bit count modulo 8)進行格雷碼計算得到的值(Bit 0-2)
奇偶校驗(parity):通過格雷碼計算后的值的奇偶校驗(偶校驗)
CAN FD對CRC算法進行了改進,CRC對填充位也加入了計算;在校驗部分為避免有連續位超過6個,就確定在第一位以及以后每4位添加一個填充位加以分割,這個填充位的值是上一位的反碼,作為格式檢查,如果填充位不是上一位的反碼,就作出錯處理。
CAN的CRC的位數是15位,而在CAN FD中,CRC場擴展到了21位,如下:
當傳輸數據為0~8字節時:CRC 15位
當傳輸數據為9~16字節時:CRC 17位
當傳輸數據為17~64個字節時:CRC 21位
7、 ACK段
與CAN相比,在CAN FD中最多可接受2個位時間有效的ACK,允許1個額外的位時間來補償收發器相移和傳播延遲
由從高速的數據場到慢速的仲裁場時,時鐘切換會引起收發器相移和總線傳播延遲;為了補償其相移和延遲,相比傳統的CAN,在CAN FD中多加了這額外的1位時間
在ACK之后,發送ACK界定符,這是一個表示ACK結束的分隔符,用1位隱性位表示
8、 幀結束
與CAN一樣,CAN FD的幀結尾也為連續7位的隱性位
四. 如何從傳統的CAN升級到CAN FD
盡管 CANFD 繼承了絕大部分傳統 CAN 的特性,但是從傳統 CAN 到 CANFD 的升級, 仍需要做很多的工作,主要包括:
在硬件和工具方面,要使用 CANFD,首先要選取支持 CANFD 的 CAN 控制器和收發器,還要選取新的網絡調試和監測工具;
在網絡兼容性方面,對于傳統 CAN 網段的部分節點需要升級到 CANFD 的情況要特別注意,由于幀格式不一致的原因,CANFD 節點可以正常收發傳統 CAN 節點報文,但是傳統 CAN 節點不能正常收發 CANFD 節點的報文;
五、CANFD與CAN的主要區別
六、CANFD的應用優勢
更高的數據傳輸速率:滿足現代汽車電子系統對高速數據傳輸的需求。
更大的數據負載能力:支持單個數據幀內傳輸更多數據,減少數據分拆傳輸的需求。
保持實時性和可靠性:繼承了CAN協議的實時性和可靠性優勢。
七、未來發展趨勢
隨著汽車電子系統的不斷發展,CANFD協議將在未來繼續發揮重要作用。同時,隨著技術的不斷進步,可能還會出現更加先進的通信協議來滿足更高的數據傳輸需求。然而,CANFD協議作為當前汽車電子系統中廣泛應用的通信協議之一,其地位在短期內難以被替代。