第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开始
- 做工业产品 → STM32
- 做物联网产品 → ESP32
- 做原型验证 → Arduino
- 想省钱 → 国产替代(GD32、AT32)
- 想学东西 → 从STM32F103或ESP32开始
好了,这一章就到这里。下一章我会讲开发环境搭建,包括Keil、STM32CubeIDE、Arduino IDE的配置。到时候我会手把手教你们怎么把第一个程序跑起来。嗯,记得准备好开发板。