第三章 硬件平台选型与评估:MCU/MPU选型考量
做控制程序开发,第一步就是选硬件。这一步要是走偏了,后面全白干。我见过太多项目,代码写得漂漂亮亮,结果硬件跑不动,或者成本压不下来,最后只能推倒重来。今天咱们就聊聊,怎么把硬件选型这件事做扎实。
3.1 MCU还是MPU?先搞清楚你要什么
很多人一上来就问:「用STM32还是用全志?」其实这个问题问早了。你得先想清楚,你的系统到底需要什么级别的处理能力。
MCU(微控制器),说白了就是单片机。它把CPU、内存、外设都集成在一个芯片里。适合做实时控制、传感器采集、简单的人机交互。我做过一个电机驱动项目,用的就是Cortex-M4内核的MCU,跑FreeRTOS,控制周期能做到50微秒,完全够用。
MPU(微处理器),更像是个小电脑。它需要外接DDR、Flash,跑Linux或者RTOS。适合做复杂的图形界面、网络通信、数据处理。比如你做一个带7寸触摸屏的工业控制器,那MPU就是首选。
我的选型原则:
- 如果只需要跑裸机或轻量级RTOS,选MCU
- 如果需要跑Linux、做GUI、处理大量数据,选MPU
- 如果两者之间犹豫,先看功耗和成本预算
3.2 MCU选型的四个维度
选MCU,我一般从四个角度去卡:性能、成本、功耗、生态。这四个维度缺一不可。
3.2.1 性能:别只看主频
主频当然重要,但更关键的是「你需要的算力到底是多少」。我习惯先列一个表格,把每个任务需要的MIPS(百万指令每秒)估算出来。
| 任务 | 估算MIPS | 说明 |
|---|---|---|
| 传感器轮询(10个) | 5-10 | I2C/SPI读取,简单滤波 |
| PID控制(3轴) | 15-30 | 含浮点运算,建议带FPU |
| LCD刷新(320x240) | 20-40 | 含DMA传输,不占CPU |
| 通信协议栈(Modbus+TCP) | 10-20 | 含CRC校验和重传机制 |
把这些加起来,再留30%的余量,就是你需要的最低算力。我在一个项目中吃过亏,选了刚好够用的芯片,结果后期加了个OTA升级功能,CPU直接跑满了。从那以后,我选型都会多留点余量。
3.2.2 成本:别只看芯片单价
芯片便宜,不代表整体成本低。你得算BOM(物料清单)总成本。比如有些MCU内置了USB PHY、CAN控制器、DAC,这些外设如果外接,一个芯片就要加几块钱。
我的经验:选型时把「节省的外围器件」也算进成本里。有时候贵5毛钱的MCU,能省掉3块钱的外围电路,整体反而更划算。
3.2.3 功耗:看工作模式,别只看数据手册
数据手册上的「待机电流1uA」很诱人,但实际项目中,你很少能一直待在待机模式。我建议关注三个指标:
- 活跃模式电流:跑满主频时的功耗
- 睡眠模式电流:保留RAM,快速唤醒
- 深度睡眠电流:几乎全关,唤醒时间长
我曾经做一个电池供电的传感器节点,选了一款号称「超低功耗」的MCU。结果实际测试发现,它从深度睡眠唤醒需要5毫秒,而我的传感器采样周期才100毫秒,这5毫秒的唤醒时间直接占了5%的功耗预算。后来换了另一款,唤醒时间只要200微秒,整体续航提升了30%。
3.2.4 生态:这是最容易忽略的坑
芯片再好,没有好的开发工具和社区支持,开发效率会大打折扣。我个人的偏好是:
- IDE和调试器:是否支持JLink/ST-Link?有没有免费的IDE?
- 库和中间件:有没有成熟的HAL库?RTOS、文件系统、TCP/IP协议栈是否现成?
- 社区资源:遇到问题能不能搜到答案?有没有现成的开源项目可以参考?
嗯,这里要注意。有些小众芯片性能确实不错,但出了问题你连个问的人都没有。我一般会选ST、NXP、TI、Microchip这些大厂的芯片,生态成熟,踩坑也有人帮你填。
3.3 传感器与执行器选型
传感器和执行器,是控制系统的手和眼。选型时,我主要看三个东西:精度、响应时间、接口兼容性。
3.3.1 传感器:精度够用就行
别盲目追求高精度。比如一个温度传感器,你控制的是±1°C的精度,那就没必要选±0.1°C的型号。精度越高,价格越贵,而且对电路布局的要求也越高。
我做过一个项目,用了高精度的压力传感器,结果PCB布线没处理好,电源纹波直接让精度降了两个等级。后来换了普通精度的传感器,把精力放在滤波算法上,效果反而更好。
3.3.2 执行器:响应时间要匹配控制周期
电机、阀门、继电器这些执行器,响应时间必须和控制周期匹配。比如你的控制周期是1毫秒,但执行器的响应时间是10毫秒,那控制效果肯定好不了。
注意:执行器的驱动电路也很关键。MOSFET的选型、续流二极管的配置、PWM频率的设置,都会影响执行器的实际表现。我曾经因为MOSFET的栅极电阻选得太大,导致电机启动时PWM波形畸变,电机嗡嗡响,查了两天才找到原因。
3.4 硬件评估板快速上手
选好了芯片,别急着画PCB。先买一块评估板,把软件调通了再说。这是我最常用的方法,能省下至少两周的开发时间。
3.4.1 评估板选什么?
我建议选官方原厂的评估板。虽然贵一点,但原理图、PCB文件、例程都是官方的,遇到问题可以直接找技术支持。第三方的板子便宜,但资料不全,出了问题你都不知道是芯片的问题还是板子的问题。
3.4.2 快速上手的五个步骤
- 点灯:先跑一个GPIO翻转的例程,确认开发环境没问题
- 串口打印:调试信息全靠它,这是你的「眼睛」
- 外设驱动:把要用到的I2C、SPI、UART、ADC都调通
- 中断和定时器:这是实时控制的基础
- RTOS移植:如果要用RTOS,这一步尽早做
我一般会在评估板上把整个软件框架搭好,然后再移植到自己的板子上。这样即使自己的板子出了问题,也能快速定位是硬件问题还是软件问题。
3.4.3 一个实用的调试技巧
用逻辑分析仪抓波形。别只靠printf打印,那只能看到「结果」,看不到「过程」。比如I2C通信,用逻辑分析仪一看,就能知道是时钟频率不对,还是地址错了,还是从机没应答。
// 一个简单的I2C扫描程序,配合逻辑分析仪使用
for (addr = 0x08; addr < 0x78; addr++) {
if (HAL_I2C_IsDeviceReady(&hi2c1, addr, 3, 100) == HAL_OK) {
printf("Found device at 0x%02X\n", addr);
}
}
这个程序我用了好多年,每次换新板子,第一件事就是跑一遍I2C扫描,确认所有传感器都能正常通信。
3.5 本章知识体系
下面这张图,是我对硬件选型与评估流程的总结。你可以把它当作一个检查清单,每次选型时对照着走一遍。
这张图把整个选型流程串起来了。从需求分析开始,到MCU/MPU选型,再到传感器和执行器,最后用评估板验证。每一步都走扎实了,后面开发才能顺风顺水。
最后说一句:硬件选型没有标准答案,只有「最适合你的项目」的方案。多花点时间在选型上,后面能省下十倍的时间。我见过太多人,选型只花了一天,调试花了一个月。别学他们。
公众号:蓝海资料掘金营,微信deep3321