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本身的低功耗还不够,外围电路也要配合。我总结了几条经验:

  1. 关掉不用的外设时钟:很多新手不知道,MCU的外设即使不用,只要时钟开着就在耗电。记得在初始化时把没用到的外设时钟关掉。
  2. 用GPIO中断代替轮询:轮询是CPU一直在查状态,浪费电。改成中断触发,CPU可以安心睡觉。
  3. 降低通信速率:Wi-Fi发包时电流最大。能一次发完的数据别分多次发。我做过测试,同样的数据量,分10次发比1次发完功耗高3倍。
  4. 注意上拉电阻:GPIO内部上拉电阻通常几十kΩ,如果引脚接地,会一直有电流流过。不用的引脚设成输出低电平或者模拟模式。

我的血泪教训:曾经有个产品,MCU深度睡眠时电流标称2μA,实测却有50μA。查了两天才发现,是某个GPIO接了外部上拉电阻到3.3V,而MCU睡眠时这个引脚是浮空状态,导致漏电。后来把引脚设成输出低电平,电流立刻降到3μA。所以,数据手册的参数是在理想条件下测的,实际电路一定要仔细排查。

2.4 选型流程总结

说了这么多,最后给个实用的选型步骤:

  1. 列出需求清单:需要哪些外设?多少IO?通信方式?功耗目标?
  2. 估算资源:Flash和RAM各需要多少?留1.5倍余量。
  3. 确定功耗预算:电池容量除以目标续航,算出平均功耗上限。
  4. 筛选厂商:根据预算、供货稳定性、开发工具链来选。
  5. 对比数据手册:重点看主频、功耗参数、外设数量。
  6. 拿开发板验证:别光看文档,实际跑一下你的代码,测测功耗和性能。

嗯,MCU选型就聊到这儿。下一章我们聊聊无线通信模块的选型,那个坑更多,到时候我再给你细说。