為什麼需要CAN FD?
在汽車行業,為什麼需要CAN FD?
1. 原因主要是因為汽車功能越來越多,越來越複雜,傳統的CAN總線(CAN2.0)的負載率越來越高,甚至負載率高達95%。
2. 因為傳統CAN總線的局限性:
· 傳輸率最大為1Mbiy/s(典型的<= 500kbit/s);
· 傳統CAN數據幀超過50%的額外開銷(overhead > 50%)。
3. 對比其他協議,額外開銷比例要小得多,如UDP (1500 bytes/datagram, 64 bytes overhead),FlexRay(254 bytes/frame, 8 bytes overhead)。
4. 因為歷史原因,汽車不可能直接放棄目前的傳統CAN總線技術,一切推到重來。那麼為了解決CAN總線負載率問題,而又能兼容CAN總線,並且研發成本不能太高的問題,2015年最新的修訂版ISO 11898-1(classic CAN和CAN FD)發布。
什麼是CAN FD?
CAN FD 是CAN with Flexible Data rate的縮寫。也可以簡單的認為是傳統CAN的升級版。在上一篇文章汽車的中樞神經系統——CAN總線簡介可以看到CAN整個發展歷程。
2011年,開始CAN FD協議的開發。
2015年,ISO 11898-1(Classical CAN和CAN FD)修訂版發布。
對比傳統CAN總線技術,CAN FD有兩方面的升級:
1. 支持可變速率—> 最大5Mbit/s;
2. 支持更長數據長度--> 最長64 bytes數據。
CAN FD的開發成本和傳統CAN開發成本相差不大,並且可以和傳統CAN很好兼容。
CAN FD對比FlexRay的優勢在於:
1. CAN FD的開發成本遠低於FlexRay;
2. FlexRay對ECU升級刷寫不友好。
CAN FD對比乙太網的優勢在於:
1. CAN FD的開發成本遠低於乙太網;
2. 乙太網優勢在於大數據的傳輸但不能完全適用於當前汽車架構。
CAN FD 數據幀
對比傳統CAN的數據幀,CAN FD在控制場新添加EDL位、BRS位、ESI位,採用了新的DLC編碼方式、新的CRC算法(CRC場擴展到21位)。
1. 起始位SOF(start of frame)
傳統CAN的數據幀起始位SOF和CAN FD的數據幀起始位SOF是一樣的,一個bit的顯性位『0』。
2. 仲裁場(Arbitration Field)
對比傳統CAN數據幀,CAN FD共享相同的CAN ID,包括擴展數據幀的ID。
CAN FD用RRS bit(始終為顯性位『0』)代替RTR。
FDF(FD format)表示CAN FD還是傳統CAN數據幀:
· FDF – 『0』 --> 傳統CAN數據幀
· FDF – 『1』--> CAN FD數據幀
BRS(Bit Rate Switch)表示時鐘頻率的切換:
· BRS – 『1』-->時鐘頻率切換
ESI(Error State Indicator)表示CAN總線的錯誤狀態。
3. DLC控制域(control Field)
DLC用於表示數據幀的數據長度。並且支持傳統CAN 數據幀的編碼方式。
4. CRC
CAN總線由於位填充規則對CRC的幹擾,造成錯幀漏檢率未達到設計意圖。CAN FD對CRC算法做了改變,即CRC以含填充位的位流進行計算。在校驗和部分為避免再有連續位超過6個,就確定在第一位以及以後每4位添加一個填充位加以分割,這個填充位的值是上一位的反碼。作為格式檢查,如果填充位不是上一位的反碼,就作出錯處理。CAN FD的CRC場擴展到了21位。
根據不同的數據長度,CRC的長度也不一樣:
· CRC 15bits –> 傳統CAN;
· CRC 17bits--> 數據長度<= 16bytes;
· CRC 21bits -->數據長度>16bytes。
CRC的結束標識位(CRC Delimiter)一般是1位,但也接收2位。
5. ACK
ACK緊跟著CRC結束標識位。不同的是,CAN FD支持2bits的ACK的識別。
6. 結束標識符(End of Frame)
EOL在傳統CAN,CAN FD中都是7個連續隱性位「1」。
性能對比