
一、引言:AUTOSAR CAN 通信的核心地位CAN 总线是连接 ECU(电子控制单元)的 “神经网络”,而 AUTOSAR 通过标准化的基础软件(BSW)模块,将 CAN 通信的 “硬件操作→协议处理→数据分发” 拆分为清晰的功能单元。本文核心目标是梳理知识逻辑:从 CAN 帧的物理结构切入,到 AUTOSAR 特有的数据载体(PDU),到驱动层的接收机制以及模块交互,最终串联起 BSW 模块协作与整体数据流,帮你建立 “从硬件到软件” 的完整认知。信息参考文档:《ISO 11898-1/2/5(CAN 物理层 / 数据链路层)》《ISO 15765-2(CAN TP 协议)》《ISO 14229-1(UDS 诊断协议)》二、基础:CAN 报文帧的物理结构与核心特性2.1 CAN 帧的两种核心类型CAN 总线主要使用两类帧,核心差异如下表所示:帧类型ID 长度适用场景关键差异点(控制场)标准帧11 位普通车载信号(如电机转速、水温)IDE 位 = 0(标识标准帧),无 SRR 位扩展帧29 位复杂场景(如诊断、大数据传输)IDE 位 = 1,含 SRR 位(替代远程请求位)2.2 CAN 帧的组成与作用CAN 帧的核心组成单元及作用如下(以扩展帧为例):帧组成部分核心作用关键细节帧起始(SOF)1 个显性位(逻辑 “0”),标志帧开始,实现总线节点同步所有节点通过 SOF 校准时钟,是帧的 “起始信号”仲裁场含 29 位 ID(标准帧为 11 位)+ RTR 位,决定总线仲裁优先级ID 越小,仲裁优先级越高;数据帧 RTR=0(显性),远程帧 RTR=1(隐性)控制场含 IDE(扩展帧 IDE=1)、保留位(r1、r0)、4 位 DLC(数据长度码)DLC 指定数据场字节数(标准 CAN 0~8 字节,CAN FD 0~64 字节)数据场承载业务数据(如传感器值、控制指令)对应 PDU 中的 SDU(服务数据单元)CRC 场对 “SOF + 仲裁场 + 控制场 + 数据场” 做 CRC 校验,检测传输错误含 15 位 CRC 序列 + 1 位界定符,确保数据完整性应答场接收节点发显性位确认 “数据已收”,含应答位 + 应答界定符无应答则发送方重发帧结尾(EOF)7 个隐性位(逻辑 “1”),标志帧结束释放总线,避免冲突2.3 CAN 帧在 AUTOSAR 中的 “软件载体”:PDUPDU(Protocol Data Unit,协议数据单元)是 AUTOSAR 中 **“软件数据” 与 “物理 CAN 帧” 的桥梁 **,是所有模块间数据交互的唯一载体(从 CanDrv 输出的 L-PDU,到最终应用层处理的信号,均以 PDU 为中间形态)。PDU 的核心构成PDU 由SDU和PCI组成,分工明确:SDU(Service Data Unit,服务数据单元):纯业务数据(如 “电机转速 = 3000rpm”),对应 CAN 帧的数据场;PCI(Protocol Control Information,协议控制信息):控制传输的辅助信息(如源 / 目的地址、长度),对应 CAN 帧的仲裁场(CanId)、控制场(DLC)。不同层级的 PDU 类型AUTOSAR 按 “软件层级” 定义了不同类型的 PDU,核心差异如下表:PDU 类型归属层级核心特点包含信息(以 CAN 为例)处理模块L-PDU数据链路层包含 CAN 帧的完整硬件信息,是 “硬件相关” 的 PDUID、DLC、数据场、帧类型、CRC 结果CanDrv、CanIfN-PDU网络层(CanTp)用于大数据分段(ISO 15765-2),PCI 含 “分段控制信息”(如帧序号、总长度)L-PDU 数据 + 分段标识、序列号CanTp、PduRI-PDU交互层是 “应用层可见” 的 PDU,PCI 仅含 “软件标识”(如 PduId),无硬件信息SDU(业务数据) + PduId(软件