2. XMC系列CAN模块:XMC4000/1000系列CAN节点(NODE)架构、CAN内核(CCAN)介绍
XMC4000与XMC1000系列微控制器集成了英飞凌专有的CCAN(Core CAN)内核,该内核基于CAN 2.0B规范,支持高达1 Mbit/s的通信速率。与传统的独立CAN控制器不同,CCAN采用模块化节点(NODE)架构,每个节点可独立配置为CAN或CAN FD(部分型号)通信,极大提升了多通道应用的灵活性。
2.1 CCAN内核架构概览
CCAN内核由多个功能单元组成,核心包括:
- CAN协议控制器(CPC):负责CAN帧的编码/解码、位时序同步、CRC校验及错误检测。
- 消息对象(Message Object, MO):每个节点拥有多个消息对象(通常为32或64个),用于存储接收/发送的CAN帧标识符、数据及控制位。
- 消息处理单元(Message Handler):自动管理消息对象的优先级仲裁、接收过滤及发送请求。
- 寄存器接口:通过AHB/APB总线与CPU交互,提供配置、状态及中断控制。
关键特性: CCAN支持自动重发(在仲裁丢失或错误帧后自动重试)、接收FIFO(缓解CPU中断压力)以及网关模式(实现节点间数据转发)。
2.2 CAN节点(NODE)架构
每个CAN节点(NODE)是一个独立的CAN通信实体,包含完整的协议控制器、消息对象及配置寄存器。XMC系列根据型号不同,集成1~4个CAN节点。节点架构的核心要素如下:
| 节点组件 | 功能描述 | 配置选项 |
|---|---|---|
| 位时序逻辑(BTL) | 同步CAN总线位流,生成采样点 | 预分频器、时间段1/2、同步跳转宽度 |
| 接收/发送移位寄存器 | 串行/并行转换,逐位收发 | 自动填充CRC与填充位 |
| 错误管理单元(EMU) | 维护发送/接收错误计数器(TEC/REC) | 错误警告、被动、总线关闭阈值 |
| 消息对象(MO) | 存储CAN帧ID、数据、控制位 | 每个节点32/64个MO,可配置为发送或接收 |
| 中断控制 | 产生接收、发送、错误状态中断 | 可屏蔽、组合中断线 |
设计提示: 在XMC4000系列中,每个CAN节点可独立选择时钟源(外设时钟或专用CAN时钟),实现不同波特率的多速率网络。
2.3 消息对象(MO)与接收过滤
消息对象是CCAN的核心数据容器。每个MO包含:
- 标识符(ID):11位标准ID或29位扩展ID。
- 数据域:最多8字节数据(CAN FD支持64字节)。
- 控制位:方向(发送/接收)、帧类型(数据/远程)、中断使能、自动重发等。
- 过滤掩码:支持位屏蔽过滤,实现多ID接收。
接收过滤流程:
- CAN总线上的帧被协议控制器接收。
- 消息处理单元将帧ID与每个MO的ID+掩码进行匹配。
- 匹配成功的MO存储数据并置位接收标志。
- 若多个MO匹配,优先级最高的MO(编号最小)获得数据。
2.4 错误管理单元(EMU)
每个CAN节点内置独立的错误管理单元,遵循CAN 2.0B协议规范。EMU维护两个计数器:
- 发送错误计数器(TEC):每次发送错误加8,成功发送减1。
- 接收错误计数器(REC):每次接收错误加1~8,成功接收减1。
根据计数器值,节点状态机在以下三种状态间切换:
| 状态 | TEC/REC条件 | 节点行为 |
|---|---|---|
| 错误主动 | TEC < 128 且 REC < 128 | 正常通信,检测到错误时发送主动错误帧(6个显性位) |
| 错误被动 | TEC ≥ 128 或 REC ≥ 128 | 只能发送被动错误帧(6个隐性位),发送前等待8个隐性位 |
| 总线关闭 | TEC > 255 | 完全脱离总线,不参与任何通信,需CPU复位恢复 |
故障排查要点: 在XMC系列中,错误状态可通过寄存器
ECR(Error Counter Register)实时读取。当节点进入错误被动或总线关闭时,建议记录TEC/REC值及错误码寄存器(ECR),以定位错误源(如位错误、填充错误、CRC错误等)。
2.5 XMC4000与XMC1000系列CAN模块差异
虽然两者均基于CCAN内核,但在集成度和功能上存在差异:
| 特性 | XMC4000系列 | XMC1000系列 |
|---|---|---|
| 最大CAN节点数 | 4(如XMC4800) | 1(如XMC1300) |
| 消息对象数/节点 | 64 | 32 |
| CAN FD支持 | 部分型号(如XMC4800) | 不支持 |
| 时钟源 | 可独立选择PCLK或专用CAN时钟 | 固定使用外设时钟 |
| 中断线 | 每个节点独立中断线 | 共享中断线 |
选型建议: 对于需要多通道CAN通信或CAN FD的应用(如工业网关、机器人控制),推荐XMC4000系列;对于单节点、成本敏感的传感器节点,XMC1000系列是更优选择。