CAN模組-2
- Admin
- 5天前
- 讀畢需時 3 分鐘
在先前的文章中,我們已介紹CAN模組的部分功能,包括CAN 2.0A(Standard CAN)、CAN 2.0B(Extended CAN)等協議,以及MR2操作介面之CAN通訊相關設定。本文將進一步介紹CAN模組所支援的CAN FD(CAN Flexible Data-Rate)協議。本文將說明如何於MR2操作介面配置CAN FD,以協助使用者應用於更高速與更高效能的情境,例如結合第三方RT系統進行聯合仿真或自動化操作等應用。

CAN FD與CAN 2.0 A/B之間有些明顯的差異,首先CAN FD的Data field最多可傳輸至64 bytes,遠高於CAN2.0的8 bytes限制,並支援在資料傳輸階段切換至較高的傳輸速率,如(圖2)、(圖3)所示。此外,CAN FD不再支援Remote frame,因為CAN FD著重於高效能傳輸大量資料,故Remote frame的實用性大幅降低,即使CAN FD與CAN 2.0 A/B有許多差異,但仍然維持CAN Bus的核心特性,一個Bus上,可允許有CAN 2.0 A/B與CAN FD等裝置同時存在。
![(圖2) CAN FD傳輸速率變化[1]](https://static.wixstatic.com/media/0a818a_24854dd697d54c299dbf85b1635fe50e~mv2.png/v1/fill/w_49,h_11,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_avif,quality_auto/0a818a_24854dd697d54c299dbf85b1635fe50e~mv2.png)
![(圖3) CAN FD之各Field[1]](https://static.wixstatic.com/media/0a818a_5d3505f343f94252afc79babaa9f2d86~mv2.png/v1/fill/w_49,h_8,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_avif,quality_auto/0a818a_5d3505f343f94252afc79babaa9f2d86~mv2.png)
首先介紹CAN FD的Arbitration field,此部分與CAN 2.0A/B相似,如(圖4)所示,因此讀者可參考前一篇CAN 2.0的說明,其中值得注意的是RRS Bit,這裡對應到CAN 2.0 A/B中的RTR Bit,由於CAN FD移除Remote frame,因此RRS Bit將維持Dominant。
![(圖4) CAN FD Arbitration field[1]](https://static.wixstatic.com/media/0a818a_8c72f4719f7443e8b8db965689ee7727~mv2.png/v1/fill/w_49,h_25,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_avif,quality_auto/0a818a_8c72f4719f7443e8b8db965689ee7727~mv2.png)
接著介紹CAN FD的Control field,其中IDE bit與CAN 2.0 A/B相同,用於表示是否為Extended format;FDF bit則用於表示是否為FD format;res bit為保留位元,BRS bit決定是否於Data phase調整傳輸速率,而ESI bit則標示此CAN device為Error active或Error Passive狀態;DLC bits代表Data field傳輸資料量,如(圖5)所示。CAN FD使用者通常只須了解Arbitration field、Control field與Data field即可,而CRC Field通常由硬體負責計算,故本節將不再詳述,至於ACK Field、EOF、IMF等,與CAN 2.0A/B機制相同。
![(圖5) CAN FD Control field[1]](https://static.wixstatic.com/media/0a818a_571787ab511a43568dad62cc9c40cb73~mv2.png/v1/fill/w_68,h_39,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_avif,quality_auto/0a818a_571787ab511a43568dad62cc9c40cb73~mv2.png)
於MR2操作介面中,開啟CAN Message視窗,可以看到CAN Type提供兩種CAN FD選項,如(圖6)所示,其中「CAN FD」於整個傳輸過程使用BaudRate設定的速率,而「CAN FD+BRS」則為傳輸過程區分為兩種速率,Arbitration phase使用BaudRate,而Data phase則切換至FD BRS BaudRate,最後傳輸ACK phase則恢復為BaudRate傳輸。我們的CAN模組最高可支援至8Mbps的傳輸速率,可滿足使用者在高速通訊與即時應用等需求。

於CAN Message下,各配置一個Receive message與Send message,Receive message負責接收CAN Bus上ID=0x64(100)的封包,此時外部裝置可透過傳輸該封包對MR2進行寫入操作,而Send message則負責傳遞MR2 Scope data資訊,由於CAN FD 一個frame最大可傳輸64 Bytes,而MR2 Scope data的資料型態為SGL,每筆資料佔用4 bytes,因此可在一個frame中填入16種Scope data,若使用者需要傳輸更多Scope data,只需額外新增Send message,即可依需求調整資料內容,而我們這次實驗發送的16種Scope data,其中CH_01對應的Scope index為0,因此其發送數值為Scope選單內的「0: DC Bus」。
我們可從外部CAN裝置觀察到ID=0xC8(200)的封包中,前面4 bytes為0x440659AD,進一步將其轉換為SGL後數值為537.401,該值正好對應「0: DC Bus」當前的數值,如(圖7)所示。

我們從外部CAN裝置對CAN Bus發送ID=0x64(100)的封包,並設定Group=3、Index=36,代表此封包將對MR2 「Traction Speed」參數進行寫入,並且Data=50,意味著將「Traction Speed」設為50,發送後我們可從示波器觀察RPM從0上升至50,代表封包順利寫入,如(圖8)所示。

於前一篇文章我們已介紹CAN Bus的Topology、Data frame與Remote frame等基本概念,並說明CAN 2.0A與2.0B協議之間在Frame結構上的差異。本文我們進一步延伸向讀者說明CAN FD的特性,並比較其與CAN 2.0A/B協議之間有何不同。當讀者具備這些基礎知識後,即可透過手邊現有的CAN Bus Transceiver與我們的CAN Bus模組進行通訊。我們的CAN Bus模組最高可支援1M/8M的傳輸速率,因此讀者可根據實際應用需求,例如自動化控制,或是結合第三方即時系統進行聯合仿真,選擇適合的 CAN Bus 協議版本與配置傳輸速率,因應各種不同的應用情境。
凱登將陸續推出MR2軟體特色、電機模型解析、編碼器驗證、各式外掛模組、應用案例等文章,敬請期待。
如有任何問題歡迎請隨時聯繫我們,並給與我們指教。
參考資料
[1]. “CAN FD (flexible data rate) - The basic idea,” https://www.can-cia.org/can-knowledge/can-fd-the-basic-idea, Retrieved on Jun 2025.