硬件平台选型:别急着买开发板,先想清楚你要什么
做嵌入式移植,第一步不是写代码,是选芯片。我见过太多人上来就买块热门开发板,结果做到一半发现外设不够、Flash太小、或者根本买不到货。嗯,今天我们就聊聊怎么选硬件。
说白了,选型就是做权衡。性能、成本、功耗、生态、供货,这五个维度你得心里有数。我习惯先列需求,再找芯片,最后定板子。反过来走,十有八九要翻车。
主流MCU/MPU对比:Cortex-M vs RISC-V vs Xtensa
目前轻量系统移植的三大阵营:ARM Cortex-M系列、RISC-V内核芯片、以及乐鑫的Xtensa架构。我分别说说我的感受。
| 维度 | Cortex-M (STM32/GD32) | RISC-V (CH32V/BL808) | Xtensa (ESP32/ESP8266) |
|---|---|---|---|
| 生态成熟度 | 极高,资料多,坑少 | 中等,开源工具链在完善 | 高,乐鑫文档很全 |
| 工具链 | Keil/IAR/STM32Cube | GCC+OpenOCD | ESP-IDF/Arduino |
| 功耗 | 优秀,有深度睡眠 | 中等,看具体型号 | WiFi开启时偏高 |
| 成本 | 中低端3-15元 | 极低,1-5元 | 带WiFi约8-20元 |
| 供货稳定性 | STM32曾缺货严重 | 国产替代,相对稳定 | 产能波动较大 |
我个人建议:如果你刚入门,选Cortex-M系列最稳妥。为什么?因为遇到问题你能搜到答案。RISC-V虽然便宜,但有些坑连官方文档都没写清楚。我记得有一次调CH32V的USB,折腾了两天才发现是时钟配置的bug——这种问题在STM32上早有人踩过了。
我的经验: 做产品选RISC-V,做学习选Cortex-M。RISC-V的灵活性是双刃剑,没有标准外设寄存器布局,每家厂商都自己定义,移植起来很酸爽。
外设资源评估:别只看主频和Flash
很多人选芯片只看主频和Flash大小。其实外设才是真正卡脖子的地方。我列几个关键点,你选型时一定要核对。
- 定时器数量与类型: 基本定时器、通用定时器、高级定时器。做电机控制至少需要2个高级定时器。
- DMA通道: 没有DMA,高频率ADC采集就是噩梦。我做过一个项目,用轮询方式读ADC,CPU占用率直接飙到80%。
- 串口/USART: 至少2路,一路调试日志,一路通信。很多廉价芯片只有1路,调试时你就知道多痛苦了。
- I2C/SPI: 传感器和屏幕基本都走这两个接口。注意看是否支持多主机模式。
- USB Device/Host: 如果你要做USB通信,一定要确认芯片有内置PHY,否则要外挂,增加成本和PCB面积。
- ADC精度与采样率: 12位是底线,16位更好。采样率至少100ksps以上才够用。
我曾经踩过的坑: 选了一款号称"高性价比"的芯片,Flash 256KB,RAM 64KB,看起来够用。结果发现它的ADC只有8位,而且没有硬件过采样。做出来的产品精度根本达不到要求,最后只能换芯片,重新画板子。前后浪费了两个月。
开发板选型建议:从入门到量产
开发板不是越贵越好,也不是越便宜越好。我把它分成三个层次,你根据自己的阶段选。
入门学习型(预算100元以内)
- STM32F103C8T6 最小系统板: 经典中的经典,资料多到你看不完。缺点是Flash只有64KB,跑轻量系统勉强够。
- ESP32-DevKitC: 带WiFi/BLE,适合做物联网原型。缺点是功耗偏高,不适合电池供电产品。
- CH32V307 开发板: RISC-V入门首选,主频144MHz,外设丰富,价格才30多块。
项目原型型(预算200-500元)
- STM32F407 探索板: 带以太网、USB OTG、DCMI摄像头接口。做轻量系统移植非常合适。
- ESP32-S3-DevKitC: 带LCD接口、PSRAM,跑LVGL很流畅。我最近的项目就在用这个。
- GD32F470 开发板: 国产替代,性能对标STM32F4,价格便宜一半。
量产评估型(预算500元以上)
- NXP i.MX RT1050: 跨界处理器,MCU的价格,MPU的性能。跑轻量Linux或RTOS都很合适。
- 全志V3s: 带DDR2内置,一片搞定。做Linux小系统很香,但焊接难度大。
- 瑞萨RA6M5: 工业级,-40到105度,适合做产品原型验证。
我的选型原则: 学习阶段买最便宜的,原型阶段买外设最全的,量产阶段买供货最稳的。不要用学习板做产品,也不要用产品板做学习——成本和时间都不划算。
知识结构图:硬件选型决策流程
下面这张图是我自己总结的选型流程。每次接新项目,我都会按这个顺序过一遍。
你想想看,这六个步骤缺一个都可能翻车。我见过最惨的是:芯片选好了,板子画好了,代码写完了,结果发现芯片停产了。嗯,这种事在2021年芯片缺货潮里特别常见。
避坑指南:我踩过的那些坑
坑1:只看数据手册,不看勘误表
我曾经选了一款芯片,数据手册上写着USB支持高速模式。结果做到一半才发现勘误表里写着"USB高速模式有bug,建议降级为全速"。产品性能直接砍半。
我曾经选了一款芯片,数据手册上写着USB支持高速模式。结果做到一半才发现勘误表里写着"USB高速模式有bug,建议降级为全速"。产品性能直接砍半。
坑2:开发板和外设不匹配
买了一块STM32F4探索板,结果发现它没有引出所有I2C引脚。想接个OLED屏幕,还得飞线。后来我学乖了,选板子之前先看原理图,确认所有需要的外设引脚都引出来了。
买了一块STM32F4探索板,结果发现它没有引出所有I2C引脚。想接个OLED屏幕,还得飞线。后来我学乖了,选板子之前先看原理图,确认所有需要的外设引脚都引出来了。
坑3:低估了调试器的重要性
很多人觉得J-Link太贵,用ST-Link凑合。但ST-Link在调试RISC-V芯片时根本用不了。我建议至少准备两套调试器:一套J-Link EDU(兼容性好),一套CMSIS-DAP(便宜且开源)。
很多人觉得J-Link太贵,用ST-Link凑合。但ST-Link在调试RISC-V芯片时根本用不了。我建议至少准备两套调试器:一套J-Link EDU(兼容性好),一套CMSIS-DAP(便宜且开源)。
总结一下
硬件选型没有标准答案,但有标准流程。先列需求,再比芯片,最后定板子。别被厂商的宣传参数迷惑,实际跑一下才知道好不好用。我个人习惯是:先买两块最便宜的开发板做原型验证,确认没问题了再买高端板做性能测试。这样即使选错了,损失也不大。