一、 概述
本文介绍了使用芯驰提供的满足 AUTOSAR 标准的 MCAL,开发 SemiDrive E3_CAD 配置。
硬件平台:芯驰 E3640 GATEWAY 开发板
软件平台: Semidrive_AutoSAR_MCAL_package_v3.0
二、 相关概念
1、CAN 和 CANFD:CAN-FD 可以理解成 CAN 协议的升级版,只升级了协议,物理层未改变。
区别 |
CAN |
CANFD |
传输速率 |
最大传输速率1Mbps |
速率可变, 仲裁比特率最高1Mbps(与CAN相同), 数据比特率最高8Mbps |
数据域长度 |
一帧数据最长8字节 |
一帧数据最长64字节 |
协议内容 |
- |
取消远程帧 |
表1 CAN 和 CANFD 区别
2、CAN标准数据帧和扩展数据帧:
CAN 协议可以接收和发送11位标准数据帧和 29 位扩展数据帧,CAN 标准数据帧和扩展数据帧只是帧 ID 长度不同,以便可以扩展更多 CAN 节点。
它们在功能上的特性相同:帧 ID 数值越小,优先级越高。
图 1 数据帧分布对比
三、 示例说明
在 EB 中依次配置 CAN 和 CANFD,分别完成数据收发。
四、 示例 CAN
1、使用 EB 软件打开 Semidrive_AutoSAR_MCAL_package_v3.0 软件包。
2、原理图及引脚:这里使用 GPIO_D12、GPIO_D13 对应控制器 CANFD7,经过收发器芯片 JTA1042 转换为 CAN7_H、CAN7_L,由开发板上 J2306 引出。
图 2 原理图
3、Mcu 配置中 CANFD7 的 RCC 使能(这里一定要使能)。
图 3 Mcu 配置
4、Port 配置中 GPIO_12、GPIO_13 的 Mux 复用为 CANFD7 的收发(上下拉选项为 NOPULL)。
图 4 Port 配置
5、Can配置主要由两部分:CanController 和 CanHardwareObject
5.1 CanController
5.1.1 CanControllerBaseAddress 保证控制器与其地址相匹配,详见参考手册 3.1 Memory Map 章节的 Table。
图5.1 设置CanControllerBaseAddress
5.1.2 CanMessageBufferRegiionConfig
这里修改缓存的大小,对于 CAN 标准帧或扩展帧必须设置为 CAN_MB_8_BYTES_PAYLOAD;
对于 CANFD 帧,设置为 64 字节时,可发送 12、16、32、48、64 字节的任一种报文。
图 5.2 设置 CanMessageBufferRegiionConfig
5.1.3 CanControllerBaudrateConfig
位时序和波特率配置:这里参照手册修改默认配置(75%→80%)。
图 5.3 设置 CanControllerBaudrateConfig
5.2 CanHardwareObject:
STANDARD 只能接受标准帧报文;
MIXED 能收发不同帧(标准帧、扩展帧、CANFD)的报文。
注意:CanObjectID HRH 先排列, ID=0 开始, HTH 后排列。
图 5.4 设置CanHardwareObject
6、串口发送、USBCANFD-200U/ZCANPRO 接收界面:
图 6.1 运行现象
文件路径:…\mcal\CanIf_TS_T01D20M1I4R0\src\Canif.c
图 6.2 代码分析
7、USBCANFD-200U/ZCANPRO 发送、串口接收界面:(先注意 EB 中波特率的匹配)
图 7.1 发送设置
这里串口显示接收长度为12:
图 7.2 串口显示
五、 示例 CANFD
1、在 CAN 标准帧的基础上,做如下修改:(仲裁域波特率: 500 采样:80%)
图 8.1 配置 CanControllerBaudrateConfig
2、双击进入到 CANFD 数据域的波特率配置(修改可变速率资料域波特率:2Mbps):
图 8.2 配置 CanControllerFDBaudrateConfig
3、此处设置在 64 字节的话 可发 12, 16, 32, 48, 64 字节任一种报文:
图 8.3 配置 CanMessageBufferRegionConfig
4、回到 Object,在 CanldType 选项选择 MIXED(同时兼容 CAN 标准帧和拓展帧):
图 8.4 配置 CanHardwareObject
5、修改示例代码:发送字节设置为 12,id 修改为扩展型 CANFD。
图 8.5 修改示例代码
6、串口发送、USBCANFD-200U/ZCANPRO 接收界面(类型显示为 CANFD):
图 8.6.1 串口显示
文件路径:…\mcal\CanIf_TS_T01D20M1I4R0\src\Canif.c
图 8.6.2 发送代码分析
图 8.6.3 运行显示
7、USBCANFD-200U/ZCANPRO 发送、串口接收界面:
修改数据发送设置,与 EB 中的波特率匹配,接收长度为 12 字节与示例代码中的长度匹配:
图 8.7.1 发送设置
这里串口显示接收长度为 12:
图 8.7.2 运行显示
六、 参考文档
- 《SD103_E3_REF_GATEWAY_ePOWERTRAIN_A03_SCH》
- 《E3400_E3600_MCU_Technical_Reference_Manual》
- 《E3400_E3600_MCU_Datasheet》
- 《SemiDrive_E3_MCAL_User_Guide》
作者:Alan Li / 李亚楠
评论