2. STM32N6硬件架构与功耗域

STM32N6是ST面向边缘AI推理场景推出的高性能MCU,其核心价值在于把Cortex-M55、Neural-ART NPU、大容量片上内存和丰富外设集成在同一个芯片内,同时保留MCU级别的低功耗管理能力。要在这颗芯片上做功耗优化,第一步不是写代码,而是建立一张清晰的"硬件—功耗域"映射图:哪些模块属于哪个电源域、哪些模块在低功耗模式下会被关断、哪些模块可以独立保持供电。只有理解了这张图,后续的时钟门控、电源域切换、NPU推理调度才有依据。

一、计算子系统:M55与Neural-ART的分工

Cortex-M55是STM32N6的主控核心,运行频率可达800MHz(具体以型号数据手册为准),支持Helium向量扩展和Armv8.1-M的DSP指令。它负责系统控制、外设管理、协议栈以及轻量级AI推理。M55内部包含独立的指令缓存、数据缓存和TCM,这些存储单元的供电与核心时钟域绑定,进入Deep Sleep后核心域断电,缓存内容不保持。

Neural-ART是ST自研的NPU,算力约600 GOPS,专门用于加速卷积、深度可分离卷积、全连接等神经网络算子。NPU拥有独立的时钟域和电源域,可以在M55休眠时单独工作,也可以与M55并行执行。NPU内部包含权重缓存、激活缓存和MAC阵列,推理时数据流从系统SRAM经AXI总线进入NPU,结果再写回SRAM。NPU的功耗与推理负载强相关:空载时几乎不耗电,满载时功耗显著上升,因此调度策略上应尽量让NPU"短时高负载、快速完成、立即进入低功耗状态"。

二、内存子系统:SRAM分区与保持策略

STM32N6片上SRAM容量较大(典型配置为4.2MB,具体以型号为准),并且被划分为多个独立供电的SRAM块。这种划分是功耗优化的关键:在低功耗模式下,可以只保持存放关键数据(如唤醒标志、NPU权重、通信缓冲区)的SRAM块供电,其余SRAM块断电。例如,把NPU权重放在SRAM1并保持供电,把临时激活缓冲区放在SRAM2并在休眠时断电,可以显著降低静态功耗。

外部存储接口方面,STM32N6支持XSPI(Octal/Hex SPI)连接外部Flash或PSRAM。XSPI控制器有独立的时钟门控,在不需要访问外部存储时可以关闭时钟。需要注意的是,如果NPU权重存放在外部Flash,推理时需要先搬运到片上SRAM,搬运过程会消耗总线带宽和功耗,因此权重放置位置直接影响推理功耗。

三、外设与电源域划分

STM32N6的电源域大致可分为:VDD核心域(M55、NPU、SRAM、总线)、VDDIO外设IO域、VDDA模拟域(ADC、温度传感器等)、VBAT备份域。低功耗模式包括Sleep、Stop、Standby等,不同模式下各域的供电状态不同。Sleep模式下核心时钟停止但供电保持,SRAM内容保留;Stop模式下核心域断电,只有部分唤醒逻辑和备份域工作;Standby模式下几乎全部断电,仅备份域和少数唤醒引脚有效。

外设方面,每个外设都有独立的时钟使能位。未使用的外设必须关闭时钟,否则即使不工作也会产生动态功耗。特别要注意的是,某些外设在Stop模式下仍可工作(如LPUART、LPTIM、RTC),它们是低功耗唤醒链的关键组件。

STM32N6 硬件模块与电源域映射 VDD 核心域(可断电) Cortex-M55 800MHz / Helium / DSP I-Cache / D-Cache / TCM Sleep时时钟停,供电保持 Neural-ART NPU ~600 GOPS / 独立时钟域 权重缓存 / 激活缓存 / MAC 可独立供电,支持并行推理 片上 SRAM(多块独立供电) SRAM1 NPU权重 保持供电 SRAM2 激活缓冲 休眠断电 SRAM3 通信缓冲 保持供电 VDDIO / 外设域 XSPI 外部存储接口 独立时钟门控,可关闭 LPUART / LPTIM / RTC Stop模式下可工作,唤醒源 ADC / 温度传感器 VDDA模拟域,按需使能 VBAT 备份域(始终供电) 低功耗模式与各域状态 Sleep 模式 核心时钟停,供电保持 SRAM 内容保留 唤醒快,功耗中等 Stop 模式 核心域断电 仅保持SRAM块 + 备份域 LPUART/LPTIM可唤醒 Standby 模式 几乎全部断电 仅VBAT + 唤醒引脚 功耗最低,唤醒慢

四、低功耗模式下的模块行为与优化切入点

理解上述结构后,功耗优化可以落到几个具体动作上。第一,时钟门控:在初始化完成后,关闭所有未使用外设的时钟使能位。例如,如果应用不使用SDMMC,就清除RCC中对应的时钟使能位,避免该外设的时钟树持续翻转。第二,SRAM分区保持:根据数据生命周期决定哪些SRAM块在Stop模式下保持供电。NPU权重通常需要保持,而推理中间激活值可以在每次推理后丢弃,对应SRAM块断电。第三,NPU调度:把多次小推理合并为一次批量推理,减少NPU唤醒次数和总线搬运次数。第四,唤醒源选择:优先使用LPTIM或LPUART作为周期性唤醒源,而不是让M55定时器持续运行。

一个实用的判断原则:如果某个模块在低功耗模式下不需要"记住状态"或"继续响应事件",就应该让它进入断电或时钟关闭状态。保持供电的模块越少,静态功耗越低。

五、一个具体的功耗域配置示例

假设一个边缘AI应用:每200ms采集一次传感器数据,用NPU做一次推理,然后通过LPUART发送结果。配置思路如下:M55在采集和发送阶段运行,推理阶段可以休眠或参与后处理;NPU在推理时唤醒,推理完成后立即进入低功耗状态;SRAM1保持NPU权重,SRAM2用于激活缓冲并在推理后断电;LPUART配置为Stop模式唤醒源,RTC提供200ms时基。这样,系统大部分时间处于Stop模式,只有短时间窗口内M55和NPU同时工作,平均功耗可以显著低于始终运行的方案。

需要强调的是,以上参数和配置属于教学示例,实际项目中应以具体型号的数据手册、参考手册和实测结果为准。不同封装的STM32N6在SRAM容量、外设数量和电源域细节上可能存在差异,优化前务必确认芯片的具体型号和对应的电源管理章节。

六、从架构到功耗优化的思维路径