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、换电池,三个月白干。

功耗预算的正确做法:

  1. 列出所有功耗模块:MCU、传感器、通信模块、执行器、指示灯、电源转换效率等。
  2. 区分工作模式:运行模式、休眠模式、待机模式。每种模式的电流和时间都要算。
  3. 计算平均功耗:平均电流 = (I1 * T1 + I2 * T2 + ...) / 总时间。
  4. 预留余量:实际功耗往往比理论值高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效率更高)。

好了,这一章的内容就这些。选型不是一蹴而就的事,需要反复权衡和验证。下一章咱们聊聊「原型验证与硬件调试」,到时候我会分享一些我调试时用的「土办法」——别看土,真管用。