第2章 MCU选型指南:主流MCU厂商与选型要素

说实话,MCU选型这事儿,我见过太多人栽跟头了。

有人一上来就选STM32F4,结果项目做完了发现根本用不上浮点运算。也有人图便宜选了某款国产芯片,结果外设驱动写了三周还没调通。嗯,选型选对了,项目就成功了一半。今天我就把这些年踩过的坑、总结的经验,一次性说清楚。

2.1 主流MCU厂商,到底怎么选?

目前市面上主流的MCU,基本就三大阵营:STM32、ESP32、Arduino。我一个个说。

2.1.1 STM32 —— 工业级的扛把子

STM32是意法半导体的产品线。我个人习惯把它叫做「万金油」。为什么?因为从简单的LED控制,到复杂的电机驱动、RTOS系统,它都能干。

  • 性能:从Cortex-M0到M7,覆盖低端到高端。我做过一个项目,用STM32F103做数据采集,跑FreeRTOS,稳得很。
  • 外设:ADC、DAC、定时器、CAN、USB、以太网……基本你能想到的,它都有。
  • 生态:HAL库、LL库、CubeMX配置工具,资料多到你学不完。
  • 缺点:价格偏高,尤其是这两年芯片涨价,STM32F103从几块钱涨到几十块,心疼啊。
我的建议:如果你做工业产品、医疗设备、或者对稳定性要求高的项目,STM32是首选。别犹豫。

2.1.2 ESP32 —— 物联网的性价比之王

ESP32是乐鑫的产品。说白了,它就是为物联网而生的。

  • 内置WiFi+蓝牙:这是它最大的杀手锏。你想想看,一个芯片搞定无线通信,省掉一个外挂模块,成本直接砍半。
  • 双核处理器:主频240MHz,跑起来比STM32F4还猛。
  • 功耗:深度睡眠模式只有几微安,电池供电的项目首选。
  • 缺点:ADC精度一般,工业级稳定性不如STM32。

我在项目中遇到过一个问题:用ESP32做温湿度采集,ADC读数总是跳来跳去。后来发现是电源纹波太大,加了个LC滤波才搞定。嗯,这个坑你们要注意。

2.1.3 Arduino —— 入门神器,但别太依赖

Arduino其实不是芯片,而是一个开发平台。它用的是AVR系列单片机(比如ATmega328P)。

  • 上手简单:真的,小学生都能玩。IDE一装,代码一写,下载就能跑。
  • 生态丰富:各种库、各种扩展板,你想做什么都能找到现成的。
  • 缺点:性能弱、内存小、不适合做复杂产品。
注意:Arduino适合做原型验证、快速打样。但如果你要做量产产品,我建议还是换成STM32或者ESP32。我曾经见过有人用Arduino做产品,结果客户一多,性能瓶颈就暴露了,最后全部返工。

2.2 选型要素,一个都不能少

选MCU,说白了就是平衡几个要素:功耗、性能、外设、成本。我一个个拆开讲。

2.2.1 功耗 —— 电池供电的命门

如果你的产品用电池供电,功耗就是第一优先级。

  • 工作模式电流:STM32L系列能做到几十微安/MHz,ESP32在深度睡眠时只有5μA。
  • 休眠模式:很多MCU支持多种休眠模式,比如待机、停止、睡眠。我习惯在代码里动态切换,用不到的外设就关掉。
  • 实际案例:我之前做一款智能门锁,用ESP32,平时深度睡眠,有人触发才唤醒。一节18650电池用了半年。

2.2.2 性能 —— 够用就好,别浪费

很多人有个误区:主频越高越好。其实不是。

  • 主频:STM32F103是72MHz,ESP32是240MHz。但如果你只是点个灯、读个传感器,72MHz绰绰有余。
  • 内存:SRAM和Flash大小。跑RTOS的话,至少需要64KB Flash、20KB SRAM。
  • 我的经验:选型时留30%的性能余量就够了。别为了「万一以后要用」去选高配,成本上去了,老板会找你谈话的。

2.2.3 外设 —— 够用就行,别贪多

外设多当然好,但用不上就是浪费钱。

外设 常见用途 选型建议
ADC 采集模拟信号(温度、电压) 至少12位精度,采样率够用就行
定时器 PWM输出、脉冲计数 至少2个,带PWM功能的
UART/I2C/SPI 通信接口 根据外设数量选,留1-2个备用
USB 与PC通信、固件升级 有最好,没有也可以用UART转USB

2.2.4 成本 —— 老板最关心的事

成本这东西,说白了就是一分钱一分货。

  • 批量价格:STM32F103批量价大概10-20元,ESP32大概15-25元,Arduino的ATmega328P大概5-10元。
  • 隐性成本:开发时间、调试难度、供应链稳定性。我曾经为了省2块钱选了一款小众芯片,结果开发周期多了一个月,得不偿失。
  • 我的建议:如果量不大(几千台以内),选STM32或ESP32,开发快、资料多。如果量很大(几万台以上),可以考虑国产替代,比如GD32、AT32。

2.3 开发板推荐,直接抄作业

选好了芯片,接下来就是开发板。我直接推荐几款,你们照着买就行。

2.3.1 STM32 开发板

  • Nucleo-F103RB:入门首选,带ST-Link调试器,插上USB就能用。价格100元左右。
  • STM32F4 Discovery:带屏幕、带音频,适合做多媒体项目。价格150元左右。
  • Black Pill (STM32F401):小巧便宜,适合做嵌入式小项目。价格20元左右。

2.3.2 ESP32 开发板

  • ESP32-DevKitC:官方开发板,引脚全引出,适合做原型。价格30元左右。
  • NodeMCU-32S:带USB转串口,直接插电脑就能用。价格25元左右。
  • ESP32-C3-DevKitM-1:RISC-V架构,功耗更低。价格20元左右。

2.3.3 Arduino 开发板

  • Arduino Uno R3:经典款,入门必买。价格50元左右。
  • Arduino Nano:小巧,适合做嵌入式。价格20元左右。
  • Arduino Mega 2560:引脚多、内存大,适合做复杂项目。价格80元左右。
总结一下
- 做工业产品 → STM32
- 做物联网产品 → ESP32
- 做原型验证 → Arduino
- 想省钱 → 国产替代(GD32、AT32)
- 想学东西 → 从STM32F103或ESP32开始

好了,这一章就到这里。下一章我会讲开发环境搭建,包括Keil、STM32CubeIDE、Arduino IDE的配置。到时候我会手把手教你们怎么把第一个程序跑起来。嗯,记得准备好开发板。