一、 概述
本文將會介紹 SemiDrive E3 MCAL CAN 模塊的簡介以及基本配置。此外會結合實際操作的介紹,幫助新手快速了解並掌握這個模塊的使用,文中的 MCAL 是基於 PTG3.0 的版本,開發板是官方的 E3640 網關板。
二、 CAN 模塊簡介
SemiDrive E3 系列最多支持 24 路 CAN/CANFD,如表 2.1 是 E3 系列各型號支持的 CAN 數量。其中每路 CAN 最多支持 64 個郵箱,每路 CAN 支持兩個 RAM Block,每個 RAM Block 的長度可單獨配置。另外 E3 只支持 RX FIFO,TX FIFO 不支持,並且 RX FIFO 和 CANFD 不能同時使用。
E3 各型號 |
CAN 數量 |
E3640/E3648 |
24 |
E3420/E3430 |
16 |
E3340 |
4 |
E3210/E3110/E3206/E3106 |
8 |
E3205/E3105/E3104/E3103/E3102 |
4 |
表 2.1 E3 系列各型號 CAN 數量統計
三、 CAN 模塊的主要配置
下面具體介紹 CAN 模塊的相關配置。首先需要在 MCU 模塊中使能對應的 CAN 模塊,我們的例子以 CANFD7 為例,如圖 3.1 所示,勾選我們要使用的 CAN 模塊。
圖 3.1 使能 CAN 模塊
然後配置 CAN 模塊中用到的引腳,具體配置如圖 3.2 所示。
圖 3.2 CAN 模塊引腳配置
接著配置 CAN 模塊,其中需要注意的是配置該 CAN 模塊的實際物理地址。CAN 模塊的物理地址通過晶片的用戶手冊進行查找。
圖 3.3 配置 CAN 控制器的物理地址
接著配置 CAN 模塊的採樣點以及波特率,如圖 3.4 所示。具體配置項的說明如下:
CanControllerBaudRate:該選項用於配置 CAN 的波特率,最大可以配置為 2000 Kbps。
CanControllerBaudRateConfigID:配置 ID,按照默認即可。
CanControllerPropSeg:同步段長度的配置,單位為位時間。
CanControllerSeg1:相位緩衝段 1 長度的配置,單位為位時間。
CanControllerSeg2:相位緩衝段 2 長度的配置,單位為位時間。
CanControllerSyncJumpWidth:同步跳變寬度的配置
圖 3.4 配置 CAN 的波特率以及採樣點
關於採樣點的計算可以按照以下公式:
採樣點 = (1 + progSeg + Seg1)/(1 + progSeg + Seg1 + Seg2)
這裡波特率配置為 500 Kbps,採樣點配置為 75%。
下面配置 CAN 報文的數據長度,標準 CAN 只能配置為 8 個字節,CANFD 可以配置為 16、32、64 字節。
圖 3.5 配置 CAN 報文的數據長度
然後配置 CAN 的HardwareObject,具體的配置項目如下:
CanHandleType:選擇 BASIC 可以發送或者接收多幀,選擇 FULL 只能發送或接收一幀。
CanHwObjectCount:配置 Object 數量,跟郵箱數量有關。
CanIdType:選擇使用標準幀、擴展幀或者混合。
CanObject:配置該 Object 是用於發送還是接收。
CanControllerRef:選擇具體的 CAN 控制器實例。
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15145/tinymce/3-6.jpg)
圖 3.6 配置 CAN HardwareObject
最後配置 CAN 的過濾掩碼,具體如下圖所示。
圖 3.7 配置 CAN 過濾掩碼
四、 實際操作
完成以上配置後,便可以生成配置文件,然後需要修改測試代碼,具體如下圖所示。
圖 4.1 測試代碼 1
圖 4.2 測試代碼 2
最後編譯代碼下載到板子運行,這裡就不具體介紹,測試時需要將 CAN 的引腳接到 CAN 盒子,上電後可以看到串口每隔 1S列印一次 TxConfirmation 的信息,表示發送成功,並且 CAN 上位機可以收到發送的報文。
圖 4.3 串口列印信息
圖 4.4 CAN 上位機信息
接著可以測試 CAN 的接收,通過上位機向板子發送報文,可以看到板子的串口會把接收報文的數據列印出來,至此,關於 CAN 模塊的配置便介紹完畢了。
圖 4.5 CAN 接收驗證
五、參考資料
1.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08
評論