1. STM32N6边缘AI产品架构总览

STM32N6 是 ST 推出的面向边缘 AI 的高性能 MCU 系列,其核心价值在于把“感知—推理—决策—执行”这条链路压缩到一颗芯片内完成。与“MCU 采集 + 云端推理”或“MCU + 外挂 NPU”的方案相比,STM32N6 在片内集成了 Neural-ART 加速器(NPU)、大容量片上 SRAM、MIPI CSI-2 摄像头接口与 H.264 硬件编码器,使产品可以在本地完成图像采集、神经网络推理和结果输出,而不必把原始图像上传到云端。理解它的架构,关键不是记住外设清单,而是看清“数据从哪来、在哪里被处理、算力与内存如何匹配、最终以什么形式输出”这条完整链路。

一、从需求到部署的完整链路

一个典型的 STM32N6 边缘 AI 产品,其链路可以拆成五个阶段。第一阶段是需求定义:明确输入模态(图像、音频还是传感器时序)、目标类别数、可接受的延迟与功耗、以及是否需要联网。第二阶段是模型选型与量化:在 PC 端用 TensorFlow Lite 或 ONNX 训练并导出模型,再通过 ST Edge AI Core 工具链转换为 INT8 量化模型,生成可在 NPU 上运行的 .bin 与 C 代码。第三阶段是硬件与内存规划:确定摄像头分辨率、帧率、模型输入尺寸,并据此估算激活值与权重占用,决定哪些张量放在 NPU 专用内存、哪些放在 AXI SRAM。第四阶段是固件集成:把模型、前后处理、外设驱动和 RTOS 任务组织成流水线。第五阶段是部署与验证:在真实光照、真实目标下测精度、延迟和功耗,并据此迭代。

这条链路有一个容易被忽视的特点:它不是单向的。部署阶段测出的延迟超标,往往要回到模型量化阶段降低输入分辨率;精度不达标,可能要回到需求阶段重新确认类别定义。因此架构设计从一开始就要为“回退”留出余量。

二、关键组件与数据流

STM32N6 的架构可以按数据流方向理解。最前端是传感器接口:MIPI CSI-2 接摄像头,I2S/SAI 接数字麦克风,ADC 接模拟传感器。数据进入后,由 DMA 与 DCMIPP(图像处理流水线)完成裁剪、缩放、色彩转换,把原始帧整理成模型需要的输入张量。随后数据被送入 Neural-ART NPU,NPU 从专用 SRAM 读取权重与激活值,执行卷积、矩阵乘等算子。推理结果由 CPU(Cortex-M55)读取,做后处理(如 NMS、阈值判断),再通过 GPIO、UART、CAN 或以太网输出控制信号或上报结果。若需要视频留证,H.264 编码器可把原始帧压缩后写入外部 Flash 或通过 USB 传出。

这里的关键约束是内存带宽与容量。NPU 的算力再高,如果激活值放不下、或权重读取带宽不足,实际帧率就会掉下来。STM32N6 提供多块 SRAM(AXI SRAM、AHB SRAM 等),设计时必须把“每帧激活值大小 × 并发帧数”算清楚,再决定缓冲区数量。

STM32N6 边缘 AI 数据流与关键组件 传感器输入 MIPI CSI-2 摄像头 I2S 麦克风 / ADC 采集与预处理 DMA + DCMIPP 裁剪 / 缩放 / 色彩转换 Neural-ART NPU INT8 卷积 / 矩阵乘 权重与激活值读取 专用 SRAM 缓冲 CPU 后处理 Cortex-M55 NMS / 阈值判断 输出 GPIO UART/CAN 内存与带宽约束 每帧激活值大小 × 并发帧数 ≤ 可用 SRAM;权重读取带宽决定 NPU 利用率 AXI SRAM / AHB SRAM 分区规划,避免与 CPU 争抢 延迟/精度不达标 → 回退调整分辨率或量化策略 设计约束速查 ① 算力约束:NPU 峰值算力需覆盖 帧率 × 单帧 MAC 数,留 30% 余量 ② 内存约束:激活值 + 权重 + 双缓冲帧 ≤ 片上 SRAM,超出需外扩并评估带宽 ③ 功耗约束:NPU 与摄像头同时工作为峰值功耗,需按占空比估算平均功耗 ④ 实时性约束:端到端延迟 = 采集 + 预处理 + 推理 + 后处理,通常要求 < 100 ms

三、设计约束的实际含义

约束不是纸面指标,而是会直接改变架构决策。以“算力约束”为例:假设模型单帧需要 2.4 GMAC,目标帧率 30 fps,则 NPU 需提供约 72 GMAC/s 的有效算力。STM32N6 的 NPU 峰值算力远高于此,但有效算力受内存带宽限制,实际可能只有峰值的 40%~60%。因此选型时不能只看峰值,而要用工具链跑出的实测 cycle 数反推。

“内存约束”更常见。以 320×320×3 的 INT8 输入为例,单帧输入约 300 KB;若模型中间层最大激活值为 512 KB,双缓冲就需要 1 MB 以上。STM32N6 的片上 SRAM 总量有限,必须把权重放外部 Flash、激活值放片内,并让 DCMIPP 直接写入 NPU 可访问的区域,减少一次拷贝。

“实时性约束”则决定流水线结构。若采集 33 ms、预处理 8 ms、推理 25 ms、后处理 5 ms,串行执行约 71 ms,满足 100 ms 要求;但若推理涨到 40 ms,就必须把采集与推理做成双缓冲流水线,让第 N 帧推理与第 N+1 帧采集重叠,把端到端延迟压回 80 ms 以内。

架构设计的第一原则:先算内存,再算算力,最后排流水线。内存决定“能不能跑”,算力决定“跑多快”,流水线决定“延迟多低”。

四、一个可参考的架构决策顺序

实际项目中,建议按以下顺序推进,避免返工:

  1. 定输入:确定传感器类型、分辨率、帧率,算出原始数据率。
  2. 定模型:选择或训练模型,用 ST Edge AI Core 量化,记录单帧 MAC 数与峰值激活值。
  3. 定内存:按“权重放外部、激活放片内、帧缓冲双份”的原则分配 SRAM,验证不溢出。
  4. 定流水线:根据各阶段耗时决定串行还是双缓冲,确定任务优先级与中断分工。
  5. 定验证:在真实场景下测精度、延迟、功耗,记录回退触发条件。

这五步不是一次性完成的,而是每轮迭代都要重新核对。尤其当模型从 224×224 换到 320×320 时,激活值可能翻倍,内存规划必须重做。把这条链路和约束想清楚,后续的模型部署、外设配置和功耗优化才有稳定的基础。