2、微控制器(MCU)选型:主流MCU厂商与系列、选型核心参数、功耗考量
做物联网硬件这些年,我选过的MCU型号少说也有几十种。每次拿到新项目需求,第一件事就是琢磨:这颗“大脑”到底该用谁家的?
说白了,MCU选型就是个权衡的艺术。没有最好的芯片,只有最合适的方案。今天我就把压箱底的经验掏出来,跟你聊聊怎么挑MCU。
2.1 主流MCU厂商与系列
先看看市面上常见的几大阵营。我个人习惯把它们分成三派:
2.1.1 ARM Cortex-M 阵营
这是目前物联网的绝对主流。ARM只卖IP核,各家厂商自己加外设、调工艺。
- ST(意法半导体):ST的STM32系列,说它是行业标杆不过分。F0、F1、F4、L0、L4、H7... 型号多到让人眼花。我最早接触物联网就是从STM32F103开始的,这颗“神芯”到现在还在大量出货。
- NXP(恩智浦):LPC系列和i.MX RT系列。LPC主打低功耗,i.MX RT是跨界处理器,性能猛但功耗也高。
- Microchip(微芯):收购了Atmel后,SAM系列和AVR系列都在手里。SAM D系列做传感器节点不错。
- GigaDevice(兆易创新):国产替代的明星。GD32系列直接对标STM32,引脚兼容,价格便宜不少。我在成本敏感的项目里用过几次,稳定性还行。
2.1.2 自研内核阵营
有些厂商不跟ARM玩,自己搞内核。好处是授权费省了,坏处是生态弱。
- Espressif(乐鑫):ESP32系列,自带Wi-Fi和蓝牙,物联网神器。用的是Tensilica Xtensa内核,不是ARM。我做的智能家居项目,十有八九都用它。
- TI(德州仪器):MSP430系列,16位超低功耗MCU。一颗纽扣电池跑几年不是梦。不过性能确实弱,只能做简单的传感采集。
- Renesas(瑞萨):RL78和RX系列。日系厂商,车规级MCU很强,工业物联网里常见。
2.1.3 RISC-V 新势力
这几年RISC-V开源架构火起来了。国内像沁恒微电子(CH32系列)、博流智能(BL602/BL702)都在推。我去年试了一款RISC-V的蓝牙MCU,开发体验比想象中好,就是工具链还不够成熟。
我的建议:新手入门首选STM32,生态最全,遇到问题百度一搜就有答案。做Wi-Fi产品直接上ESP32。成本敏感的项目看看GD32。想尝鲜可以试试RISC-V,但别用在量产项目上——除非你团队有足够的技术储备。
2.2 选型核心参数
拿到MCU数据手册,几百页的内容,重点看哪几个参数?我按重要性排个序:
2.2.1 主频
主频决定MCU能跑多快。但别盲目追求高频。
- 低功耗场景:8MHz~48MHz 足够。比如温度传感器,每秒采集一次数据,跑再快也是浪费电。
- 中等性能:48MHz~168MHz。STM32F103是72MHz,做简单的屏幕驱动、Modbus通信没问题。
- 高性能场景:200MHz以上。比如需要跑语音识别、实时音频处理,那就得上i.MX RT或者STM32H7了。
我记得有一次做图像识别项目,选了颗200MHz的MCU,结果算法跑起来CPU占用率飙到95%。后来换了400MHz的芯片,才勉强流畅。嗯,主频这东西,够用就好,但也要留30%的余量。
2.2.2 Flash 和 RAM
这两个参数直接决定你能写多复杂的代码。
| 应用场景 | Flash 建议 | RAM 建议 |
|---|---|---|
| 简单传感器节点 | 16KB~64KB | 2KB~8KB |
| 带蓝牙/Wi-Fi通信 | 256KB~1MB | 64KB~256KB |
| 带屏幕显示+复杂协议 | 1MB~2MB | 256KB~512KB |
| 跑RTOS+图形界面 | 2MB以上 | 512KB以上 |
避坑指南:我曾经在一个项目里选了颗64KB Flash的MCU,结果固件编译出来65KB... 最后只能砍功能。从那以后,我选型时都会把预估的Flash和RAM乘以1.5倍,留足余量。
2.2.3 外设接口
外设决定了你的MCU能接什么传感器、用什么方式通信。
- UART:串口通信,调试必备。至少要有2路,一路接调试口,一路接设备。
- I2C:接传感器、OLED屏幕、EEPROM。注意速率,标准模式100kHz,快速模式400kHz。
- SPI:接高速设备,比如SD卡、LCD屏、射频模块。速率能到几十MHz。
- ADC:采集模拟信号。分辨率12位是主流,16位更好。采样率看需求,音频需要44.1kHz以上。
- PWM:控制电机、LED调光。注意通道数和分辨率。
- USB:需要跟电脑通信时必备。有些MCU支持USB OTG,可以当主机。
你想想看,如果选了颗没有硬件I2C的MCU,那就得用GPIO模拟I2C时序,代码写起来麻烦不说,还容易出问题。所以外设一定要提前规划好。
2.3 功耗考量
物联网设备很多是电池供电的,功耗是生死线。我见过太多产品因为功耗没控制好,用户天天抱怨“怎么又没电了”。
2.3.1 工作模式功耗
MCU在不同模式下功耗差异巨大:
- 运行模式:全速运行,电流几mA到几十mA。比如STM32F103在72MHz下约50mA。
- 睡眠模式:CPU停掉,外设可选保持。电流降到几百μA。
- 深度睡眠模式:几乎全部关掉,只留RTC和少量唤醒源。电流能到几μA甚至nA级别。
我习惯的做法是:设备大部分时间待在深度睡眠,每隔几秒醒来一次,采集数据、发送完就继续睡。这样平均功耗能压到几十μA以下。
2.3.2 动态功耗与静态功耗
这里有个概念要搞清楚:
- 动态功耗:芯片工作时消耗的功率,跟主频和电压的平方成正比。公式是 P = C × V² × f。所以降电压比降频率更有效。
- 静态功耗:芯片不工作时漏电流造成的功耗。工艺越先进,漏电越严重。所以超低功耗MCU往往用老工艺(比如180nm),而不是先进工艺。
小技巧:选型时看数据手册里的“μA/MHz”这个参数。它表示每MHz主频消耗多少微安。数值越小,说明芯片的功耗优化做得越好。比如STM32L4系列能做到约100μA/MHz,而普通F系列要200μA/MHz以上。
2.3.3 实际项目中的功耗优化
光靠MCU本身的低功耗还不够,外围电路也要配合。我总结了几条经验:
- 关掉不用的外设时钟:很多新手不知道,MCU的外设即使不用,只要时钟开着就在耗电。记得在初始化时把没用到的外设时钟关掉。
- 用GPIO中断代替轮询:轮询是CPU一直在查状态,浪费电。改成中断触发,CPU可以安心睡觉。
- 降低通信速率:Wi-Fi发包时电流最大。能一次发完的数据别分多次发。我做过测试,同样的数据量,分10次发比1次发完功耗高3倍。
- 注意上拉电阻:GPIO内部上拉电阻通常几十kΩ,如果引脚接地,会一直有电流流过。不用的引脚设成输出低电平或者模拟模式。
我的血泪教训:曾经有个产品,MCU深度睡眠时电流标称2μA,实测却有50μA。查了两天才发现,是某个GPIO接了外部上拉电阻到3.3V,而MCU睡眠时这个引脚是浮空状态,导致漏电。后来把引脚设成输出低电平,电流立刻降到3μA。所以,数据手册的参数是在理想条件下测的,实际电路一定要仔细排查。
2.4 选型流程总结
说了这么多,最后给个实用的选型步骤:
- 列出需求清单:需要哪些外设?多少IO?通信方式?功耗目标?
- 估算资源:Flash和RAM各需要多少?留1.5倍余量。
- 确定功耗预算:电池容量除以目标续航,算出平均功耗上限。
- 筛选厂商:根据预算、供货稳定性、开发工具链来选。
- 对比数据手册:重点看主频、功耗参数、外设数量。
- 拿开发板验证:别光看文档,实际跑一下你的代码,测测功耗和性能。
嗯,MCU选型就聊到这儿。下一章我们聊聊无线通信模块的选型,那个坑更多,到时候我再给你细说。