• 正文
  • 相关推荐
申请入驻 产业图谱

STM32N6 功耗精准测量:基于 STLINK-V3PWR 的全流程实现

11/21 15:07
1295
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

STM32N6 作为 AI 原生 MCU,其功耗表现直接影响边缘智能设备的续航能力。本文基于 ST 官方x-cube-n6-ai-power-measurement软件包,详解使用STLINK-V3PWR实现 STM32N6 全场景功耗测量的方法,核心优势是 “覆盖 nA 到 500mA 动态范围、±0.5% 测量精度、软件自动化分析”,可精准捕获摄像头、NPU 推理等关键阶段的功耗数据。

资料获取:STM32N6功耗测量方法

1. 核心测量工具与硬件配置

1.1 核心硬件清单

  • 被测设备:STM32N6570-DK 开发板(集成 Neural-ART NPU、CSI 接口)
  • 测量工具:STLINK-V3PWR(电压 1.6-3.6V、电流几 nA-500mA、50kHz 带宽、1.6MHz 采样率)
  • 辅助工具:USB 数据线(供电 + 串口通信)、杜邦线(硬件修改)

1.2 硬件关键配置(必做步骤)

(1)开发板硬件修改

STM32N6-DK 默认 5V 供电,需断开原有供电链路,改为 STLINK-V3PWR 供电 VDDCore(核心供电域,含 CPU、NPU、RAM 等):

  1. 移除开发板上的电阻 R23、R24 和电容 C27,断开 5V 与外部 SMPS 的连接。
  2. 将 STLINK-V3PWR 的 OUT 引脚连接至开发板的 I_SENS_EXT_N(CN2-2 引脚),为外部 SMPS 供电(SMPS 效率参考 0.87)。

(2)引脚连接表(精准对应)

STLINK-V3PWR 引脚 STM32N6-DK 引脚 功能
OUT CN2-2(I_SENS_EXT_N) 为 VDDCore 供电
GND CN2-8(GND) 电源
TGI CN4-1(PG5) 触发功耗测量开始 / 停止
TVCC CN2-12(I_SENS_VDDIO_N) 检测 VDDIO 电压
GND CN2-7(GND) 信号地

2. 软件配置:固件与 Python 脚本

2.1 固件代码(核心流程)

烧录官方x-cube-n6-ai-power-measurement固件,核心逻辑是按阶段触发测量并记录时间戳:

while(1) {
  waitForUserTrigger(); // 等待用户按键触发
  startStlinkPwr(); // 启动STLINK-V3PWR,开始测量
  cameraInit(); // 摄像头初始化
  cameraCapture(); // 捕获图像(低功耗模式等待帧数据)
  cameraDeInit(); // 释放摄像头资源
  nn_inference(); // NPU神经网络推理(高功耗阶段)
  postProcessing(); // 后处理
  sendTimestamp(); // 串口发送时间戳数据
  deInitIPs(); // 关闭外设,结束测量
}
  • 关键函数:cameraCapture()中启用低功耗时钟,通过HAL_PreEnterSLEEPMode()降低等待阶段功耗,确保测量真实性。
  • 时间戳记录:pwr_timestamp_log()记录各阶段起始 / 结束时间,用于后续功耗与时间关联分析。

2.2 Python 脚本配置(自动化分析)

(1)环境搭建

  1. 安装 Python 3.x,进入Utilities/pwr_scripts目录。
  2. 执行命令安装依赖:pip install -r requirements.txt

(2)核心配置文件(example_configuration.yml)

需配置 STLINK-V3PWR 和开发板串口信息:

devices:
  - type: stlink_pwr_ctrl
    name: VDDCORE
    vdd: 3.3          # 供电电压
    efficiency: 0.87  # SMPS效率
    serial: 003800243432511939383236  # STLINK-V3PWR序列号
  - type: stlink_com_ctrl
    baud_rate: 115200 # 串口波特率
    serial: 003A00433331511234333834  # 开发板STLINK序列号

(3)关键 Python 指令

功能 指令 说明
STLINK-V3PWR 上电 python capture.py power -c my_config.yml on 启动测量工具供电
捕获功耗数据 python capture.py capture -c my_config.yml -w capture_full.csv 保存数据到 CSV 文件
生成分析报告 python full_sequence_power.py capture_full.csv 输出各阶段功耗统计
图形化显示结果 python capture.py display -r capture_full.csv 生成功耗时序图

3. 完整测量流程(6 步落地)

  1. 硬件搭建:按引脚连接表连接 STLINK-V3PWR 与开发板,完成开发板硬件修改。
  2. 固件烧录:将官方功耗测量固件烧录到 STM32N6-DK。
  3. 工具上电:执行 Python 上电指令,启动 STLINK-V3PWR 供电。
  4. 启动捕获:执行捕获指令,等待脚本就绪。
  5. 触发测量:按下开发板 USER 按键,触发固件中的测量流程(摄像头→NPU 推理→后处理)。
  6. 结果分析:执行报告生成和图形化指令,查看各阶段功耗数据。

4. 测量结果解读

4.1 分析报告(核心输出)

报告将按阶段输出功耗详情,示例如下:

1: 2393.54μJ in 19.97ms for camera started (119.86mW)
2: 4257.77μJ in 53.04ms for wait frame (80.27mW)
3: 28662.80μJ in 141.98ms for NOR flash init (201.9mW)
4: 180.60μJ in 1.20ms for nn_buffer copy (150.50mW)
5: 8068.1μJ in 30.46ms for nn inference (264.87mW)  # NPU高功耗阶段
6: 12.04μJ in 0.08ms for post processing (150.50mW)
总功耗:34547.8μJ in 247.2ms(平均139.7mW)

4.2 图形化显示

通过display指令生成功耗时序图,可直观观察各阶段功耗波动,快速定位高功耗模块(如 NPU 推理阶段功耗最高)。

5. 总结与关键注意事项

STM32N6 功耗测量的核心是 “精准控制供电链路 + 分阶段捕获 + 自动化分析”,STLINK-V3PWR 的宽动态范围和高精度的确保了从低功耗待机到高功耗 NPU 推理的全场景覆盖。关键注意事项:

  • 必须按要求修改开发板硬件,否则会导致供电冲突。
  • SMPS 效率需按实际使用的芯片手册调整(官方 DK 板默认 0.87)。
  • 测量前需确保固件中低功耗模式配置正确,避免额外功耗干扰结果。

相关推荐