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

一、 概述

目前 G9系列 SOC 内置最多 20 路 CANFD 控制器,最多 16 路 UART/LIN 控制器,其中 UART1-8 分配到 Safety,UART9-16 分配到 AP,并且使用了 SDPE 加速单元,CAN 控制器全部交由 SDPE 控制,如果使用 SDPE LIN 调度器,则 LIN 控制器由 SDPE 控制,否则 LIN 控制器由 Safety R5 控制。SDPE 模块由包处理硬件和固件组成,核心功能是出来 CAN\LIN\ETH 的转发,主要将大部分路由运算从 Safety R5 转移到 SDPE,无需上报给 Safety R5.

本文主要基于 G9X DEMO 板的 CAN 转 LIN 功能测试。

二、 准备环境

硬件:SD004_G9X_REF_A03_131 ×1,USBCAN-2I ×1,LIN Analyser ×1

软件:G9 PTG5.0,CANalyst 软件,DSView 软件,MobaXterm 软件

三、CAN/LIN报文路由配置

1、CAN 转 LIN 路由报文设置

SDPE 支持 CAN 报文和 LIN 报文的相互路由。与 CAN/CAN 不同的是,在路由表配置 CAN 报文和 LIN 报文路由的时候,需要先在路由表的 route 页增加 CAN/LIN 报文路由项目,之后在 LIN 报文页配置 LIN 报文的 Delay、DL、CS 等参数即可。

另外说明以下,LIN 报文 ID 的范围为 0x0-0x3F,其中 0x0-0x3B 用来携带信号,0x3C 和 0x3D 作为诊断和配置帧,0x3E 和 0x3F 作为保留帧以便未来扩展。

CAN 报文路由至 LIN 通道,路由表中的 LIN 报文的DRC 需要选择 “master”,vlin_sched需要选择“N”,参考配置如下:
lin1

LIN 报文页配置
lin2

LIN 报文页第一项表示 LIN1 上 ID 为 0X22 的 master response frame 调度周期为 50 毫秒,长度 8 字节,“vlin_sched”配为 N,表示此帧由 SDPE 调度,而不是 Safety 调度。

2、LIN 转 CAN 路由报文设置

使用 SDPE 将 LIN 报文路由至 CAN 通道,路由表中的 LIN 报文 DRC 需要选择“slave”,vlin_sched 选择“N,参考配置如下:

lin3

LIN 报文页配置如下:

lin4

3、VLIN 转 LIN 路由报文设置

VLIN/LIN 的报文配置与 CAN/LIN 报文路由配置基本相同,不同之处在于 路由表的 LIN 页中,LIN 报文的 vlin_sched 需要选择“Y”,表示将 LIN 报文由 VLIN 发送给 SDPE,同时,Safety R5 向 SDPE 传输完整的 LIN 报文时,需要表 LIN 页的 DRC 需要配置为 master,如果 Safety R5 只发送 LIN 报文帧头, DRC 应该配置为 slave,LIN 报文的 response 由从节点的发出,需要注意的是,路由表中的 Source BUS 必须是 VLIN,Target BUS 必须是 LIN,也就是不存在 SDPE 到 Safety R5 的反向传输,参考配置如下:

lin5

LIN 报文页配置如下:

lin6

 四、功能测试

1、CAN 转 LIN 功能测试

设置路由表如下。
lin7

LIN 报文页路由配置如下:
lin8

连接G9 DEMO板 CAN3 到CAN 盒子 CAN0(CANH<->CANH, CANL<->CANL),设置发送配置:


lin9
lin10

连接 G9 DEMO 板 LIN 到 LIN 盒子 LIN1,涉及接收配置(本次 LIN 设置 SLAVE 模式):
lin11

最后可以得到以下结果,对比 CAN 发送结果,LIN 接收结果正确。
lin12

2、LIN 转 CAN 功能测试

设置路由表如下。
lin13

LIN 报文页设置如下:
lin14

连接 G9 DEMO 板 LIN 和 LIN 盒子的 LIN0,配置 LIN 盒子 LIN0 通道,设置配置如下:
lin15
lin16

连接 G9 DEMO 板 CAN3 和 CAN 盒子 CAN0(CANH<->CANH, CANL<->CANL),最后可以得到如下结果:
lin17

3、VLIN 转 LIN 功能测试

设置路由表如下。
lin18

LIN 报文页路由设置如下:
lin19

在路径: /buildsystem/rtos/freertos_safetyos/application/test/lin/cmd_lin.c 下提供了一个 VLIN 到 LIN DEMO,使用 LIN send_frame 命令,0 代表 LIN channel,0x21 代表 port id 如下,返回 0代表成功:
lin20

连接 G9 DEMO 板 LIN 和 LIN 盒子的 LIN0,配置 LIN 盒子 LIN0 通道如下
lin21

可以得到如下结果,可以看到 LIN0 收到id 为 21 ,数据为 04 05 06 07 08 09 0A 0B 数据,数据正确。

lin22

如果 LIN 报文页设置 DRC 为 “slave”,运行上面命令后,则LIN 盒子 LIN0 会得到以下结果,只接收到帧头,LIN报文的response 由从节点发出:

lin23

到此,SemiDrive G9 CAN 转 LIN 功能测试到此结束。

五、参考文档

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 转 LIN 功能测试。
接下来将会持续更新更多关于 SemiDrive G9 系列的文章,感兴趣的关注或在评论区评论吧。

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

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

评论