4、硬件选型与架构设计:MCU/MPU选型原则、传感器与执行器选择、通信协议(I2C/SPI/UART/BLE/Wi-Fi)决策、功耗预算
好,咱们进入第四章。这一章可以说是整个产品生命周期里,最让我「又爱又恨」的环节。爱的是,选型就像搭积木,充满了创造感;恨的是,选错了后面全是坑。我见过太多项目,因为一开始MCU选小了,或者通信协议拍脑袋决定,最后不得不推倒重来。嗯,咱们今天就把这些门道掰开揉碎讲清楚。
4.1 MCU/MPU选型原则:别只看主频
很多人选MCU,第一眼看主频。其实这是个误区。你想想看,一个跑200MHz的Cortex-M4,和一个跑100MHz的Cortex-M0+,在特定场景下,后者可能更合适。为什么?因为功耗、外设、成本都不一样。
我个人习惯,选型前先列一张「需求清单」:
- 算力需求:是纯控制逻辑,还是要跑算法?比如做电机FOC控制,至少得Cortex-M4起步。我有个项目,一开始用M0做无刷电机控制,结果算不过来,换M4才搞定。
- 存储需求:Flash和RAM够不够?别只看代码大小。我踩过坑——一个物联网项目,RAM选了64KB,结果协议栈+缓冲区一算,只剩8KB给应用,调试时天天内存溢出。
- 外设接口:需要几路UART?几路SPI?有没有USB、CAN、以太网?这些决定了你的BOM成本和PCB层数。
- 封装与引脚:QFN还是LQFP?引脚间距多少?手工焊接还是机器贴片?这些直接影响生产良率。
核心原则:选型不是选「最强的」,而是选「刚好够用,留20%余量」的。余量太多是浪费,余量太少是定时炸弹。
另外,我建议关注一下芯片的生态。比如ST的STM32,文档全、例程多、社区活跃,遇到问题很容易找到答案。而一些小众芯片,虽然便宜,但出了问题你可能连数据手册都找不到对的版本。我曾经为了省几毛钱选了个国产小厂MCU,结果勘误表里一堆坑,调试了两个月才稳定——得不偿失。
4.2 传感器与执行器选择:精度 vs 成本
传感器和执行器,是产品「感知」和「动作」的末端。这里最容易犯的错是「过度设计」和「设计不足」。
传感器选型要点:
- 精度与分辨率:不是越高越好。比如做温度监测,±0.5°C的精度就够了,非要上±0.1°C的,成本翻倍不说,还容易受噪声干扰。
- 接口类型:模拟输出(ADC)还是数字输出(I2C/SPI)?模拟输出需要额外运放和滤波,数字输出直接读寄存器就行。我个人偏好数字传感器,省事。
- 功耗:电池供电的产品,传感器待机电流必须低。我记得有个项目,选了个加速度计,工作电流才10μA,但待机电流居然有50μA——这比工作还高,你敢信?
- 封装与安装:是贴片还是插件?有没有特殊安装要求?比如压力传感器需要密封圈,光传感器需要开窗。
执行器选型要点:
- 驱动能力:电机、电磁阀、继电器,都需要足够的电流和电压。MCU的GPIO直接驱动?别想了,一般需要加驱动芯片或MOS管。
- 响应时间:比如做LED调光,PWM频率要够高,否则人眼能感觉到闪烁。我一般用1kHz以上。
- 寿命与可靠性:继电器有机械寿命,电机有碳刷磨损。这些在选型时就要考虑进去。
小技巧:选传感器时,尽量选「三线制」或「四线制」的数字接口。两线制的模拟接口,抗干扰能力差,长线传输容易出问题。
4.3 通信协议决策:I2C/SPI/UART/BLE/Wi-Fi
通信协议的选择,说白了就是「距离、速度、功耗、成本」的权衡。没有万能的协议,只有最合适的。
| 协议 | 速度 | 距离 | 功耗 | 典型场景 |
|---|---|---|---|---|
| I2C | 100kHz-3.4MHz | 板级(<1m) | 低 | 传感器、EEPROM、RTC |
| SPI | 10MHz-50MHz | 板级(<1m) | 中 | 显示屏、ADC、SD卡 |
| UART | 115200bps-1Mbps | 板级/短距(<10m) | 低 | 调试口、GPS、蓝牙模块 |
| BLE | 1Mbps-2Mbps | 10m-100m | 极低 | 穿戴设备、智能家居传感器 |
| Wi-Fi | 10Mbps-100Mbps | 30m-100m | 高 | 摄像头、网关、智能音箱 |
我的决策思路是这样的:
- 板内通信:优先I2C和SPI。I2C适合多设备、低速场景;SPI适合高速、大数据量场景。注意I2C有地址冲突问题,一个总线上挂太多设备要小心。
- 短距无线:BLE是首选。功耗低、手机直连、生态好。但要注意,BLE的吞吐量有限,传音频或视频就别想了。
- 长距/高带宽:Wi-Fi。但功耗是个大问题。我做过一个Wi-Fi摄像头,电池只能用2小时——后来改成了插电版。
- 调试与维护:UART永远留一个。不管产品多高级,调试口一定要有。我曾经有个产品,量产了才发现有个bug,幸好留了UART,远程升级才救回来。
注意:不要在一个产品里堆太多通信协议。每多一种协议,就多一份调试工作、多一份干扰风险。能用一种解决的,绝不用两种。
4.4 功耗预算:从「拍脑袋」到「算清楚」
功耗预算,是嵌入式产品设计中最容易被忽视,但后果最严重的环节。我见过一个团队,产品做完了才发现电池只能用半天——重新选型、改PCB、换电池,三个月白干。
功耗预算的正确做法:
- 列出所有功耗模块:MCU、传感器、通信模块、执行器、指示灯、电源转换效率等。
- 区分工作模式:运行模式、休眠模式、待机模式。每种模式的电流和时间都要算。
- 计算平均功耗:平均电流 = (I1 * T1 + I2 * T2 + ...) / 总时间。
- 预留余量:实际功耗往往比理论值高20%-30%。别忘了温度影响——低温下电池容量会下降。
举个例子,一个温湿度传感器产品:
- MCU休眠:5μA,占99%时间
- MCU工作+传感器采集:10mA,占0.5%时间
- BLE广播+发送:20mA,占0.5%时间
平均电流 = (5μA * 0.99 + 10mA * 0.005 + 20mA * 0.005) ≈ 155μA。用一节CR2032电池(220mAh),理论续航 = 220mAh / 0.155mA ≈ 1419小时 ≈ 59天。嗯,看起来还行,但别忘了电池自放电和低温影响,实际可能只有40天左右。
避坑指南:我曾经做过一个产品,理论续航3年,结果半年就没电了。查了半天,发现是电源芯片的静态电流比数据手册上大了10倍——因为手册写的是典型值,不是最大值。从那以后,我选电源芯片只看最大值。
降低功耗的常用手段:
- 降低主频:能跑1MHz就别跑100MHz。动态调频是个好办法。
- 关闭未用外设:不用的ADC、SPI、定时器,统统关掉。
- 使用睡眠模式:MCU的深度睡眠电流可以低到1μA以下。
- 优化通信策略:减少广播频率、压缩数据包、使用长连接代替短连接。
- 选择低功耗器件:比如用ePaper代替LCD,用LDO代替DCDC(在轻载下LDO效率更高)。
好了,这一章的内容就这些。选型不是一蹴而就的事,需要反复权衡和验证。下一章咱们聊聊「原型验证与硬件调试」,到时候我会分享一些我调试时用的「土办法」——别看土,真管用。