【SemiDrive G9X】【PTG5.0】: CAN 转 CAN 功能测试

一、 概述

目前 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、路由表介绍

目前路由表主要需要配置的参数有以下几个部分。
routing_table

其中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 表示生成新的路由表成功: 

success

route.exe --table=g9_routing_table.xlsx --out=sdpe_cfg.bin

这里的g9_routing_table.xlsx,是路由表excel文件的名称,输出的sdpe_cfg.bin,可以使用SDFactoryTool烧录到路由表分区。

四、功能测试

1、CAN 转 CAN 功能测试

设置路由表如下。
can1

设置CAN 盒子,因为默认代码设置仲裁域是使用 1Mbps,以下是以 can0 为参考,can1 设置一样
can_pro

CAN 盒子 CAN1 连接 G9 DMEO 板 CAN3(CANH<->CANH, CANL<->CANL),CAN 盒子 CAN0 连接 G9 DMEO 板 CAN5(CANH<->CANH, CANL<->CANL),以下是 CAN 盒子CAN1 发送配置:


can_send

最后可以看到结果,CAN3 发送给网关的 PDU(ID:0X12)被路由至 CAN5(ID:0X55),数据为(07 22 05 44  55 66 77 88)。

cansend_success
can_send_success

2、CAN 转 VCAN 功能测试

设置路由表如下。
vcan1

目前在路径: /buildsystem/rtos/freertos_safetyos/application/test/can/cmd_can.c 提供了一个样例,开启接收测试,执行以下命令,该命令的作用是开启接收 log。

cmd_can

CAN 盒子 CAN0 连接 G9 DMEO 板的 CAN5;

CAN 盒子设置同上面设置 CAN 盒子部分,发送配置如下。
vcan_can
vcan_send

最后可以在 Safety 终端看到接收打印信息,可以看到, Hrh :28表示 Mailbox 通道,CANID:0x55 表示 ID,CanDlc:8 代表数据长度。

vcan_send_success2

3、VCAN 转 CAN 功能测试

设置路由表如下。
vcan_can2

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 表示发送成功。
can_write

其中 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)。
result

五、参考文档

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 系列的博文,感兴趣的可以在评论区评论或关注。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

akumasummon

akumasummon

4 个月前
你好,问一下,vCan其实是什么东西?virtual Can吗?是虚拟的,实际上没有跟任何硬件连接的吗?主要是什么功能?谢谢