三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

【U5L4】 RLIN3 LIN 主从通信

【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_1RLIN35TXMCU→板载 LIN 收发器
P10_2RLIN35RX板载收发器→MCU
P09_1RLIN38TXMCU→板载 LIN 收发器
P09_0RLIN38RX板载收发器→MCU
P10_0GPIO OutputSLP_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 FF0x3D返回0F 06 F2 34 12 21 43 FF;诊断帧采用标准校验。

逻辑分析仪测得 Break 低电平宽度约为 672.72 μs,与 13 Tbits 的理论值 677.1 μs 接近,时序满足 LIN 通信要求。

图莫斯能够正确识别0x3C0x3D帧,显示的收发数据与设定值一致,且错误帧数为 0,MCU 主机通信验证通过。

MCU 作为从机

图莫斯配置为 LIN 主机,波特率为 19200 bit/s。主机通过0x24发送01 02 03 04 05 06 07 08,再通过0x25读取 MCU 从机返回的相同数据;两个普通数据帧均采用增强校验。

测试中0x24主机写和0x25主机读均正常完成,收发各 2 帧且错误帧数为 0,MCU 从机收发功能验证通过。

← 返回列表