2. AURIX硬件平台与通信外设
TC3xx是英飞凌AURIX第二代多核安全微控制器家族,其通信外设并非简单挂接在系统总线上的一组独立控制器,而是由时钟、复位、中断、DMA与端口控制共同约束的片上子系统。理解这一层硬件关系,是后续编写CAN-FD驱动与以太网协议栈的前提。本节以TC3xx中典型的CAN模块(MultiCAN+与MCMCAN)和以太网MAC为对象,梳理它们的硬件架构、时钟与引脚配置、内存映射以及中断系统。
一、CAN外设的两种硬件形态
TC3xx内部同时存在两类CAN硬件。较早的MultiCAN+模块以“节点—报文对象”为核心:每个CAN逻辑节点(Node)拥有独立的位定时与收发控制,报文对象(Message Object)统一存放在报文RAM中,通过列表(List)挂接到节点上,接收过滤和发送仲裁都基于报文对象完成。它的特点是报文对象数量多、灵活,但寄存器访问路径较长,适合传统CAN与网关转发场景。
MCMCAN(Modular CAN)则是面向CAN-FD设计的新一代模块,其结构更接近Bosch M_CAN:每个CAN实例包含一个协议控制器、一组Tx Buffer、Rx FIFO/FIFO0/FIFO1以及专用Filter。它原生支持CAN-FD的仲裁段与数据段双波特率、可变数据长度(0~64字节)和位时间对称/非对称配置。在TC3xx中,MCMCAN通常成组出现,多个CAN实例共享一个模块时钟与中断汇聚逻辑,适合高吞吐的CAN-FD通信。
二、时钟与引脚配置
CAN模块的时钟来自系统外设总线时钟fSPB,经模块内部分频后得到CAN时钟fCAN。位定时参数(波特率预分频、TSEG1、TSEG2、同步跳转宽度)都以fCAN为基准计算。以CAN-FD为例,若fCAN=80 MHz,仲裁段目标500 kbps、采样点75%,则总时间份额为80 MHz/500 kbps=160个tq,采样点位于第120个tq,可配置为预分频1、TSEG1=119、TSEG2=39、SJW=16;数据段目标2 Mbps时,总时间份额为40个tq,采样点同样取75%,即TSEG1=29、TSEG2=9。这些数值属于示例配置,实际应以模块手册和收发器要求为准。
引脚方面,CAN的CANRX/CANTX并非固定引脚,而是通过端口控制寄存器选择备用功能(ALT)。配置顺序通常是:先设置端口模式为备用输出/输入,再选择ALT编号,最后使能CAN节点的收发。若引脚被其他外设占用或未正确设置ALT,会出现“寄存器配置成功但总线上无波形”的现象。以太网MAC的引脚则涉及MII/RMII/RGMII数据线、TX_CLK/RX_CLK以及MDIO/MDC管理接口,同样需要端口复用与驱动能力配置。
三、内存映射与中断系统
TC3xx采用统一编址,CAN与以太网MAC的寄存器、报文RAM、描述符都映射到特定地址区间。MultiCAN+的报文对象RAM通常位于模块本地RAM区,通过列表基址寄存器定位;MCMCAN的Tx Buffer与Rx FIFO则通过消息RAM地址窗口访问。以太网MAC的DMA描述符一般放在系统RAM中,由MAC的DMA引擎直接读取,因此描述符必须按缓存行对齐,并在发送/接收前后执行缓存一致性操作。
中断系统方面,每个CAN节点或CAN实例的发送完成、接收、错误、总线关闭等事件都连接到中断路由器(IR)的服务请求节点(SRN)。开发者需要为每个SRN分配优先级、选择目标CPU,并在服务提供者(如CPU或DMA)中使能。以太网MAC的收发中断同样通过IR汇聚。实际工程中,常把CAN接收中断优先级设得较高,把发送完成交给DMA或低优先级中断,以避免高负载下丢帧。
四、配置检查要点
| 检查项 | 典型对象 | 判断依据 |
|---|---|---|
| 时钟 | fSPB、fCAN、分频器 | 位定时计算值与目标波特率一致 |
| 引脚 | Port ALT、CANRX/CANTX | 示波器可见差分波形 |
| 内存 | 报文RAM、描述符地址 | 地址对齐、缓存一致性处理 |
| 中断 | IR SRN、目标CPU | 中断可触发且不丢帧 |