1. 课程导论与硬件准备:从STM32U5到AI部署的第一公里
各位同学好,我是你们的嵌入式AI讲师。今天咱们正式开课。
先聊个题外话。我入行那会儿,想在MCU上跑AI模型,基本是天方夜谭。那时候大家觉得AI是云端的事,跟单片机八竿子打不着。但你看现在,STM32U5这种片子,居然能在几十毫瓦的功耗下跑轻量级神经网络——说实话,我第一次跑通的时候也挺兴奋的。
这门课叫《STM32Cube AI低功耗AI部署实战》,核心就三件事:低功耗、AI推理、STM32实战。第一章我们先打好地基,把硬件和工具链摸清楚。
1.1 STM32U5系列:为AI而生的低功耗猛兽
STM32U5是ST主推的超低功耗旗舰系列。它基于ARM Cortex-M33内核,带TrustZone和FPU。但真正让我看中的,是它在性能与功耗之间找到了一个很巧妙的平衡点。
我列几个关键参数,你感受一下:
| 特性 | STM32U585 | 备注 |
|---|---|---|
| 内核 | Cortex-M33 @ 160MHz | 带单精度FPU + DSP指令集 |
| SRAM | 2MB(含786KB ECC) | 够放中等规模的TFLite模型 |
| Flash | 2MB | 双Bank,支持读写同时操作 |
| LPUART / LPTIM | 支持 | 低功耗外设,跑AI时也能省电 |
| 待机电流 | 约 100 nA | 带RTC和备份寄存器 |
| 运行模式功耗 | 约 60 µA/MHz | 跑AI推理时约 10-20 mA |
你可能会问:160MHz跑AI够用吗?
嗯,这个问题我当年也纠结过。后来发现,对于传感器数据分类、关键词唤醒、异常检测这类任务,模型参数量通常在几十K到几百K之间。STM32U5的2MB SRAM完全装得下,而且Cortex-M33的DSP指令集对卷积运算有加速效果。我在一个振动监测项目里,用U5跑一个4层CNN,单次推理只用了8ms——够快了。
核心观点:STM32U5不是用来跑大模型的。它的战场是边缘端实时推理,用极低的功耗完成特定的AI任务。
1.2 STM32Cube.AI工具链:把模型塞进MCU的魔法
好,硬件有了,模型怎么部署?
这就得请出我们的主角——STM32Cube.AI。它是ST官方推出的AI模型部署工具链,能把训练好的神经网络转换成针对STM32优化的C代码。
我个人习惯把它的工作流程分成三步:
- 模型导入:支持Keras (.h5)、TFLite (.tflite)、ONNX等格式。我建议你统一用TFLite,兼容性最好。
- 分析与优化:工具会自动分析模型结构,计算RAM/Flash占用,还能做量化(比如从float32降到int8)。
- 代码生成:生成一个包含推理函数的C文件,直接集成到STM32CubeIDE工程里。
这里有个避坑指南:我曾经在导入一个ONNX模型时,发现工具报错说某些算子不支持。后来查文档才知道,Cube.AI对某些自定义层(比如tf.keras.layers.Lambda)兼容性不好。所以我的建议是——尽量用标准层搭建模型,比如Conv2D、Dense、ReLU这些,别整花活。
小技巧:Cube.AI的验证模式可以在PC上模拟推理结果,跟MCU上的输出做对比。我每次部署前都会跑一遍这个验证,确保量化后的精度损失在可接受范围内。
1.3 开发板开箱:B-U585I-IOT02A
咱们课程用的板子是B-U585I-IOT02A。这块板子挺全的,集成了Wi-Fi、蓝牙、传感器、OLED屏,还有Arduino和STMod+接口。说白了,它就是ST为物联网AI应用准备的“样板间”。
开箱后你大概会看到这些:
- 主芯片:STM32U585AI6Q6
- 无线模块:Wi-Fi(MXCHIP EMW3080)+ BLE(BlueNRG-M2)
- 传感器:STTS751温度、LIS2DW12加速度、LPS22HH气压、HTS221湿度
- 其他:USB、MicroSD、音频编解码器、用户按键和LED
我个人觉得这块板子最方便的地方是板载ST-LINK/V3调试器,插上USB线就能识别,不用额外买调试器。而且它支持功耗测量,你可以直接看到AI推理时的电流变化——这对低功耗设计来说太重要了。
注意:第一次上电前,检查一下板子底部的跳线帽。默认是USB供电,但如果你要用外部电源,记得改跳线。我见过有人没注意这个,板子怎么都点不亮,折腾了半天。
1.4 环境搭建:从零开始跑通第一个例程
环境搭建其实不复杂,但步骤别跳。我按顺序来:
- 安装STM32CubeIDE:去ST官网下载最新版(1.15.0以上)。安装时选上STM32U5系列的支持包。
- 安装STM32Cube.AI:同样从官网下载,安装后会在IDE里自动集成。你也可以用命令行版本(stm32ai)。
- 安装X-CUBE-AI扩展包:在CubeIDE的“Help > Manage Embedded Software Packages”里搜索“X-CUBE-AI”,安装最新版。
- 连接开发板:用USB线连到电脑,打开设备管理器,应该能看到“ST-LINK Debug”和“Virtual COM Port”。
- 跑一个例程:在CubeIDE里新建工程,选择“B-U585I-IOT02A”,然后从“X-CUBE-AI”模板里选一个AI例程(比如“AI_Image_Recognition”)。编译、下载、运行。
嗯,这里有个坑:我曾经在安装X-CUBE-AI时,发现IDE里搜不到这个包。后来发现是网络问题——ST的服务器有时候不太稳定。解决办法是手动下载离线包,然后通过“Install from File”安装。
验证是否成功:例程跑起来后,串口会打印推理结果。如果能看到类似“Prediction: class 2, confidence: 0.95”这样的信息,恭喜你,环境搭好了。
1.5 本章知识体系总览
为了让你对整个课程的第一章有个全局印象,我画了一张结构图。它把硬件、工具链、开发板和环境搭建串在了一起。
这张图把本章的四个核心模块串起来了。你从硬件特性出发,理解U5为什么适合AI;然后掌握Cube.AI工具链的用法;接着熟悉B-U585I-IOT02A开发板;最后把环境搭好,跑通第一个例程。每一步都是下一章的基础。
我的建议:别急着往下翻。花半小时把板子连上,跑一遍例程。看到串口输出推理结果的那一刻,你会对后续课程更有信心。