SemiDrive E3 MCAL 開發系列(9)– Can 模塊的使用

一、  概述

本文將會介紹 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 控制器實例。


                                     

                                                                                  圖 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

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論