一、MCU 简介
1. MCU 是什么
MCU(Microcontroller Unit,微控制器)是一种将 CPU、存储器、定时器、IO 口、通信接口 等集成在单颗芯片上的微型计算机,也称单片机。
它不像 PC 那样强调通用算力,而是面向具体设备:用较少的资源完成采集、控制、通讯等任务,广泛应用于家电、汽车电子、工业控制、物联网终端等领域。
2. MCU 与 CPU、MPU、SoC 的区别
| 类型 | 全称 | 特点 | 典型应用 |
|---|---|---|---|
| CPU | Central Processing Unit | 只有处理器核心,需外接存储和外设 | PC 处理器核心 |
| MCU | Microcontroller Unit | CPU + 片上 Flash/RAM + 外设,高集成 | 传感器节点、电机控制 |
| MPU | Microprocessor Unit | 处理器为主,外设较少,常跑 Linux | 工控机、网关 |
| SoC | System on Chip | 高度集成,可含 CPU + GPU + 通信 + AI | 手机、智能座舱 |
日常说的「单片机开发」,本质上就是 MCU 开发。
3. 常见应用领域
- 消费电子:空调、洗衣机、智能门锁
- 工业控制:PLC 扩展模块、变频器、伺服驱动
- 汽车电子:车身控制、BMS、仪表盘
- 物联网:温湿度采集、无线模组、智能家居
- 医疗设备:血压计、便携检测仪
二、MCU 内部结构
1. 基本组成
一颗 MCU 芯片通常包含:
1 | ┌─────────────────────────────────────┐ |
2. 存储器
| 类型 | 作用 | 特点 |
|---|---|---|
| Flash | 存放程序代码 | 掉电不丢失,写入次数有限 |
| SRAM | 运行时变量、堆栈 | 读写快,掉电丢失 |
| EEPROM / Data Flash | 参数、校准值 | 可反复擦写少量数据 |
| 寄存器 | 配置外设 | 通过读写寄存器控制硬件 |
3. 时钟系统
MCU 所有外设和 CPU 都依赖时钟工作。常见时钟源:
- HSE:外部高速晶振,精度高
- HSI:内部高速 RC 振荡器,成本低
- LSE / LSI:低速时钟,用于 RTC 和低功耗
通过 PLL 锁相环 可将时钟倍频,如 8MHz 晶振倍频到 72MHz、168MHz 等系统主频。
三、常见内核与芯片
1. 主流内核架构
| 内核 | 特点 | 代表芯片 |
|---|---|---|
| ARM Cortex-M0/M0+ | 超低功耗、低成本 | STM32L0、NXP LPC800 |
| ARM Cortex-M3/M4 | 主流工控,M4 带 FPU | STM32F1/F4、GD32 |
| ARM Cortex-M7 | 高性能、高主频 | STM32H7、i.MX RT |
| 8051 | 经典老架构,简单 | STC89、NXP 部分型号 |
| RISC-V | 开源指令集,生态崛起 | CH32V、ESP32-C3、GD32VF |
| AVR | Atmel 传统 8 位 | ATmega328(Arduino Uno) |
2. 常见 MCU 厂商与系列
| 厂商 | 常见系列 | 特点 |
|---|---|---|
| STMicroelectronics | STM32F/G/H/L 系列 | 生态完善、资料丰富 |
| Espressif | ESP8266、ESP32 | 内置 WiFi/蓝牙,物联网热门 |
| GigaDevice | GD32 | 兼容 STM32,性价比高 |
| NXP | LPC、Kinetis | 汽车、工业领域多 |
| Microchip | PIC、AVR、SAM | 8/16/32 位齐全 |
| 国产 | 沁恒 CH32、兆易创新、航顺 | 国产替代加速 |
四、常用外设
1. GPIO
GPIO(General Purpose Input/Output)是最基础的数字 IO,可配置为输入或输出,用于读取按键、驱动 LED、控制继电器等。
1 | // 伪代码示例:点亮 LED |
2. UART
UART(串口)是最常用的异步通信方式,适合调试打印、与蓝牙模块/4G 模组通信。
- 参数:波特率、数据位、停止位、校验位
- 常见波特率:9600、115200
3. SPI
SPI(Serial Peripheral Interface)高速同步总线,常用于 Flash、LCD、ADC、SD 卡等。
特点:全双工、速度快,需要多根线(CLK、MOSI、MISO、CS)。
4. I2C
I2C(Inter-Integrated Circuit)两线制总线(SCL、SDA),适合挂载多个从设备,如 EEPROM、传感器、RTC。
特点:布线少,速度相对 SPI 较低。
5. ADC / DAC
- ADC:将模拟电压转为数字量,用于温度、压力、电流采集
- DAC:将数字量转为模拟电压,用于波形输出、模拟控制
6. 定时器与 PWM
定时器用于延时、计数、捕获脉冲;PWM 用于电机调速、LED 调光、舵机控制。
7. 其他外设
| 外设 | 用途 |
|---|---|
| CAN | 汽车、工业现场总线 |
| USB | 设备通信、固件升级 |
| DMA | 内存与外设间自动搬运数据,减轻 CPU 负担 |
| RTC | 实时时钟,记录年月日时分秒 |
| Watchdog | 看门狗,程序跑飞时复位系统 |
五、中断与 DMA
1. 中断机制
中断是 MCU 响应外部事件的重要方式。当按键按下、串口收到数据、定时器溢出时,硬件可打断 CPU 当前工作,优先处理紧急任务。
关键概念:
- 中断向量表:存放各中断处理函数入口
- 中断优先级:高优先级可打断低优先级
- 中断服务函数(ISR):应尽量简短,不要做耗时操作
2. DMA
DMA(Direct Memory Access)可在不占用 CPU 的情况下,在内存与外设之间搬运数据。适合 ADC 高速采集、串口大数据收发等场景,显著降低 CPU 负载。
六、开发流程
1. 典型流程
1 | 需求分析 → 选型 → 硬件设计 → 环境搭建 |
2. 开发语言
| 语言 | 说明 |
|---|---|
| C 语言 | MCU 开发最主流,直接操作寄存器或调用库 |
| C++ | 部分框架支持,用于面向对象封装 |
| MicroPython / Arduino | 快速原型,适合入门 |
| Rust | 新兴选择,强调内存安全 |
本博客其他文章中的 Csharp 多用于 PC 上位机;MCU 固件本身仍以 C 语言 为主,二者常配合使用。
3. 常用开发工具
| 工具 | 说明 |
|---|---|
| STM32CubeIDE | ST 官方 IDE,含配置工具 |
| Keil MDK | 经典 ARM 开发环境 |
| IAR | 商业编译器,优化好 |
| PlatformIO | VS Code 插件,跨平台 |
| ST-Link / J-Link | 常用下载调试器 |
4. 配置与代码生成
以 STM32 为例,常用 STM32CubeMX 图形化配置时钟、引脚、外设,自动生成初始化代码,再在此基础上编写业务逻辑。
七、MCU 与 FPGA、上位机的关系
| 角色 | 职责 |
|---|---|
| MCU | 实时控制、协议解析、传感器采集 |
| FPGA | 高速并行 IO、接口桥接、算法加速 |
| PC / Csharp 上位机 | 参数配置、数据展示、固件升级、产线测试 |
三者常组合使用:MCU 做控制核心,FPGA 处理高速信号,上位机做人机交互。本博客《网线烧录芯片与Csharp传输实现》《FPGA基本知识》可与本文形成嵌入式系统知识链。
八、低功耗与可靠性
1. 低功耗模式
电池供电设备需关注功耗:
- Sleep / Stop / Standby:逐级降低功耗
- 关闭不用的外设时钟
- 合理设置唤醒源(按键、RTC、串口)
2. 可靠性设计
- 看门狗:防止程序死机
- 掉电检测:保存关键参数
- EMC 设计:硬件滤波、PCB 布局
- OTA 升级:远程更新固件,需 Bootloader 支持
九、常见问题
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 程序下载失败 | 接线错误、芯片保护、供电不足 | 检查 SWD 线、BOOT 引脚 |
| 串口乱码 | 波特率不一致 | 统一双方波特率 |
| 程序跑飞 | 数组越界、栈溢出、未初始化指针 | 调试器单步、看 HardFault |
| 外设不工作 | 时钟未开启、引脚复用错误 | 查 RCC、GPIO AF 配置 |
| 偶尔复位 | 看门狗未喂狗、电源不稳 | 查电源纹波、喂狗逻辑 |
十、学习路径建议
1. 入门
- 了解数字电路基础:高低电平、上拉下拉、晶振
- 学习 C 语言指针、结构体、位运算
- 从 GPIO 点灯、按键、串口打印开始
- 掌握定时器、中断基本用法
2. 进阶
- SPI / I2C 驱动传感器
- ADC 采集与滤波
- PWM 控制电机
- DMA + 串口收发
- 阅读芯片数据手册(Datasheet)和参考手册(Reference Manual)
3. 实战方向
| 方向 | 内容 |
|---|---|
| 物联网 | ESP32 + WiFi/MQTT |
| 电机控制 | PWM + 编码器 + PID |
| 汽车电子 | CAN 总线 |
| 工业采集 | ADC + RS485 + Modbus |
十一、小结
MCU 是嵌入式系统的「大脑」,用一颗芯片即可完成感知、计算、控制。学习时应抓住:
- 内核与存储器结构
- 外设原理与寄存器配置
- 中断、时钟、DMA 机制
- 开发工具链与调试方法
- 与 FPGA、上位机协同的系统观
从点亮第一颗 LED 开始,逐步过渡到串口通讯、传感器采集、电机控制,是大多数工程师熟悉的 MCU 成长路径。