2. STM32边缘AI硬件选型与资源评估
把模型部署到STM32上,第一步不是写推理代码,而是判断“这颗芯片到底装不装得下、跑不跑得动”。STM32家族型号极多,从Cortex-M0+到Cortex-M7、M33,再到带NPU的STM32N6,算力、内存、外设差异巨大。选型错误通常表现为两种后果:一是模型放不进Flash或激活值溢出SRAM,编译期就失败;二是能跑但延迟远超预期,实时性不达标。因此本节围绕内核、NPU、存储约束和外设接口四条主线,给出可操作的评估方法。
内核决定算力上限与指令效率
Cortex-M4带DSP指令和单精度FPU,适合小规模CNN和传统机器学习,典型主频80~180MHz。Cortex-M7是双发射超标量架构,带双精度FPU和更大的I-Cache/D-Cache,主频可达480~600MHz,适合中等规模视觉模型。Cortex-M33主打TrustZone安全与DSP扩展,算力介于M4与M7之间,适合需要安全隔离的端侧推理。关键指标是每周期乘加能力:M4的SIMD MAC一次处理2个8位或1个16位数据,M7则可通过双发射和更宽的数据通路获得更高吞吐。粗略估算时,可用“有效算力 ≈ 主频 × 每周期MAC数 × 利用率”,利用率受内存带宽和Cache命中率影响,通常取30%~60%。
需要强调的是,主频高不等于推理快。若模型权重放在外部QSPI Flash,每次取权重都要走外部总线,M7的高主频会被内存墙抵消。因此评估时必须同时看内核和存储层级。
NPU加速器:STM32N6的Neural-ART
STM32N6内置Neural-ART NPU,提供约600 GOPS的INT8算力,并配有专用NPU SRAM。它与CPU是异构关系:NPU负责卷积、矩阵乘等密集算子,Cortex-M55负责前后处理和控制流。使用NPU的前提是模型算子能被工具链映射,若存在不支持的算子,会回退到CPU执行,形成性能瓶颈。因此选型时要先确认目标模型(如MobileNetV2、YOLO-Fastest)的算子覆盖率,而不是只看GOPS数字。
SRAM与Flash的量化估算
Flash主要存放权重和代码。以INT8量化模型为例,参数量1M的模型约占1MB Flash。若芯片内部Flash只有512KB,就必须外扩QSPI Flash,但要注意XIP执行时权重读取延迟。SRAM则决定激活值能否容纳。以MobileNetV2第一层卷积为例,输入224×224×3,若中间张量以INT8存储,单层输出112×112×32约401KB,远超多数M4的SRAM。因此实际部署必须做算子融合、分块计算或降低输入分辨率。评估公式可写为:
SRAM需求 ≈ 输入张量 + 输出张量 + 权重缓存 + 中间缓冲
以 96×96×3 INT8 输入、32通道输出为例:
输入 = 96×96×3 = 27,648 B ≈ 27 KB
输出 = 48×48×32 = 73,728 B ≈ 72 KB
双缓冲 + 中间层 ≈ 150–200 KB
结论:需选择 SRAM ≥ 256KB 的型号(如 STM32H7 系列)
这段计算说明:输入分辨率对SRAM影响是平方级的,把224降到96,内存需求下降约5.4倍。因此“先降分辨率、再选芯片”往往比“先选大芯片”更经济。
外设接口对部署的影响
DCMI用于并口摄像头,配合DMA可直接把图像写入SRAM,避免CPU逐像素搬运。若使用SPI摄像头,带宽通常只有几Mbps,高帧率下会成为瓶颈。I2S用于音频,麦克风阵列采集时需双缓冲DMA,保证推理与采集并行。SPI和I2C多用于连接IMU、温湿度等低速传感器,速率要求不高,但要注意I2C总线锁死风险。选型时应确认目标型号是否同时具备所需接口数量,例如“DCMI + I2S + 2路SPI”是否可同时复用而不冲突引脚。
按任务选择STM32型号的实用方法
建议按以下顺序决策:第一,确定模型输入尺寸和量化位宽,估算Flash与SRAM下限;第二,判断是否需要NPU,若模型以卷积为主且延迟要求高,优先STM32N6;第三,核对外设接口是否满足传感器需求;第四,检查封装引脚和功耗是否匹配产品形态。对于关键词唤醒、异常振动检测等小模型,STM32F4或L4即可;对于图像分类,STM32H7是稳妥选择;对于实时目标检测,STM32N6的NPU优势明显。
综上,STM32边缘AI选型的本质是“算力—内存—外设”三者的匹配。先用模型规模框定内存下限,再用延迟要求决定内核或NPU,最后用传感器接口做最终筛选。掌握这套评估流程,就能在数十个STM32型号中快速锁定合适目标,避免反复换板带来的时间浪费。