1. MCU 概述与选型:从入门到实战

大家好,我是你们的嵌入式讲师。今天咱们聊聊 MCU 选型这件事。说实话,我见过太多工程师在选型上栽跟头——要么选了个性能过剩的“大炮打蚊子”,要么选了个资源捉襟见肘的“小马拉大车”。

先问个问题:你手里的单片机,真的选对了吗?

1.1 什么是 MCU?

MCU,全称 Microcontroller Unit,微控制器。说白了,就是把一个微型计算机的核心部件——CPU、内存、I/O 接口——全部集成到一块芯片上。你给它供电、写程序,它就能干活。

我习惯把它比作“一个人的小工厂”:

  • CPU 是厂长,负责决策和运算
  • RAM 是临时仓库,放正在处理的数据
  • Flash 是图纸库,存你的程序代码
  • 外设 是车间设备,比如定时器、ADC、UART

跟 PC 的 CPU 不同,MCU 讲究的是“够用就好”。它不需要跑 Windows,不需要 8K 视频解码。它要的是低功耗、高可靠、实时响应。

核心区别一句话:MPU(微处理器)是通用计算平台,MCU 是专用控制引擎。你家的洗衣机、空调遥控器、汽车雨刷控制器,里面全是 MCU。

1.2 主流 MCU 厂商与架构

市面上的 MCU 厂商少说几十家,但真正占据主流市场的,其实就那么几个。我按个人经验给你排个序:

厂商 核心架构 代表系列 典型应用
ST(意法半导体) ARM Cortex-M STM32F0/F1/F4/H7 工业控制、电机驱动、物联网终端
Microchip AVR / ARM ATmega328P / SAM 系列 Arduino 生态、传感器节点
Microchip PIC PIC16F / PIC18F / PIC32 汽车电子、家电控制
NXP ARM Cortex-M LPC / i.MX RT 汽车、工业、消费电子
TI(德州仪器) ARM Cortex-M / MSP430 Tiva C / MSP430 超低功耗、精密模拟
Renesas 自有内核 / ARM RL78 / RA 系列 汽车、工业、白电

我个人最常用的是 STM32。为什么?生态好、资料多、性价比高。你随便搜个问题,十有八九能找到答案。但这不是说其他家不好——PIC 在汽车领域稳得很,MSP430 在低功耗方面至今是标杆。

我的建议:初学者从 STM32 入门,上手快、坑少。等你有经验了,再根据项目需求灵活切换。

1.3 选型要素:四个维度,一个都不能少

选 MCU 就像相亲——不能只看脸。我总结了一个“四维选型法”,你照着来,基本不会翻车。

1.3.1 功耗

功耗这东西,分静态功耗和动态功耗。静态功耗是芯片“睡着”时漏的电,动态功耗是它“干活”时消耗的。

我曾经做过一个电池供电的传感器节点,要求一节 CR2032 纽扣电池撑一年。当时选了 STM32L0 系列,休眠电流低到 0.3 µA。嗯,最后实测确实达标了。

选型时看这几个参数:

  • 运行模式电流(Active mode,单位 mA/MHz)
  • 休眠模式电流(Stop / Standby,单位 µA)
  • 唤醒时间(从休眠到正常运行,单位 µs)

避坑:别只看数据手册上的“最低功耗”。实际项目中,外设、GPIO 上拉电阻、电源转换效率都会影响整体功耗。我曾经被一个 10kΩ 上拉电阻坑过——休眠时多耗了 330 µA,直接让电池寿命缩水一半。

1.3.2 性能

性能不是越高越好。你做个 LED 闪烁,用 200 MHz 的芯片纯属浪费。但如果你要做 FOC 电机控制、实时音频处理,那主频和算力就得跟上。

关键指标:

  • 主频(MHz):决定指令执行速度
  • Flash 容量(KB / MB):存程序代码
  • RAM 容量(KB / MB):存运行时数据
  • DMIPS / CoreMark:衡量实际算力

举个例子:STM32F103C8T6,72 MHz 主频,64 KB Flash,20 KB RAM。做简单的电机控制、传感器采集完全够用。但你要跑个轻量级 AI 模型?那得上 H7 系列,400 MHz 起步。

