AUTOSAR 入门教程(7)ComStack CAN(二)

CAN 通信 是汽车电子系统的核心神经,而 AUTOSAR 中的 ComStack CAN 架构则是实现高效可靠通信的关键。本文将解析 CAN 接口(CanIf)和 CAN 驱动(CanDrv)模块的设计原理与实现细节。

Pasted image 20251230110031.png

图:CAN 通信栈的分层架构示意

CAN 通信栈架构

AUTOSAR 中与 CAN 协议相关的通信栈采用分层设计,各层模块如下:

诊断相关模块、PDU 多路复用和 CAN 收发器也是完整通信栈的重要组成部分。

CAN 接口(CanIf)详解

CanIf 是 ECU 抽象层中的核心模块,提供五大关键服务:

核心概念解析

硬件对象句柄(HOH)

BasicCAN vs FullCAN

类型 特点 应用场景
FullCAN 单 CanId 传输/接收 确定性要求高的场景
BasicCAN 支持 CanId 范围 灵活配置需求

两者可在同一配置中共存,实现软件接收过滤的灵活配置。

工作流程解析

PDU 传输流程

  1. 映射 HTH 到硬件对象
  2. 确定目标 CAN 驱动
  3. 调用 Can_Write API
  4. 通知上层传输状态

PDU 接收流程

  1. 软件过滤 PDU
  2. 执行 DLC 检查
  3. 缓冲接收数据
  4. 向上层传递接收指示

大部分 CanIf 功能可通过配置灵活启用或禁用。

CAN 驱动(CanDrv)核心功能

作为 MCAL 层的关键模块,CanDrv 提供以下能力:

CanIf 是唯一允许访问 CanDrv 的上层模块。