【U5L4】 RLIN3 LIN 主从通信
说明
LIN(Local Interconnect Network)是低成本、单线、主从式汽车通信总线。网络中由唯一主节点发送 Break、Sync 和 PID 帧头,从节点根据 ID 接收数据或返回响应。
本工程将 RLIN35 配置为 LIN 主机,通过调度表发送一帧数据并读取一帧从机响应,验证基础主从收发通信。
环境说明
- 软件环境:e2 studio 2025-12;R-Car U5L FSP V1.1.1;TCANLINPro v3.1
- 开发环境:Visual Studio Code 1.129.0.0、CMake、Ninja、ARM GNU Toolchain 13.3
- 目标芯片:U5L411001EBFC,LQFP100封装
- 调试器:Renesas E2 Emulator
- 工程名称:
rlin3_lin_master_slave_ep
本次实验采用了由霆宝科技开发的 R-Car U5L4 评估板(型号: R7F711001EBFC)。
RLIN3 支持 LIN 主从通信、Break/Sync 生成与检测及校验和处理。本实验使用主机连续调度模式完成无条件帧收发。
功能设计
MCU 作为 LIN 主机,图莫斯作为从机:
| 帧 ID | 操作 | 数据 |
|---|---|---|
0x3C | 主机发送 | 0F 06 B2 00 FF 7F FF FF |
0x3D | 从机应答 | 0F 06 F2 34 12 21 43 FF |
MCU 作为LIN从机,图莫斯作为主机:
| 帧ID | 操作 | 数据 |
|---|---|---|
0x24 | 主机发送 | 01 02 03 04 05 06 07 08 |
0x25 | 从机应答 | 01 02 03 04 05 06 07 08 |
普通数据帧采用增强校验。增强校验同时覆盖PID和Data,错误检测能力高于标准校验。
软件配置
RLIN3 与 LIN Stack
工程配置主机、从机两个 LIN Stack 实例,底层均使用 RLIN3 LIN 驱动,通信速率统一为 19200 bit/s,允许的波特率最大误差为 5%。
从机配置
从机底层实例为g_lin1,使用 RLIN3 通道 8,Operation Mode设为Slave,并启用Slave auto baud rate。从机根据主机发送的 Sync 同步场校准位时间,初始波特率设为 19200 bit/s。
驱动回调为lin_stack_lin_callback,公共、接收、发送和状态中断优先级均设为 10。收到0x24帧头后,从机接收 8 Byte 数据;收到0x25帧头后,返回0F 06 F2 34 12 21 43 FF。
主机配置
主机底层实例为g_lin0,使用 RLIN3 通道 5,Operation Mode设为Master,从机模式关闭,波特率设为 19200 bit/s。主机负责产生 Break、Sync 和 PID,并按调度表依次发送0x24数据帧和0x25响应请求。
主机 LIN Stack 还需配置 Transport Layer Timer 和 Schedule Timer:前者提供协议超时基准,后者按设定间隔推进调度表。
Pins 与接线
| MCU 引脚 | 功能 | 用途 |
|---|---|---|
P10_1 | RLIN35TX | MCU→板载 LIN 收发器 |
P10_2 | RLIN35RX | 板载收发器→MCU |
P09_1 | RLIN38TX | MCU→板载 LIN 收发器 |
P09_0 | RLIN38RX | 板载收发器→MCU |
P10_0 | GPIO Output | SLP_N,High 为正常工作 |
外部分析仪接开发板 P2 的 12V、LIN、GND。不得将分析仪 LIN 端直接接到 MCU 的 TX/RX 逻辑引脚。
代码编写
两个无条件帧均使用增强校验:
staticuint8_tg_master_tx_data[8]={0x0FU,0x06U,0xB2U,0x00U,0xFFU,0x7FU,0xFFU,0xFFU};staticuint8_tg_master_rx_data[8];staticlin_stack_frame_info_tframes[]={{LIN_STACK_FRAME_TYPE_UNCD,LIN_STACK_FRAME_DIR_PUB,50U,{0x24U,{g_master_tx_data},8U,LIN_CHECKSUM_TYPE_ENHANCED}},{LIN_STACK_FRAME_TYPE_UNCD,LIN_STACK_FRAME_DIR_SUB,60U,{0x25U,{g_master_rx_data},8U,LIN_CHECKSUM_TYPE_ENHANCED}}};主机完成0x25接收后,将g_master_rx_data与期望数组比较:
staticuint8_tconstexpected_rx_data[8]={0x0FU,0x06U,0xF2U,0x34U,0x12U,0x21U,0x43U,0xFFU};bool response_matches=(0==memcmp(g_master_rx_data,expected_rx_data,sizeof(expected_rx_data)));功能验证
MCU 作为主机
图莫斯配置为 LIN 从机,波特率为 19200 bit/s。0x3C接收 MCU 发送的0F 06 B2 00 FF 7F FF FF,0x3D返回0F 06 F2 34 12 21 43 FF;诊断帧采用标准校验。
逻辑分析仪测得 Break 低电平宽度约为 672.72 μs,与 13 Tbits 的理论值 677.1 μs 接近,时序满足 LIN 通信要求。
图莫斯能够正确识别0x3C和0x3D帧,显示的收发数据与设定值一致,且错误帧数为 0,MCU 主机通信验证通过。
MCU 作为从机
图莫斯配置为 LIN 主机,波特率为 19200 bit/s。主机通过0x24发送01 02 03 04 05 06 07 08,再通过0x25读取 MCU 从机返回的相同数据;两个普通数据帧均采用增强校验。
测试中0x24主机写和0x25主机读均正常完成,收发各 2 帧且错误帧数为 0,MCU 从机收发功能验证通过。