1.3.3 外设

外设是 MCU 的“手脚”。选型时,你得先列清楚项目需要哪些接口:

外设类型 常见用途 选型注意点
GPIO 按键、LED、控制信号 数量够不够?是否支持中断?
UART 串口通信、调试 波特率上限?是否支持流控?
I2C 传感器、EEPROM 速率(标准/快速/高速)
SPI 显示屏、SD 卡、ADC 全双工?支持 DMA?
ADC 模拟信号采集 分辨率(12-bit / 16-bit)?采样率?
定时器 PWM 输出、输入捕获 通道数?分辨率?
CAN / LIN 汽车、工业总线 是否支持 CAN FD?

我有个习惯:先画系统框图,标出所有外设需求,再拿着清单去选 MCU。这样不会漏,也不会多。

1.3.4 成本

成本是老板最关心的。但注意,成本不光是芯片单价,还包括:

  • BOM 成本:芯片 + 外围元件(晶振、电容、电感)
  • 开发成本:开发板、调试器、IDE 授权费
  • 生产成本:封装类型(QFP 好焊接,BGA 需要 X 光检测)
  • 供应链成本:交期、替代料、多源供应

举个例子:STM32F030 系列,单价不到 2 美元,但如果你用量大,可以考虑国产替代——比如 GD32,性能兼容,价格更低。不过要注意,国产芯片的文档和生态可能没那么完善。

我的经验:选型时留 20% 的余量。Flash 用 80%,RAM 用 70%,GPIO 留几个备用。这样后期加功能、改需求时,不用换芯片。

1.4 知识体系总览

下面这张图,帮你把本章的核心逻辑串起来:

MCU 选型知识体系 MCU 选型 功耗 性能 外设 成本 运行电流 休眠电流 唤醒时间 主频 Flash / RAM DMIPS UART / I2C / SPI ADC / DAC 定时器 / PWM BOM 成本 开发成本 供应链 选型不是单选题,是综合权衡 功耗、性能、外设、成本——四者取平衡 STM32 AVR PIC 更多...

1.5 选型实战:一个真实案例

去年我接了个项目——做一个便携式空气质量监测仪。需求如下:

  • 采集 PM2.5、温湿度、CO2 浓度
  • 2.8 寸 TFT 彩屏显示
  • Wi-Fi 上传数据到云端
  • 锂电池供电,续航 8 小时以上
  • 批量成本控制在 50 元以内

我是怎么选的?

  1. 先列外设需求:2 路 UART(Wi-Fi 模块 + 调试)、1 路 I2C(温湿度传感器)、1 路 SPI(显示屏)、1 路 ADC(PM2.5 传感器模拟输出)
  2. 再算性能:显示刷新需要一定算力,但不用跑算法,72 MHz 足够
  3. 功耗:电池供电,必须支持休眠模式,运行电流尽量低
  4. 成本:芯片单价不超过 15 元

最终选了 STM32F103C8T6。为什么?

  • 72 MHz 主频,够用
  • 外设齐全,2 路 UART、1 路 I2C、1 路 SPI、2 路 ADC
  • 休眠电流约 10 µA,配合电源管理,续航达标
  • 批量价 8 元左右,成本可控

小技巧:选型时可以用 ST 的 MCU 选型工具(STM32CubeMX)或者第三方网站(比如 Octopart)快速筛选。输入你的需求,它会推荐合适的型号。

1.6 选型避坑清单

最后,我把自己踩过的坑整理成一份清单,你选型时对照着看:

坑 后果 怎么避免
Flash 选小了 程序写不下,换芯片重做 PCB 留 20% 余量,先估算代码体积
RAM 不够用 跑着跑着死机,堆栈溢出 算好全局变量 + 堆栈 + 缓冲区
GPIO 数量不够 外接扩展芯片,增加 BOM 画系统框图时标清每个引脚
封装选错 手工焊接困难,生产良率低 小批量用 QFP,大批量用 QFN
忽略温度范围 工业现场高温死机 确认芯片工作温度(-40°C ~ 85°C)
只看单价不看交期 芯片缺货,项目延期 选多源供应的型号,备选方案