一、 概述
目前 G9系列 SOC 内置最多 20 路 CANFD 控制器,并且使用了 SDPE 加速单元,CAN 控制器全部交由 SDPE 控制。SDPE 模块由包处理硬件和固件组成,核心功能是出来 CAN\LIN\ETH 的转发,主要将大部分路由运算从 Safety R5 转移到 SDPE,无需上报给 Safety R5.
本文主要基于 G9X DEMO 板的 CAN 转 CAN 功能测试。
二、 准备环境
硬件:SD004_G9X_REF_A03_131 ×1,USBCAN-2I ×1
软件:G9 PTG5.0,CANalyst 软件,MobaXterm 软件
三、路由配置
1、路由表介绍
目前路由表主要需要配置的参数有以下几个部分。
其中Source Bus 是输入 Bus 端口,Source ID 是输入信号的 ID,Target Bus 是输出 Bus 端口,Target ID 是输出信号 ID,DLC 是数据长度,其他参数本次测试暂时没用到如上图第一条规则,表示 CAN5 输入的 CAN ID 为 0X327 的 PDU,转发到 CAN11 ,CAN ID 为 0x327。
2、CAN/CAN 路由报文配置
SDPE 支持 Classic CAN、Extended CAN、CAN FD 和 Extended CANFD 报文路由,在路由表中,主要通过 bit30,bit31 区分(起始 bit 为 bit0),具体规则如下:
CAN Type |
Bit31 |
Bit30 |
Example |
CAN |
0 |
0 |
0x12 |
Extended CNA |
1 |
0 |
0x80000012 |
CANFD |
0 |
1 |
0x40000012 |
Extended CANFD |
1 |
1 |
0xC0000012 |
3、生成路由表
在客户支持系统上->首页->软件&工具上 SDPE Config Tool 工具用于生成路由表,下载并将其解压到 Windows 下,打开Windows命令行工具,cd到解压的目录,执行以下命令,出现 INFO:root:Done 表示生成新的路由表成功:
route.exe --table=g9_routing_table.xlsx --out=sdpe_cfg.bin
这里的g9_routing_table.xlsx,是路由表excel文件的名称,输出的sdpe_cfg.bin,可以使用SDFactoryTool烧录到路由表分区。
四、功能测试
1、CAN 转 CAN 功能测试
设置路由表如下。
设置CAN 盒子,因为默认代码设置仲裁域是使用 1Mbps,以下是以 can0 为参考,can1 设置一样
CAN 盒子 CAN1 连接 G9 DMEO 板 CAN3(CANH<->CANH, CANL<->CANL),CAN 盒子 CAN0 连接 G9 DMEO 板 CAN5(CANH<->CANH, CANL<->CANL),以下是 CAN 盒子CAN1 发送配置:
最后可以看到结果,CAN3 发送给网关的 PDU(ID:0X12)被路由至 CAN5(ID:0X55),数据为(07 22 05 44 55 66 77 88)。
2、CAN 转 VCAN 功能测试
设置路由表如下。
目前在路径: /buildsystem/rtos/freertos_safetyos/application/test/can/cmd_can.c 提供了一个样例,开启接收测试,执行以下命令,该命令的作用是开启接收 log。
CAN 盒子 CAN0 连接 G9 DMEO 板的 CAN5;
CAN 盒子设置同上面设置 CAN 盒子部分,发送配置如下。
最后可以在 Safety 终端看到接收打印信息,可以看到, Hrh :28表示 Mailbox 通道,CANID:0x55 表示 ID,CanDlc:8 代表数据长度。
3、VCAN 转 CAN 功能测试
设置路由表如下。
CAN 盒子设置同上面设置 CAN 盒子部分。
CAN 盒子 CAN0 连接 G9 DMEO 板的 CAN5;
目前在路径: /buildsystem/rtos/freertos_safetyos/application/test/can/cmd_can.c 提供了一个样例,可以使用命令,由于在路径 /buildsystem/rtos/freertos_safetyos/application/sample/sdpe_mgr/sdpe_mgr.c 开启 SDPE 初始化的时候初始化了 CAN,所以可以直接使用 CAN write 命令,如下,返回 Result :0 表示发送成功。
其中 20 表示 mailbox 编号,每路 CAN 分配了 7 路mailbox,其中 0-6 是 CAN1,7-13 是 CAN2,以此类推,0x12 是发送的 ID,8 代表发送的字节长度。
最后可以通过 CAN 盒子看到如下结果,VCAN3 发送给网关的 PDU(ID:0X12)被路由至 CAN5(ID:0X55),数据为(02 03 04 05 06 07 08 09)。
五、参考文档
1、《SemiDrive_G9_网关软件开发指南_Rev1.3.pdf》
2、《SD_G9_Quick_Start_Rev2.4.pdf》
3、《SD_G9_SDPE_Reference_Manual_Rev1.7.pdf》
六、总结
以上操作,完成了 SemiDrive G9 CAN 转 CAN 功能测试。
接下来将持续更多关于 SemiDrive G9 系列的博文,感兴趣的可以在评论区评论或关注。
评论
akumasummon
4 个月前