can协议crc计算_CAN总线的升级版——CAN FD简介
為什么需要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. 以太網優勢在于大數據的傳輸但不能完全適用于當前汽車架構。
From Vector——Data Rate VS Cost
CAN FD 數據幀
對比傳統CAN的數據幀,CAN FD在控制場新添加EDL位、BRS位、ESI位,采用了新的DLC編碼方式、新的CRC算法(CRC場擴展到21位)。
CAN FD數據幀 VS CAN數據幀
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”。
性能對比
總結
以上是生活随笔為你收集整理的can协议crc计算_CAN总线的升级版——CAN FD简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想台式机怎么u启动设置密码 “如何给联
- 下一篇: oracle取本月最后一天是星期几_Or