1. 课程导入

现代汽车电子电气架构正从分布式 ECU 向域控制器与中央计算平台演进,车内通信网络承担着传感器、执行器、控制器之间实时数据交换的核心职责。RH850 系列微控制器是瑞萨电子面向汽车控制领域推出的 32 位 MCU 家族,广泛应用于车身控制、动力总成、底盘域、网关以及智能座舱等场景。其内置的 RSCAN、RSCAN-FD 等 CAN 控制器模块,为 CAN FD 与 UDS 诊断协议提供了硬件基础。理解 RH850 的通信外设结构,是掌握 CAN FD 报文收发与 UDS 诊断服务实现的第一步。

一、RH850 在车载通信中的角色定位

RH850 并非单一型号,而是一个覆盖多核、多封装、多外设组合的 MCU 家族。以常见的 RH850/F1x、RH850/D1x、RH850/P1x 为例,它们分别面向车身、仪表与动力底盘应用。尽管定位不同,这些芯片在通信层面具有共性:集成多路 CAN 通道、支持 CAN FD 数据段可变速率、具备消息缓冲与接收过滤机制,并通过中断或 DMA 与 CPU 交互。

在整车网络中,RH850 通常扮演三类角色:一是作为节点 ECU,直接采集或驱动本地信号;二是作为网关,完成不同 CAN 通道、CAN 与 CAN FD、CAN 与以太网之间的报文路由;三是作为诊断目标,响应诊断仪发起的 UDS 请求。这三类角色对通信栈的要求不同,但都建立在 CAN 控制器与 CAN 收发器构成的物理链路之上。

核心认知:RH850 的通信能力 = CAN 控制器硬件 + 中断/DMA 机制 + 上层协议栈(CAN FD 数据链路 + UDS 诊断服务)。三者缺一不可。

二、CAN FD 与 UDS 的定位与协作关系

CAN FD(CAN with Flexible Data-rate)是经典 CAN 的升级版本,主要解决两个问题:一是单帧数据长度从 8 字节扩展到 64 字节,二是数据段可采用更高波特率。对于刷写、标定、大数据块传输等场景,CAN FD 显著提升了有效带宽。RH850 的 RSCAN-FD 模块支持仲裁段与数据段分离配置,允许在 500 kbps 仲裁速率下使用 2 Mbps 甚至 5 Mbps 的数据段速率。

UDS(Unified Diagnostic Services,ISO 14229)则是应用层诊断协议,定义了诊断仪与 ECU 之间的服务请求与响应格式,如 0x10 会话控制、0x27 安全访问、0x22 读数据、0x2E 写数据、0x31 例程控制、0x34-0x37 刷写序列等。UDS 本身不关心底层是 CAN 还是 CAN FD,它依赖 ISO-TP(ISO 15765-2)完成多帧拆包与重组,而 ISO-TP 又运行在 CAN 或 CAN FD 之上。

因此,CAN FD 与 UDS 的关系可以概括为:CAN FD 提供“运输通道”,ISO-TP 提供“分段与流控”,UDS 提供“服务语义”。在 RH850 工程中,三者通常以分层方式实现,底层驱动负责报文收发,中间层负责诊断帧组装,应用层负责服务分发。

RH850 车载通信分层架构与 CAN FD / UDS 定位 UDS 应用层(ISO 14229) 0x10 会话控制 · 0x27 安全访问 · 0x22/0x2E 读写数据 · 0x31 例程 · 0x34-0x37 刷写 服务语义 ISO-TP 传输层(ISO 15765-2) 单帧 SF · 首帧 FF · 连续帧 CF · 流控帧 FC · 多帧拆包与重组 分段与流控 CAN FD 数据链路层(ISO 11898-1) 仲裁段 500 kbps · 数据段 2/5 Mbps · 最大 64 字节 · CRC 增强 运输通道 RH850 硬件层(RSCAN-FD 控制器 + 收发器) 消息缓冲 · 接收过滤 · 中断/DMA · 多通道 CAN · 物理收发器 硬件基础 数据流方向: 诊断仪请求 → CAN FD 帧 → ISO-TP 重组 → UDS 服务分发 → RH850 应用处理 → 响应回传 关键参数:CAN ID、波特率、BS(块大小)、STmin(最小间隔)、P2/P2* 超时

三、课程知识框架与学习路径

本课程围绕“RH850 平台上的 CAN FD 与 UDS 工程实现”展开,知识框架分为四个层次:硬件与外设层、驱动与配置层、协议栈层、诊断应用层。学习路径建议由底向上推进,先理解 CAN FD 控制器寄存器与消息缓冲,再掌握 ISO-TP 分段机制,最后实现 UDS 服务与刷写流程。

层次 核心内容 关键工具/接口 典型产出
硬件与外设 RSCAN-FD 模块、收发器、终端电阻、通道映射 数据手册、原理图、示波器 物理链路正常、波形正确
驱动与配置 波特率配置、消息缓冲、过滤器、中断/DMA RH850 驱动库、CS+ / GHS CAN 报文可收发
协议栈 ISO-TP 多帧、流控、超时、CAN FD 64 字节 CANoe / CANalyzer、诊断脚本 长帧诊断数据可传输
诊断应用 UDS 服务、会话、安全访问、刷写序列 诊断仪、ODX/PDX、Bootloader ECU 可被诊断与刷写

四、典型场景与常见误区

以车身域控制器为例:诊断仪通过 OBD 接口发送 UDS 请求,网关将诊断报文路由到目标 RH850 ECU。若使用 CAN FD,单帧可携带更多数据,减少 ISO-TP 分帧数量,从而缩短刷写时间。但在实际工程中,常见误区包括:只关注应用层 UDS 服务而忽略 ISO-TP 流控参数;CAN FD 数据段波特率配置错误导致采样点偏移;消息缓冲数量不足导致高负载下丢帧;以及未正确处理 P2 超时导致诊断会话异常终止。

排障提示:当 UDS 请求无响应时,应按“物理层 → CAN 控制器 → ISO-TP → UDS 服务”的顺序逐层排查,避免直接修改应用层代码。

下面给出一个 RH850 CAN FD 通道初始化的参数片段,用于建立直观认识:

/* RH850 RSCAN-FD 通道初始化关键参数示例 */
CAN_CHANNEL   = 0;
ARBITRATION_BR = 500000;    /* 仲裁段 500 kbps */
DATA_BR        = 2000000;   /* 数据段 2 Mbps */
SAMPLE_POINT   = 80;        /* 采样点 80% */
RX_BUFFER_NUM  = 16;        /* 接收消息缓冲数量 */
TX_BUFFER_NUM  = 8;         /* 发送消息缓冲数量 */
FD_MODE        = ENABLE;    /* 启用 CAN FD 模式 */
ISO_TP_BS      = 8;         /* 块大小 */
ISO_TP_STMIN   = 5;         /* 最小间隔 5 ms */