一、 概述
本文将会介绍 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