第2章 主控芯片选型:常见MCU对比与实战选型流程
做嵌入式系统,第一步就是选主控。这活儿看着简单,其实坑不少。
我见过太多项目,功能都调通了,最后卡在芯片选型上——要么成本压不下来,要么功耗超了指标,要么供货断了。说白了,选型选不好,后面全是泪。
2.1 三款主流MCU的硬核对比
目前市面上,STM32、GD32、ESP32这三款用得最多。我一个个说。
2.1.1 STM32:老牌劲旅
STM32是意法半导体的拳头产品。生态最成熟,资料最全,社区最活跃。我个人习惯,做原型验证时首选STM32,因为遇到问题随便一搜就有答案。
| 参数 | STM32F103 | STM32F407 | STM32H743 |
|---|---|---|---|
| 内核 | Cortex-M3 | Cortex-M4F | Cortex-M7 |
| 主频 | 72MHz | 168MHz | 480MHz |
| Flash | 64KB~512KB | 512KB~1MB | 1MB~2MB |
| 单价(批量) | ¥8~15 | ¥25~40 | ¥60~100 |
优点很明显:稳定、文档规范、HAL库和LL库都很好用。缺点呢?贵。尤其是这两年涨价后,性价比被国产芯片甩开一截。
2.1.2 GD32:国产替代首选
GD32是兆易创新的产品,直接对标STM32。引脚兼容、软件兼容,很多项目可以直接替换。
我记得有个项目,客户要求把BOM成本砍掉30%。我直接把STM32F103换成了GD32F103,硬件板子都不用改,只调了调时钟配置,成本就降下来了。
| 对比项 | GD32F103 | STM32F103 |
|---|---|---|
| 主频 | 108MHz | 72MHz |
| Flash | 16KB~512KB | 64KB~512KB |
| 单价(批量) | ¥3~8 | ¥8~15 |
| 兼容性 | 硬件引脚兼容 | — |
2.1.3 ESP32:Wi-Fi/蓝牙一体方案
ESP32是乐鑫的产品,自带Wi-Fi和蓝牙。做物联网产品,它几乎是标配。
你想想看,一个芯片搞定主控+无线连接,省掉一个外挂Wi-Fi模块,成本、面积都下来了。我最近做的智能插座项目,就直接用的ESP32-C3,RISC-V内核,功耗还低。
| 参数 | ESP32 | ESP32-S3 | ESP32-C3 |
|---|---|---|---|
| 内核 | Xtensa LX6 | Xtensa LX7 | RISC-V |
| 主频 | 240MHz | 240MHz | 160MHz |
| 无线 | Wi-Fi+BT | Wi-Fi+BT | Wi-Fi+BLE |
| 单价(批量) | ¥12~18 | ¥15~22 | ¥6~10 |
2.2 选型考量三要素:功耗、成本、性能
这三个要素,说白了就是三角博弈。你不可能三个都占全,必须做取舍。
2.2.1 功耗
电池供电的产品,功耗是第一优先级。我做过一个穿戴设备,要求待机电流低于10μA。当时选了STM32L0系列,休眠功耗只有0.4μA,配合RTC唤醒,一节纽扣电池撑了半年。
选型时看这几个参数:
- 运行模式电流: 满负荷工作时吃多少mA
- 休眠模式电流: 待机时吃多少μA
- 唤醒时间: 从休眠到正常工作要多久
2.2.2 成本
成本这东西,得算总账。芯片本身的价格只是一部分,还要算上:
- 外围器件成本(比如是否需要外部晶振、LDO)
- PCB面积成本(芯片引脚越多,板子越大)
- 开发成本(STM32开发快但芯片贵,GD32芯片便宜但调试时间长)
- 供货风险成本(缺货时现货价格可能翻倍)
我建议你做个表格,把这几项都列出来,算个总账。很多时候,便宜的芯片反而总成本更高。
2.2.3 性能
性能不是越高越好。够用就行。
我见过有人用STM32H7做智能灯控,480MHz的主频,结果就跑了几个GPIO和PWM——这不是杀鸡用牛刀吗?
性能评估看三点:
- 算力: 主频 + 是否有FPU/DSP
- 存储: Flash和RAM够不够放代码和缓冲区
- 外设: 需要的UART、SPI、I2C、定时器够不够用
2.3 实战选型流程:五步法
下面是我自己总结的选型流程,用了好几年,没出过大问题。
第一步:列出硬需求
把产品必须满足的条件写下来。比如:
- 需要3路UART
- 需要1路USB Device
- 工作温度-20℃~85℃
- 待机功耗<5μA
- BOM成本<¥15
第二步:初筛候选芯片
根据硬需求,从厂商官网或选型手册里挑出3~5款候选。这一步别纠结,先圈定范围。
第三步:对比关键参数
做个表格,把候选芯片的功耗、成本、性能、外设数量列出来。我习惯用Excel,一目了然。
第四步:打板验证
这一步不能省。选2~3款芯片做最小系统板,跑一下核心功能。我遇到过数据手册上写支持5V tolerant,实际接5V就烧IO的情况——不打板根本发现不了。
第五步:评估供货和生态
最后一步,查一下芯片的交期、是否有第二供应商、开发工具是否顺手。再好的芯片,买不到也是白搭。
嗯,这一章就到这里。下一章我们聊聊如何搭建开发环境,包括IDE配置、调试器选择、工程模板搭建——这些基础打好了,后面写代码才顺手。