2. STM32N6硬件平台与开发环境搭建

STM32N6 是 ST 推出的面向边缘 AI 视觉的高性能 MCU,内置 Neural-ART 加速器、MIPI CSI-2 接收接口与 H.264 硬件编码器,主频可达 800 MHz。要让这套芯片真正跑起来,第一步不是写算法,而是把硬件平台和开发环境搭稳。本节围绕核心板与相机扩展板选型、电源与时钟树、调试接口、CubeIDE/CubeMX 工程创建,以及烧录与串口验证这条主线展开,目标是让读者拿到一块 STM32N6 板卡后,能够独立完成从供电到"看到串口打印"的完整闭环。

一、核心板与相机扩展板选型

STM32N6 的官方评估起点是 STM32N6570-DK 探索套件,它板载 STM32N657X0H3Q(4.5 MB 连续 SRAM、2.5 MB 片上 SRAM、外部 64 MB PSRAM 与 512 MB eMMC),并直接引出 MIPI CSI-2 排线接口、以太网 PHY、USB Type-C 与 ST-LINK/V3E 调试器。如果项目需要更紧凑的形态,可选用第三方核心板(如带 BGA 封装的 N657 核心板 + 底板),此时要重点核对三件事:一是核心板是否把 VDDIO_3、VDDIO_2、VDDCORE 等电源域全部引出;二是 MIPI CSI-2 的差分对是否做了 100 Ω 阻抗控制并等长;三是调试口是否保留了 SWD 的 SWCLK/SWDIO/NRST 与串口 UART4_TX/RX。

相机扩展板方面,STM32N6 支持通过 CSI-2 接口接入 IMX335、IMX415 等常见 MIPI 传感器模组。选型时优先选择带 I²C 控制接口、供电为 1.8 V/2.8 V 双域的模组,并确认其 MIPI 时钟 lane 与数据 lane 数量(通常为 1 clock + 2 data,最高 1.5 Gbps/lane)。若使用官方 DK 板,可直接使用板载的 IMX335 子板,省去硬件适配工作。

二、电源与时钟树

STM32N6 的电源结构比传统 F4/H7 更复杂,核心是三个域:VDDCORE(内部 LDO 或 SMPS 供电,典型 0.9 V)、VDDIO_2(1.8 V,供 PSRAM、MIPI 等)、VDDIO_3(3.3 V,供 GPIO、UART 等)。上电顺序必须遵守:先 3.3 V,再 1.8 V,最后 0.9 V;若顺序错误,芯片可能无法正常复位。DK 板上已通过 PMIC 处理好该时序,自制底板时需用 PWR_EN 与 PWR_GOOD 信号做级联。

时钟树方面,STM32N6 的 CPU 时钟可由 HSE(典型 24 MHz 晶振)经 PLL1 倍频到 800 MHz,AXI/AHB/APB 再逐级分频。MIPI CSI-2 与摄像头像素时钟需要独立的 PLL2/PLL3 提供,典型配置为 PLL2 输出 600 MHz 给 CSI-2 PHY,PLL3 输出 24 MHz 给摄像头 XCLK。配置时务必在 CubeMX 的 Clock Configuration 页核对每个节点的实际频率,避免超频导致 MIPI 链路不稳定。

STM32N6 电源域与时钟树关系示意 电源域(上电顺序) ① VDDIO_3 = 3.3 V ② VDDIO_2 = 1.8 V ③ VDDCORE = 0.9 V 时钟源 HSE 24 MHz 晶振 PLL1 → CPU 800 MHz PLL2 → CSI-2 600 MHz PLL3 → XCLK 24 MHz 关键外设 MIPI CSI-2 接收 UART4 调试串口 SWD 调试接口 PSRAM / eMMC 开发环境搭建关键节点 CubeMX 选型 STM32N657X0H3Q 时钟配置 PLL1/2/3 分频 生成工程 CubeIDE 打开 烧录验证 SWD + 串口 验证判据:串口输出 "STM32N6 Boot OK" + LED 闪烁 + SWD 可连接 常见异常:无打印 → 查波特率 115200 / 时钟未起振;SWD 连不上 → 查 NRST 与 BOOT0 MIPI 无图像 → 查 PLL2 频率与 lane 极性

三、调试接口与烧录

STM32N6 支持 SWD 两线调试(SWCLK、SWDIO)与 JTAG 五线调试,实际开发中推荐 SWD,占用引脚少且速率足够。DK 板上的 ST-LINK/V3E 已通过板载排针引出,若使用自制板,需将 NRST 一并引出,否则无法在复位状态下连接。烧录方式有三种:SWD 在线烧录、USB DFU 下载、以及从外部 Flash 启动。首次调试建议用 SWD,配合 CubeIDE 的 Debug 配置即可。

烧录前需确认 BOOT0 引脚状态:BOOT0 = 0 时从内部 Flash 启动,BOOT0 = 1 时进入系统存储器(DFU 模式)。若程序跑飞,可短接 BOOT0 到 3.3 V 后复位,再用 CubeProgrammer 擦除芯片。

四、CubeMX 与 CubeIDE 工程创建

打开 STM32CubeMX,选择 STM32N657X0H3Q,在 Pinout 视图中依次配置:UART4 为 Asynchronous 模式(波特率 115200,8N1),PA13/PA14 为 SWD,PC13 为 GPIO_Output 驱动 LED。随后进入 Clock Configuration,将 HSE 设为 24 MHz,PLL1 的 M 分频设为 3、N 倍频设为 200、P 分频设为 2,得到 800 MHz 的 CPU 时钟;PLL2 配置为 600 MHz 供 CSI-2 使用。Project Manager 中勾选 Generate peripheral initialization as a pair of .c/.h files,工具链选 STM32CubeIDE,生成工程。

在 CubeIDE 中打开工程后,在 main.c 的 while(1) 前加入串口打印与 LED 翻转代码:

printf("STM32N6 Boot OK\r\n");
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);

注意 printf 需要重定向到 UART4,可在 syscalls.c 中实现 _write(),或使用 HAL_UART_Transmit() 直接发送字符串。编译后点击 Debug,CubeIDE 会自动通过 ST-LINK 烧录并停在 main() 入口。

五、串口终端验证与结果判读

用 USB 转 TTL 模块连接 DK 板的 UART4(TX→RX、RX→TX、GND 共地),在 PC 端打开串口助手,波特率 115200、8 数据位、1 停止位、无校验。复位板卡后,若看到 STM32N6 Boot OK 且 LED 以 1 Hz 闪烁,说明电源、时钟、GPIO、UART 四条链路全部打通。若串口无输出,先量 UART4_TX 是否有波形,再查时钟树中 UART4 的时钟源是否使能;若 SWD 无法连接,检查 NRST 是否被拉低、BOOT0 是否为 0。MIPI 摄像头若不出图,优先核对 PLL2 是否输出 600 MHz、CSI-2 lane 极性是否与模组一致。

建议在首次上电时用万用表逐点测量 VDDIO_3、VDDIO_2、VDDCORE 三路电压,确认上电顺序与电压值均符合数据手册要求,再插入摄像头模组,避免因电源异常损坏传感器。

完成以上步骤后,STM32N6 的最小系统已经跑通,后续的图像采集、AI 推理与编码功能都可以在此基础上逐步叠加。