3. 实时控制外设与中断架构

在 Stellar 这类面向高性能实时控制的多核 MCU 中,实时性并不是由 CPU 主频单独决定的,而是由“外设事件产生 → 中断汇聚 → 优先级仲裁 → 内核响应 → 任务执行”这一整条链路共同决定。本节围绕 eMIOS、STM、ADC、PWM、比较器以及 NVIC/GIC 中断控制器,梳理这条链路的构成与配置要点。

一、定时器与外设:实时事件的源头

Stellar 的定时器体系主要包含两类角色。STM(System Timer Module)是系统级定时基准,通常用于操作系统节拍、周期性任务调度和时间戳;eMIOS(enhanced Modular IO System)则是面向电机与功率变换的可配置定时器阵列,每个通道可独立配置为输入捕获、输出比较、PWM 生成或单次触发模式。eMIOS 的价值在于它把“时间事件”直接转化为硬件动作,而不必经过 CPU 干预。

以三相电机 FOC 控制为例,典型配置是:eMIOS 的一个通道工作在中心对齐 PWM 模式,产生三相互补 PWM;另一个通道配置为输入捕获,用于读取霍尔或编码器信号;同时利用 eMIOS 的计数器下溢事件触发 ADC 采样,使采样点始终落在 PWM 波形的中点,避开开关噪声。这种“定时器触发 ADC”的硬件联动,是实时控制中最关键的确定性来源之一。

二、ADC 与比较器:把模拟量纳入时间轴

Stellar 的 ADC 支持硬件触发源选择,可被 eMIOS、STM 或外部信号触发。配置时需要关注三个参数:触发源、采样窗口和转换完成中断。采样窗口必须与信号源阻抗匹配,窗口过短会导致采样电容未充分充电,转换结果偏低;窗口过长则挤占控制周期。比较器(Comparator)则用于快速阈值判断,例如过流保护:当电流采样值超过设定阈值时,比较器可直接输出故障信号,经交叉开关送至 PWM 的故障输入,在数十纳秒内封锁 PWM 输出,而不等待 ADC 转换完成和软件判断。

比较器 + PWM 故障输入构成的是“硬件保护通路”,其响应时间远快于“ADC 中断 + 软件关断”的软件通路。两者应同时配置,硬件通路兜底,软件通路做记录与恢复。

三、中断控制器:NVIC 与 GIC 的分工

在单核视角下,Cortex-M 内核使用 NVIC 管理中断,每个中断源有独立的使能位和优先级寄存器。Stellar 的多核架构中,Cortex-M 核仍使用 NVIC,而 Cortex-A 核或实时核则通过 GIC(Generic Interrupt Controller)管理中断分发。GIC 的核心概念包括:中断分发器(Distributor)负责全局使能与优先级,CPU 接口(CPU Interface)负责向具体核提交中断,SPI/PPI/SGI 区分共享外设中断、私有外设中断和软件生成中断。

多核场景下最关键的问题是中断亲和性(Affinity):一个外设中断应该路由到哪个核?原则是让中断处理与产生该中断的外设、以及依赖该数据的任务尽量在同一核或同一簇内,减少跨核通信开销。例如 ADC 转换完成中断应路由到执行电流环的实时核,而不是通用应用核。

四、优先级分配与响应链路

优先级数值越小,优先级越高(Cortex-M 约定)。分配时应遵循“越靠近硬件、越短、越不可延迟”的中断优先级越高。一个可参考的分配示例如下:

中断源建议优先级理由
PWM 故障 / 比较器过流0(最高)硬件保护,必须立即封锁输出
ADC 转换完成1电流环输入,决定控制周期起点
eMIOS 捕获 / 位置更新2影响换相时刻
STM 系统节拍5调度用,允许轻微抖动
通信(CAN/以太网)8非硬实时,可被控制环抢占

需要特别注意的是优先级分组(Priority Grouping)。Cortex-M 的优先级寄存器分为抢占优先级和子优先级,只有抢占优先级不同才会发生嵌套。若把 ADC 和 PWM 故障设为同一抢占优先级,则 ADC 中断执行期间 PWM 故障无法抢占,保护延迟将增加一个中断服务程序的时间。因此保护类中断必须独占最高抢占优先级。

五、响应链路的量化观察

要验证这条链路是否满足实时性,可以在 ADC 中断入口翻转一个 GPIO,在电流环计算完成后再翻转一次,用示波器测量高电平宽度即为中断服务时间;同时用 eMIOS 的捕获功能记录 PWM 下溢到 ADC 中断入口的时间差,即为触发到响应的延迟。若该延迟抖动超过控制周期的 5%,就需要检查是否有更高优先级中断长时间占用 CPU,或 ADC 触发配置是否存在软件轮询替代硬件触发的情况。

Stellar 实时控制中断响应链路 eMIOS 定时器 PWM / 捕获 / 下溢触发 ADC 硬件触发采样 比较器 过流阈值判断 STM 系统节拍 硬件保护通路(ns 级) 中断汇聚与优先级仲裁 NVIC(M 核) / GIC Distributor + CPU Interface(多核) 抢占优先级 0–1 PWM 故障 / ADC 完成 可嵌套,独占最高级 抢占优先级 2–4 eMIOS 捕获 / 位置更新 可被保护类抢占 抢占优先级 5–8 STM 节拍 / 通信 非硬实时,可被抢占 实时核执行 ISR / 电流环任务 GPIO 翻转测量响应延迟与抖动 控制输出反馈至 PWM

把上述链路串起来看,实时控制的确定性来自三个层面的配合:外设硬件联动保证事件产生的时间精度,中断优先级保证关键事件能被及时响应,多核路由保证处理位置与数据依赖一致。任何一层配置不当,都会在最终的控制周期抖动上体现出来。