一、硬體 & 軟體環境概述
- 硬體平台:E3110 開發板(SD107_E3_REF_176_DEMO_A02_030);
- 軟體環境:IAR Embedded Workbench for ARM 9.30.1;
- 軟體平台:E3 MCAL PTG3.0;
- 軟體工具:23.1201;
- MCAL 配置工具:EB tresos Studio 26.2.0;
- CAN 盒 ZLG USBCANFD 200U;
- 上位機 ZCANPRO V2.2.4。
圖1 E3110 官方開發板
1.硬體接口
E3110 開發板原理圖引腳使用為:GPIO_A4 -> CANFD3.RX、GPIO_A5 -> CANFD3.TX 。
2.CAN 常規配置 PORT 引腳配置,將 GPIO_A4 配置成 CANFD3.RX 復用功能,將 GPIO_A5 配置成 CANFD3.TX 復用功能;
在 Mcu 模塊中,將 CANFD3 的功能打開;
添加 CANFD3 外設模塊配置,查看相應主晶片的TRM文檔,正確填寫 CAN 外設的基地址;
CAN 外設時鐘確認,默認 E3 系列輸入給 CAN 模塊的 Root Clock 是 PLL 分頻後的 Clock為 40Mhz,如果客戶需要更高精度時鐘可選擇外部晶振 24M 需要修改代碼 Mcu_ClkCfg.c
CAN 支持 RxFIFO 模式,通過 CanHwObjectCount 參數設置,當CanHwObjectCount 大於等於 8,默認開啟 RxFIFO 模式,具體介紹詳見下文。
CAN 波特率配置,配置 500K;
添加收發字節大小,CAN 只支持設置 8 個字節長度,支持 64 個有效郵箱;
添加收發句柄,關聯正確的 CAN 外設,該數據幀可以接收/發送 EXTENDED、STANDARD 數據幀,收發數據幀長度小於等於 8 個字節。
接收/發送句柄數量,每個 CanHardwareObject 需要固定分配對應得 CanMessageBufferRegion, 如果不關聯對應得 CanMessageBufferRegion, 則默認所有的 MB 分配到 CAN_MB_REGION_0(default 8bytes padload),此時最多可使用 32MBs,也可以手動將 MB 分配到 CAN_MB_REGION_1,此時最多可使用 64MBs,下文為介紹內容均將 MB 默認分配給 CAN_MB_REGION_0 ,故最多支持 32 個收發 CanHardwareOject 設置。
3.標準郵箱配置
標準郵箱是指非 RxFIFO 模式下接收 CanHardwareOject,在此模式下接收 CanHardwareOject 可以配置成接收 Mixed、Extended、Standard 類型數據幀,並且只能配置一個對應的濾波規則;CanHwFilterMask: 如果該 bit 設置為 1,則意味著 CanHwFilterCode 對應的 bit 位需要過濾,如果設置為 0,則 CanHwFilterCode 對應的 bit 位不需要過濾;
在 Standard 模式下,僅接收標準數據幀,濾波可通過 CanHwFilterMask 和 CanHwFilterCode 關鍵字設置,範圍為 0x0~0x7FF;
在 Extended 模式下,僅接收擴展數據幀,濾波可通過 CanHwFilterMask 和 CanHwFilterCode 關鍵字設置,範圍為 0x0~0x1FFF,FFFF;
在 Mixed 模式下,可接收擴展數據幀和標準數據幀,濾波可通過 CanHwFilterMask 和 CanHwFilterCode 關鍵字設置,範圍僅為 0x0~0x7FF,只能過濾擴展幀的高 11bits,或者標準幀報文。
以上內容同 CANFD 配置,舉例說明參考文檔,SemiDrive E3 MACL CANFD 配置。
4.RxFIFO 郵箱配置
CAN 模式下支持 RxFIFO 郵箱配置,其中 CanHWOjectCount 可設置為 8/10/12...,最大支持到 38;在 RxFIFO 郵箱只支持接收 Extended 或 Standard 類型數據幀,在同一個 CanController 僅支持一個 RxFIFO CanHardwareOject。
CanRxFIFOHighPriority:用於指定接收匹配優先級,如果勾選則默認接收報文優先匹配 RxFIFO 過濾規則,再匹配普通 MB 過濾規則。
CanRxFIFOFilterTableConfig,分FilterTypeA、FilterTypeB、FilterTypeC、FilterTypeD,不同的接收濾波類型,支持接收濾波規則數量不同,對於擴展幀的濾波方式也不同,EB 配置界面如下圖。
FilterTypeA:每個FilterElement支持過濾一幀標準幀或擴展幀報文,支持濾波個數為 (CanHWOjectCount-6)*4,下圖以擴展幀濾波為例示意說明,從下圖配置可知,CAN_HRH_0 最多支持 8 條濾波規則,僅接收擴展幀 ID 範圍為 0x12-0x19 如下圖所示;
FilterTypeB:每個 FilterElement 支持過濾兩幀標準幀報文或者擴展幀報文的高 13bits(29`16),具體濾波個數為 (CanHWOjectCount-6)*4*2,下圖以擴展幀濾波為例示意說明,從下圖配置可知,CAN_HRH_0 最多支持 16 條濾波規則,以 CanHwFilter_15 為例,擴展幀接收 ID 範圍為:0x1010,0000 - 0x1010,FFFF,
FilterTypeC:Rx FIFO filter table with type C will not take Mixed/Extended frame type into account,This means that Rx FIFO with type C filter table will always used for standard type hardware object,雖然接收數據類型設置僅接收標準幀,但是實際上可以通過設置的濾波規則接收符合要求的擴展幀,每個 FilterElement 支持過濾四幀標準幀報文或者擴展幀報文的高 8bits(29`22),具體濾波個數為 (CanHWOjectCount-6)*4*4,下圖以擴展幀濾波為例說明,CanHwFilter_0 接收 ID 範圍:0x1000,0000-0x101f,ffff,CanHwFilter_1 接收 ID 範圍:0x1fe0,0000-0x1fff,ffff;
FilterTypeD:拒絕接收所有報文,特指使用 RxFIFO 模式 CanHardwareOject 拒絕接收所有報文,由於使能 CanRxFIFOHighPriority,CAN_HRH_0 濾波設置如下圖,當標準幀 ID 為 0x12 時,log 顯示 HRH_2 HardwareOject 接收。
《E3640_MCU_TRM_Rev00.13》
《E3640_MCU_Datasheet_Rev00.17》
《SemiDrive_E3_MCAL_User_Guide_Rev03.00》
《SDToolBox_User_Guide》
歡迎在博文下方留言評論,我們會及時回復您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:娜就這麼嘀
更多資訊,請掃碼關注我們!
評論