【单片机】嵌入式系统大纲
嵌入式系统概述
嵌入式系统是一种 专用计算机系统,以应用为中心,结合软硬件进行裁剪,以满足系统对功能、可靠性、成本、体积和功耗的严格要求。
嵌入式系统的特点
✅ 专用性:针对特定应用优化,功能较固定。
✅ 实时性:对响应速度要求高,常使用 RTOS。
✅ 低功耗:适用于电池供电设备,如智能手表、传感器节点。
✅ 高可靠性:要求长时间稳定运行,如汽车电子、医疗设备。
✅ 体积小:硬件紧凑,适用于便携设备、嵌入式控制系统。
嵌入式系统主要由 硬件 和 软件 两部分组成:
🔹 1. 硬件部分
嵌入式系统的硬件通常包括:
-
MPU(微处理器)/ MCU(微控制器):系统的核心,负责执行指令和数据处理。
-
存储器:
- RAM(随机存储器):用于存放程序运行时的数据。
- Flash(闪存):用于存储固件和关键数据。
-
电源模块:提供稳定的供电,确保系统正常运行。
-
时钟模块:提供系统运行的基准时钟信号。
-
复位电路:保证系统启动时能够正确初始化。
-
JTAG(调试接口):用于系统调试和固件烧录。
硬件特性 体积小、集成效率高。 面向特定的应用。 功耗低、电磁兼容性好。 软件特性 嵌入式软件的开发与硬件紧密相关。 软件代码要求高效率和高可靠性。 软件一般固化在Flash或Rom中。 软件系统具有高实时性。 一般采用C语言开发。
🔹 2. 软件部分
- 嵌入式操作系统(Embedded RTOS):
- 负责任务调度、资源管理、中断处理等。
- 典型 RTOS:FreeRTOS、RT-Thread、uC/OS、VxWorks、QNX。
- 应用软件:执行具体的业务逻辑,例如:设备控制、数据采集、通信等。
嵌入式系统的硬件组成
最小系统是嵌入式系统运行的基本硬件环境:
嵌入式系统最小系统:
电源模块:提供系统所需的电压和电流。
时钟模块:提供稳定的时钟信号,保证系统正常运行。
复位电路:确保系统在上电或异常情况下能够复位。
MPU/MCU:系统的核心,执行指令和数据处理。
存储器(RAM / Flash):存储程序、数据和运行状态。
JTAG:用于调试和固件烧录。
嵌入式系统通常需要与外部设备交互,常见的外设包括:
USB:用于数据传输、外设连接(如 U 盘、摄像头)。
LCD(液晶显示屏):显示信息,如 UI 界面。
键盘:用于用户输入。
以太网:用于网络通信。
串口(UART):常用于设备间通信(如 RS232、RS485)。
CAN 总线:用于车辆、工业自动化等领域的通信。
传感器:用于采集物理数据(如温度、湿度、加速度)。
辅助存储器:如 SD 卡、EEPROM,用于存储数据。
电机:用于驱动机械设备(如机器人、自动化设备)。
MPU(微处理器)/ MCU(微控制器)
在嵌入式系统中,MCU(微控制单元) 和 MPU(微处理单元) 是最常见的两种计算核心,但它们在架构、性能、应用场景等方面存在明显差异。
- MCU(Microcontroller Unit,微控制单元)
MCU 也称为单片机(Microcontroller),它是一个集成了处理器(CPU)、存储器(RAM/ROM)、外设(I/O、ADC、UART 等)的微型计算机,适用于低功耗、实时性强的嵌入式应用。
🔹 MCU 主要特点:
集成度高:CPU + RAM + Flash + I/O 统一封装。
低功耗:适用于电池供电设备。
实时性强:适用于实时控制(RTOS 或裸机编程)。
成本低:适用于大规模量产的消费电子。
计算能力较弱:通常主频在 几十 MHz 到 400 MHz 之间。
🔹 MCU 常见品牌:
品牌 | 典型 MCU 系列 |
---|---|
ST | STM32(Cortex-M 系列) |
NXP | LPC、Kinetis |
TI | MSP430、TMS320 |
Microchip | PIC、AVR |
Nordic | nRF52(低功耗蓝牙) |
🔹 MCU 典型应用:
📌 家电控制(空调、洗衣机、微波炉)
📌 传感器节点(温湿度监测、智能家居)
📌 工业控制(PLC、马达驱动、工控设备)
📌 汽车电子(仪表盘、车窗控制、胎压监测)
📌 智能穿戴(智能手环、蓝牙耳机)
🔹 典型 MCU 硬件架构
+----------------------+
| CPU Core (ARM M4) |
+----------------------+
| Flash (256 KB) |
+----------------------+
| RAM (64 KB) |
+----------------------+
| GPIO / SPI / I2C |
+----------------------+
- MCU(Microcontroller Unit,微控制单元)
MPU 是高性能的嵌入式微处理器,它通常需要外部 RAM、Flash、I/O 控制器,适用于复杂操作系统(如 Linux、Android),支持高算力、多任务并行处理。
🔹 MPU 主要特点:
高计算能力:主频通常在 500MHz ~ 3GHz。
支持外部 DRAM:适用于大规模数据处理。
支持操作系统:Linux、Android、RTOS。
多核架构:支持 ARM Cortex-A、RISC-V。
功耗较高:相比 MCU 更耗电。
🔹 MPU 常见品牌
品牌 | 典型 MPU 系列 |
---|---|
NXP | i.MX6 / i.MX8 |
ST | STM32MP1 |
TI | Sitara AM335x |
Allwinner | A64, H3 |
Rockchip | RK3399 |
Raspberry Pi | Broadcom BCM2711 |
🔹 MPU 典型应用
📌 工业网关(工业 4.0、物联网)
📌 智能家居(智能音箱、智能摄像头)
📌 车载娱乐系统(车载 Android、导航)
📌 边缘计算(AI 计算、机器视觉)
📌 机器人控制(无人机、自动驾驶)
🔹 典型 MPU 硬件架构
+----------------------+
| CPU Core (ARM A53)|
+----------------------+
| DDR Controller |
+----------------------+
| GPU (Mali) |
+----------------------+
| USB / Ethernet |
+----------------------+
- MCU vs. MPU 的核心区别
比较项 | MCU(微控制单元) | MPU(微处理单元) |
---|---|---|
计算能力 | 低(几十 MHz ~ 400 MHz) | 高(500 MHz ~ 3 GHz) |
存储器 | 内部 Flash + RAM | 需要外部 RAM(DDR) |
功耗 | 低功耗(适合电池供电) | 高功耗(需要散热) |
操作系统 | 可裸机运行或 RTOS | 支持 Linux / Android |
应用场景 | 低功耗控制、实时性强 | 复杂计算、多任务处理 |
外设支持 | GPIO、UART、SPI、I2C | USB、Ethernet、PCIe |
成本 | 低(几元 ~ 数十元) | 高(几十元 ~ 上百元) |
二者的应用对比
应用场景 | 适合 MCU | 适合 MPU |
---|---|---|
智能家居 | 温湿度传感器、门锁控制 | 智能音箱、视频监控 |
汽车电子 | 车窗控制、胎压监测 | 车载娱乐、自动驾驶 |
工业控制 | 传感器采集、PLC 控制 | 工业网关、边缘计算 |
医疗设备 | 心率监测、血氧仪 | 医疗影像处理 |
机器人 | 机械臂控制 | AI 视觉处理 |
物联网 | 低功耗终端 | 云端计算 |
低功耗、实时性 → 选择 MCU
高性能、复杂计算 → 选择 MPU
支持操作系统(Linux/Android) → 选择 MPU
传感器数据采集、简单控制 → 选择 MCU
MCU 适用于低功耗、实时控制,如家电、传感器、工业自动化
MPU 适用于高算力、复杂应用,如车载系统、AI 计算、智能家居
目前企业常用:
MCU + MPU 结合(如 STM32MP1)
AI 处理器嵌入 MCU/MPU(如 ESP32 AI 加速)
电源模块(Power Module)
电源模块(Power Module) 是用于提供稳定电源的电子组件,在嵌入式系统、工业控制、通信设备、汽车电子等领域至关重要。它的主要作用是将输入电源(如 AC 220V、DC 12V、USB 5V)转换成适合目标系统的稳定输出电压(如 3.3V、5V、1.8V),并提供过流、过压、短路保护等功能。
按转换方式分类电源模块:
类型 | 特点 | 应用场景 |
---|---|---|
AC-DC 电源模块 | 交流(AC)转直流(DC),通常带变压器 | 工业设备、电源适配器 |
DC-DC 电源模块 | 直流(DC)转直流(DC),可升压/降压 | 嵌入式系统、汽车电子 |
LDO 线性稳压器 | 低噪声、低纹波,但效率较低 | 低功耗 MCU、传感器 |
开关电源(SMPS) | 高效率,但电磁干扰(EMI)较大 | 工业控制、服务器 |
POE(以太网供电) | 通过网线供电,减少布线需求 | 监控摄像头、IoT 设备 |
嵌入式系统中的电源模块
嵌入式系统对电源有严格的要求,通常包含以下主要模块:
主电源输入(如 DC 12V、USB 5V、锂电池 3.7V)
DC-DC 降压模块(如 12V → 5V,5V → 3.3V)
LDO 稳压器(为 MCU、传感器提供 1.8V、3.3V)
备用电池管理(如 RTC 实时时钟供电)
最小嵌入式系统电源架构
+------------------+
| AC-DC 适配器 | 输入 220V AC → 输出 12V DC
+------------------+
↓
+------------------+
| DC-DC 降压模块 | 12V → 5V,供给主系统
+------------------+
↓
+------------------+ +------------------+
| DC-DC 降压模块 | → 3.3V | LDO 稳压器 | → 1.8V(传感器)
+------------------+ +------------------+
常见嵌入式电源设计:
系统组件 | 工作电压 |
---|---|
MCU/MPU | 3.3V / 1.8V |
RAM | 1.8V / 3.3V |
Flash 存储 | 3.3V |
LCD 显示屏 | 3.3V / 5V |
无线通信模块(Wi-Fi/BLE) | 3.3V |
USB 设备 | 5V |
LED、马达 | 5V / 12V |
电源模块的关键参数
系统组件 | 工作电压 |
---|---|
输入电压(Vin) | AC-DC 模块:110V / 220V AC DC-DC 模块:输入 12V / 5V / 3.3V |
输出电压(Vout) | 常见输出:5V、3.3V、1.8V 可调节电压:DC-DC 降压模块(如 12V → 1.2V ~ 5V 可调) |
输出电流(Iout) | MCU 低功耗应用:几十 mA MPU(如 Raspberry Pi):1A ~ 3A 工业控制设备:10A 以上 |
转换效率 | LDO 线性稳压器:低效率(50%~70%),但低噪声 DC-DC 开关电源:高效率(80%~95%),适合大功率应用 |
纹波 & 噪声 | 低纹波(mV 级别)适用于MCU、传感器 高频开关电源可能产生电磁干扰(EMI) |
部分常见电源模块芯片
芯片型号 | 类型 | 输入电压 | 输出电压 | 应用 |
---|---|---|---|---|
AMS1117 | LDO | 5V | 3.3V | MCU 供电 |
LM2596 | DC-DC 降压 | 12V | 5V / 3.3V | 嵌入式系统 |
XL6009 | DC-DC 升压 | 5V | 12V | 电机控制 |
MP1584 | 高效率 DC-DC | 12V | 3.3V / 5V | 工业应用 |
TPS5430 | 开关电源 | 24V | 5V | 自动化控制 |
电源模块的保护电路
为了提高电源系统的可靠性,通常会添加保护电路。
保护类型 | 作用 |
---|---|
过流保护(OCP) | 防止电流过大导致损坏 |
过压保护(OVP) | 防止电压过高损坏负载 |
短路保护(SCP) | 发生短路时自动断电 |
温度保护(OTP) | 防止过热损坏电路 |
因此,在设计电源模块时需要注意:选择合适的电源架构(LDO / DC-DC)、计算功耗,确保电源能提供足够电流;降低 EMI 干扰,合理布线、考虑高温环境下的散热设计;电源模块是嵌入式系统的核心组件,决定了整个系统的稳定性和可靠性。
时钟模块(Clock Module)
时钟模块(Clock Module) 是嵌入式系统中的关键组件,负责提供稳定的时钟信号,用于同步 MCU/MPU、外设、通信接口等,时钟信号决定了处理器的运行速度,影响系统的性能、功耗、定时精度,在MCU、MPU、通信、工业控制、汽车电子等应用中是不可或缺的模块之一。
按信号来源分类时钟模块:
类型 | 特点 | 应用场景 |
---|---|---|
内部时钟(Internal Clock) | MCU 内部集成,成本低,精度一般 | 低功耗应用(如传感器、手持设备) |
外部晶振(Crystal Oscillator, XTAL) | 采用石英晶体,精度高 | MCU/MPU 主频、通信模块 |
外部有源振荡器(Active Oscillator) | 内置振荡电路,直接输出时钟信号 | 高精度场景(如工业控制、通信基站) |
RTC 实时时钟(Real-Time Clock) | 低功耗、独立计时,带备用电池 | 计时应用(如智能手表、服务器) |
嵌入式系统中的时钟架构
嵌入式系统通常包含多个时钟源,以满足不同模块的需求:
- 主时钟(System Clock, SYSCLK):驱动 CPU、RAM、Flash
- 外设时钟(Peripheral Clock):用于 UART、SPI、I2C、PWM
- RTC 低功耗时钟(32.768 kHz):用于实时时钟、低功耗模式
典型嵌入式时钟架构
+------------------+
| 外部晶振 (XTAL) | → 主时钟 (SYSCLK) → CPU / RAM
+------------------+
↓
+------------------+ +------------------+
| PLL (锁相环) | → 高速时钟 (HCLK) → 外设 (SPI, USB, ADC)
+------------------+ +------------------+
↓
+------------------+
| RTC 时钟 (32kHz) | → 低功耗模式 / 时间计时
+------------------+
常见的时钟源
1. 内部时钟(Internal Clock)
✅ 特点:
由 MCU 内部 RC 振荡器(RC Oscillator)生成
成本低、功耗低,但精度低(±1%~5% 误差)
适用于对时钟精度要求不高的应用
✅ 应用:
低功耗传感器
LED 控制器
按键扫描
✅ 示例:
STM32F103 HSI(High-Speed Internal) 8MHz
ESP32 内部 RC 振荡器 8MHz / 40MHz
2. 外部晶振(Crystal Oscillator, XTAL)
✅ 特点:
采用 石英晶体(Quartz Crystal),通过物理振荡产生稳定频率
精度高(±20ppm ~ ±50ppm),比内部 RC 振荡器更稳定
需要外部 负载电容(Load Capacitance) 进行匹配
✅ 应用:
MCU / MPU 主时钟
通信协议(UART、SPI、Ethernet)
工业自动化
✅ 示例:
晶振类型 常见频率 应用
低速晶振(LFXTAL) 32.768 kHz RTC 实时时钟
高速晶振(HFXTAL) 8MHz / 16MHz MCU 主时钟
高频晶振(MHz 级) 25MHz / 48MHz 以太网、USB
✅ 示例电路(16MHz 晶振):
+--------+
XTAL --| |-- XTAL
| MCU |
+--------+
3. 外部有源振荡器(Active Oscillator)
✅ 特点:
内部集成 振荡电路 + 反馈环路,直接输出稳定时钟
精度高(±10ppm 以内),适用于高精度系统
需要 外部 3.3V / 5V 供电
✅ 应用:
高精度计时(服务器、GPS)
工业控制(PLC、机器人)
通信设备(5G、WIFI)
✅ 示例:
TCXO(温补晶振):温度补偿,适用于 GPS、无线通信
OCXO(恒温晶振):超高精度,适用于基站、航空电子
4. RTC 实时时钟(Real-Time Clock)
✅ 特点:
独立于主时钟运行,低功耗,可用纽扣电池供电
采用 32.768 kHz 晶振,适用于时间计时
适用于需要 掉电仍能计时 的系统
✅ 应用:
智能手表、物联网设备
服务器、工业自动化
数据记录仪(黑匣子)
✅ 示例 RTC 芯片:
芯片型号 特点 应用
DS1307 I2C 接口,支持电池备份 物联网、智能家居
DS3231 高精度温补 RTC 工业控制
PCF8563 低功耗 RTC 便携设备
✅ RTC 电路示例:
+-------------+
| MCU/MPU |
|-------------|
| RTC 时钟 | ← 32.768 kHz 晶振
+-------------+
|
+---------+
| 电池 (3V) | (掉电仍可计时)
+---------+
时钟模块的关键参数:
参数 | 说明 |
---|---|
工作频率 | 如 8MHz、16MHz、32.768kHz |
精度(ppm) | 影响系统计时误差 |
功耗 | 低功耗系统需选择 RTC 时钟 |
启动时间 | 晶振启动时间影响系统初始化 |
温度稳定性 | 高精度应用需选择 TCXO / OCXO |
因此,在设计时钟模块时需要注意的事项:选择合适的时钟源(内部 RC / 外部晶振 / RTC),匹配合适的负载电容(Load Capacitance),避免时钟信号干扰(布线需远离高频信号),高精度应用选用 TCXO / OCXO,低功耗应用使用 RTC 独立供电。
时钟模块是嵌入式系统的核心组件,决定了CPU 运行频率、通信精度、系统计时等。不同应用场景选择不同的时钟源,如内部 RC 适合低成本应用,外部晶振适合高精度应用,RTC 适合低功耗计时。
复位电路(Reset Circuit)
复位电路(Reset Circuit) 是嵌入式系统中的关键组成部分,负责在系统上电、异常情况下,使 MCU/MPU 进入稳定的初始状态。
复位电路的主要作用:
- 确保 MCU/MPU 在正确的电压和时序条件下启动
- 在异常情况下(如电源掉电、干扰、程序卡死)强制 MCU 重新初始化
- 防止系统处于错误状态,提高系统可靠性
复位电路的分类:
1. 上电复位(Power-On Reset, POR)
✅ 作用:
在系统上电时,确保 MCU/MPU 进入**稳定的初始状态**
通过**检测电源电压升高到某个阈值**后,释放复位信号
✅ 应用:
MCU / MPU 启动初始化
电源管理电路
✅ 示例电路:
+5V ───┬───────────+
| |
[电容 C] | 上电瞬间 C 充电,复位信号保持低电平
| |
[电阻 R] | 一段时间后,C 充满电,复位信号变高
| |
GND |
| MCU RESET 引脚
GND ────────+
典型值:
C = 0.1µF,R = 10kΩ
RC 时间常数决定复位时间
======================================================================
2. 手动复位(Manual Reset)
✅ 作用:
用户按下**复位按钮(Reset Button)**,强制 MCU 重新启动
✅ 应用:
开发板(如 **Arduino、STM32**)
设备需手动重启(如 路由器、工控设备)
✅ 示例电路:
+3.3V ───┬──────────────+
| |
R (10kΩ) |
| |
按键 ───+─── RESET 引脚
|
GND
工作原理:
平时 **RESET 引脚为高电平**
按下按钮 → 连接 GND → **RESET 引脚变低** → MCU 复位
======================================================================
3. 看门狗复位(Watchdog Reset, WDT)
✅ 作用:
防止程序死机(如**死循环、卡死**),定时检查系统是否正常运行
MCU 需要**定期喂狗(喂 WDT),否则系统会自动复位**
✅ 应用:
无人机、汽车电子(防止 MCU 死机)
工业控制、服务器(确保系统长期稳定运行)
✅ 看门狗复位逻辑:
+-----------------+
| MCU 运行 | → 正常:定期喂狗
+-----------------+
↓
(程序死机,未喂狗)
↓
+-----------------+
| 看门狗超时复位 | → MCU 自动重启
+-----------------+
✅ 示例芯片:
芯片型号 特点
STM32 WDT MCU 内置硬件看门狗
TLV803 独立看门狗复位芯片
MAX706 监测电源 + 看门狗复位
======================================================================
4. 低电压复位(Brown-Out Reset, BOR)
✅ 作用:
**检测电源电压是否低于安全范围**,防止 MCU 在低电压下误动作
电压恢复正常后,自动释放复位信号
✅ 应用:
电池供电设备(如 智能手表、IoT 设备)
汽车电子(防止电池电压波动影响 MCU)
✅ 示例芯片:
芯片型号 作用
STM32 BOR MCU 内置低电压检测
TPS3808 低电压监测 + 复位
MIC811 低功耗电源监测
复位电路的关键参数:
参数 | 说明 |
---|---|
复位电压阈值 | 低于该电压时触发复位(如 2.7V、3.0V) |
复位延迟时间 | 复位信号保持的时间(如 100ms) |
功耗 | 低功耗系统选择低功耗复位电路 |
复位引脚逻辑 | 低电平复位(Active Low) 或 高电平复位(Active High) |
常见问题 & 解决方案:
问题 | 可能原因 | 解决方案 |
---|---|---|
系统随机复位 | 电源波动、干扰 | 增加 滤波电容、屏蔽干扰 |
上电后 MCU 无法启动 | 复位保持时间过短 | 调整 RC 复位电路参数 |
误触发复位 | RESET 引脚悬空 | 加 上拉电阻(10kΩ) |
看门狗误复位 | 喂狗时间配置不合理 | 调整 WDT 超时时间 |
典型嵌入式复位架构
+------------------+
| 电源管理 IC | → 低电压检测(BOR)
+------------------+
↓
+------------------+
| RC 复位电路 | → 复位 MCU
+------------------+
↓
+------------------+
| MCU 看门狗 | → 防止死机复位
+------------------+
↓
+------------------+
| 手动复位按钮 | → 用户手动复位
+------------------+
复位电路的设计注意事项:保持 RESET 引脚的稳定性(防止误触发),使用 RC 复位电路,避免上电时振荡;看门狗定时配置合理,避免误复位;低功耗系统应优化复位电路功耗;在 PCB 设计时,RESET 线应远离干扰源(如高频信号)。合理设计复位电路,能够提高系统稳定性和可靠性。
复位电路是 MCU/MPU 可靠运行的关键,上电复位 确保 MCU 正确启动,手动复位 允许用户重启系统,看门狗复位 防止程序死机,低电压复位 保护系统免受电源波动影响。
Flash 与 RAM 在嵌入式系统中的作用
在嵌入式系统中,Flash 和 RAM 是两种关键的存储器,它们在程序存储、数据存储、系统运行中起着不同的作用。
- Flash(外部存储器) → 用于存储程序和长期数据
- RAM(内部存储器) → 用于存储临时数据,支持程序运行
Flash & RAM 是嵌入式系统的核心存储组件,Flash 适用于长期存储(固件、文件),RAM 适用于程序运行时的临时数据存储(变量、缓存),两者结合使用,确保系统高效稳定运行。
Flash 存储器
Flash(闪存) 是一种非易失性存储器(Non-volatile Memory),即掉电后数据不会丢失。 它用于存储程序代码(固件)、配置数据、文件系统等。
Flash 的特点:
1. 掉电不丢失数据(适用于程序存储)
2. 读写速度比 RAM 慢(通常用作存储,而非运行数据)
3. 写入次数有限(一般 10 万 ~ 100 万次擦写寿命)
4. 块/页擦除机制(写入数据前需先擦除)
Flash 的分类:
类型 特点 应用
NOR Flash 读取速度快,支持按 **字节(Byte)** 访问 MCU 固件存储
NAND Flash 存储密度高,按 **块(Block)** 访问 SSD、TF 卡
eMMC/ UFS 集成控制器,性能高 手机、嵌入式存储
SPI Flash 低功耗,适用于小型嵌入式系统 物联网、微控制器
Flash 在嵌入式系统中的作用:
📌 存储固件(Bootloader / 操作系统 / 应用程序)
📌 存储配置数据、日志、参数
📌 文件系统(如 FAT, SPIFFS, LittleFS)
📌 存储 AI/ML 模型(如 Edge AI 设备)
示例 Flash 芯片:
芯片型号 类型 容量
W25Q32 SPI Flash 32Mbit
MT29F2G NAND Flash 2Gbit
AT25SF128A NOR Flash 128Mbit
RAM 存储器
RAM(随机存取存储器,Random Access Memory) 是易失性存储器(Volatile Memory),即掉电后数据会丢失。 它主要用于存储运行中的临时数据,如变量、堆栈、缓存。
RAM 的特点
1. 速度快(比 Flash 快 100~1000 倍)
2. 掉电数据丢失(仅存储临时数据)
3. 按字节访问(适用于存储动态数据)
4. 成本较高(每单位存储容量比 Flash 贵)
RAM 的分类
类型 特点 应用
SRAM(静态 RAM) 低功耗,速度快,成本高 MCU 内部 RAM, 高速缓存
DRAM(动态 RAM) 需要刷新,存储密度高 MPU、PC 内存(DDR)
DDR SDRAM 高速数据存取,适用于多任务 Linux 系统、智能设备
RAM 在嵌入式系统中的作用
📌 存储程序运行时的变量、数据、堆栈
📌 作为缓冲区(Buffer)
📌 运行操作系统(如 Linux 需要 DDR)
📌 缓存文件、网络数据
示例 RAM 芯片:
芯片型号 类型 容量
IS61C1024AL SRAM 1Mbit
MT48LC16M16A2 SDRAM 256Mbit
W9825G6KH DDR2 256Mbit
Flash vs RAM 的区别
区别 | Flash(外部存储器) | RAM(内部存储器) |
---|---|---|
数据存储特性 | 非易失性(掉电不丢失) | 易失性(掉电丢失) |
访问速度 | 慢(几十 MB/s) | 快(几百 MB/s ~ GB/s) |
用途 | 存储固件、配置、文件 | 存储变量、堆栈、缓存 |
写入限制 | 写入次数有限(10 万次) | 无限读写 |
单位成本 | 便宜(适合大容量存储) | 贵(适合高速存取) |
嵌入式系统中的 Flash & RAM 结构
典型 MCU(如 STM32)存储架构(Flash):
+-------------------+
| Flash (2MB) | ← 存储 Bootloader, 固件, 配置数据
+-------------------+
↓
+-------------------+
| RAM (256KB) | ← 存储运行时变量、堆栈
+-------------------+
典型 MPU(如 Raspberry Pi)存储架构:
+--------------------------+
| eMMC / SD 卡 (Flash) | ← 存储操作系统, 文件系统
+--------------------------+
↓
+--------------------------+
| DDR RAM (1GB~8GB) | ← 运行 Linux, 进程, 缓存
+--------------------------+
设计存储系统时的注意事项:Flash 主要用于存储固件,RAM 主要用于临时数据;频繁写入的数据(如日志)应存入 RAM 或耐久性好的 Flash(如 FRAM);高性能系统(如 Linux)需要 DDR RAM,否则系统运行缓慢;低功耗系统应优化 RAM 使用,避免功耗过高。
JTAG(Joint Test Action Group)
JTAG(联合测试行动小组,Joint Test Action Group) 是一种标准化的调试和测试接口,用于嵌入式系统的芯片调试(Debug)、编程(Programming)和边界扫描(Boundary Scan)。
JTAG 主要用于:
- 调试 MCU/MPU(单步执行、断点、寄存器查看)
- 下载固件(Flash 编程)
- 边界扫描测试(Boundary Scan)(用于电路板测试)
JTAG 主要适用于ARM 处理器、FPGA、DSP、MCU、MPU 等硬件调试。
JTAG 的核心功能
1. 硬件调试(Debugging)
断点调试:可以在代码执行过程中暂停程序,检查变量和寄存器
单步执行(Step-by-Step):逐条指令运行代码,分析程序逻辑
内存和寄存器访问:可直接读取和修改 MCU/MPU 内部寄存器
2. 固件下载(Flash Programming)
通过 JTAG 烧录 Flash,用于嵌入式系统的固件升级
支持**裸机程序(Bootloader)和操作系统(如 Linux)**的下载
3. 边界扫描测试(Boundary Scan)
在**不运行 MCU 程序的情况下,直接测试电路板上的引脚连接**
适用于大规模 PCB 测试(如 FPGA、BGA 封装芯片)
JTAG 硬件接口
JTAG 通信使用 TAP(测试访问端口,Test Access Port),通常包括以下 5 条信号线:
---------------------------------------------
信号 全称 作用
TDI Test Data In 数据输入
TDO Test Data Out 数据输出
TCK Test Clock 时钟信号
TMS Test Mode Select 模式选择
TRST(可选) Test Reset 复位信号(部分芯片不需要)
---------------------------------------------
✅ JTAG 连接示意图(4 线 + 1 线 TRST 可选):
JTAG 调试器 MCU/MPU/FPGA
+---------+ +-----------+
| TDI | ----> | TDI |
| TDO | <---- | TDO |
| TCK | ----> | TCK |
| TMS | ----> | TMS |
| TRST | ----> | TRST (可选)|
+---------+ +-----------+
---------------------------------------------
✅ JTAG 常见的接口标准
接口类型 特点 应用
10-Pin JTAG(ARM 标准) 2×5 排针 ARM Cortex-M
20-Pin JTAG(ARM Cortex 旧版) 2×10 排针 旧版 ARM 设备
SWD(Serial Wire Debug) 2 线调试(SWDIO+SWCLK) 低引脚数 MCU
JTAG 在嵌入式系统中的应用
- MCU/MPU 调试:
📌 调试 STM32、ESP32、NXP 等微控制器
📌 查看寄存器状态、变量、断点分析
示例 - 通过 JTAG 调试 STM32
(1) 连接 JTAG 调试器(如 ST-Link, J-Link)
(2) 使用 Keil / OpenOCD 运行调试模式
(3) 设置断点,查看寄存器和变量
- FPGA 调试:
📌 JTAG 用于 FPGA 下载比特流(Bitstream)
📌 用于 FPGA 内部逻辑分析(如 Xilinx ILA)
示例 - 通过 JTAG 烧录 Xilinx FPGA
(1) 连接 JTAG 调试器(如 Xilinx Platform Cable)
(2) 使用 Vivado / Quartus 下载比特流(.bit/.sof 文件)
(3) 运行 FPGA 程序,调试内部逻辑
- Linux 内核调试:
📌 JTAG 用于调试 ARM Linux 内核(U-Boot、Kernel)
📌 可用于 OpenOCD 远程 GDB 调试
示例 - 通过 JTAG 调试 Linux
(1) 连接 JTAG 调试器(如 J-Link, FT2232)
(2) 使用 OpenOCD 连接 ARM 处理器
(3) 运行GDB,进行内核调试
常见 JTAG 调试工具:
工具名称 | 支持设备 | 特点 |
---|---|---|
ST-Link | STM32 | 低成本,支持 SWD |
J-Link | ARM Cortex-M/A | 速度快,支持 GDB |
Xilinx Platform Cable | FPGA | 支持 Xilinx 调试 |
FT2232H(OpenOCD) | 通用 JTAG | 低成本,适用于 Linux |
✅ 典型 JTAG 调试器(J-Link 连接 STM32):
PC (IDE: Keil) → J-Link → STM32 JTAG/SWD
JTAG vs SWD(串行调试)
对比项 | JTAG(传统) | SWD(ARM 专用) |
---|---|---|
连接线数量 | 4 ~ 5 线 | 2 线(SWDIO, SWCLK) |
调试速度 | 较慢 | 更快(适用于 ARM) |
支持芯片 | MCU/MPU/FPGA | 仅 ARM Cortex-M |
复杂度 | 需要多条信号线 | 更简单 |
- JTAG 适用于通用芯片(FPGA、DSP、ARM)
- SWD 适用于 ARM Cortex-M(STM32、NXP)
JTAG 在 PCB 设计中的注意事项:JTAG 引脚应远离高频信号,避免干扰;上拉/下拉电阻(如 TMS/TCK 需要 10kΩ 上拉),提供 JTAG 连接器,方便调试和量产测试;考虑 JTAG 禁用(如生产后禁用 JTAG 以提高安全性)。 JTAG 是嵌入式系统中最常用的调试和测试接口:它用于 MCU/MPU 调试、固件下载、边界扫描;支持 ARM、FPGA、DSP 等嵌入式设备,而 SWD 是 JTAG 的简化版,适用于 ARM Cortex-M, JTAG 是嵌入式开发、调试、生产测试的关键工具。
嵌入式系统的外设(Peripheral)
在嵌入式系统中,外设(Peripheral) 是 MCU/MPU 连接外部设备的关键组件,包括 USB、LCD、键盘、以太网、串口、CAN、传感器、存储器、电机 等。
这些外设通过 I2C、SPI、UART、GPIO、PWM、ADC、CAN、Ethernet 等接口 与主控芯片(MCU / MPU)通信,实现数据交互和设备控制。
1. USB(通用串行总线,Universal Serial Bus)
1.1 USB:
高速数据传输(USB 2.0: 480Mbps,USB 3.0: 5Gbps)
支持多种设备(U 盘、鼠标、键盘、摄像头)
支持主机(Host)和设备(Device)模式
1.2 USB 在嵌入式系统中的应用
USB OTG(On-The-Go):单个端口既可作为主机(Host),也可作为设备(Device)
USB CDC(串行通信):用于虚拟串口(USB 转串口)
USB HID(人机接口设备):用于键盘、鼠标
USB Mass Storage(U 盘、TF 卡读写)
1.3 常见 USB 外设
设备 接口 应用
USB 转串口 USB → UART 调试、数据传输
USB 摄像头 USB → MIPI 机器视觉
USB 网卡 USB → Ethernet 网络连接
USB 读卡器 USB → SDIO 存储扩展
✅ USB 连接示意图
MCU/MPU (USB Host) <--> USB 设备 (U 盘 / 键盘 / 摄像头)
2. LCD(显示屏)
2.1 LCD:
TFT LCD、OLED、e-Paper(电子墨水屏)等类型
常见接口:SPI、RGB、LVDS、MIPI DSI
分辨率从 128x64 到 1920x1080
2.2 LCD 在嵌入式系统中的应用
📌 工业 HMI(人机界面)
📌 智能家居(智能面板、触摸屏)
📌 车载显示(中控屏、仪表盘)
📌 医疗设备(心电仪、血糖仪)
2.3 常见 LCD 接口
接口类型 特点 应用
SPI LCD 低速,适用于小屏 128x64, 240x320
RGB LCD 中速,支持中型屏幕 7寸 TFT 屏
MIPI DSI 高速,适用于高清屏幕 手机、平板
✅ LCD 连接示意图
MCU/MPU (SPI / RGB / MIPI) <--> LCD 屏幕
3. 键盘(Keyboard)
3.1 键盘:
机械按键、电容触摸按键、矩阵键盘
常见接口:GPIO、I2C(扩展)、USB(HID)
3.2 键盘在嵌入式系统中的应用
📌 工业控制面板(PLC、仪表)
📌 自助终端(ATM、公交刷卡机)
📌 游戏设备(手柄、街机)
3.3 键盘矩阵示意图
行扫描(ROW) <--> MCU GPIO
列扫描(COL) <--> MCU GPIO
4. 以太网(Ethernet)
4.1 以太网介绍:
支持 TCP/IP 网络通信
常见接口:RMII / RGMII / SPI(W5500)
4.2 以太网在嵌入式系统中的应用
📌 工业自动化(Modbus TCP、OPC UA)
📌 IoT 网关(远程监控)
📌 网络摄像头(IP Camera)
4.3 以太网连接示意图
MCU/MPU (MAC) <--> PHY (RJ45) <--> 网络
5. 串口(UART)
5.1 串口介绍:
全双工通信(TX / RX)
波特率:9600 ~ 115200 bps
5.2 串口在嵌入式系统中的应用
📌 MCU 调试(串口日志)
📌 串口屏(HMI 显示)
📌 4G/5G 模块(AT 指令)
5.3 串口连接示意图
MCU UART TX <--> 设备 RX
MCU UART RX <--> 设备 TX
6. CAN 总线
6.1 CAN 介绍:
汽车、工业领域的可靠通信协议
支持多节点通信,抗干扰能力强
6.2 CAN 在嵌入式系统中的应用
📌 汽车电子(车身控制、发动机管理)
📌 工业自动化(PLC、传感器)
6.3 CAN 连接示意图
MCU CAN_TX <--> CAN 收发器 <--> CAN 总线
MCU CAN_RX <--> CAN 收发器 <--> CAN 总线
7. 传感器
7.1 常见传感器类型:
类型 接口 应用
温湿度传感器 I2C / SPI 气象站、智能家居
加速度计 I2C / SPI 运动检测
光传感器 ADC / I2C 亮度调节
7.2 传感器连接示意图
MCU (I2C / SPI / ADC) <--> 传感器
8. 辅助存储器
8.1 存储类型:
存储设备 接口 应用
SD 卡 SDIO / SPI 数据存储
eMMC MMC 嵌入式系统
NAND Flash SPI / NAND 固件存储
8.2 存储设备连接示意图
MCU (SPI / SDIO) <--> SD 卡 / Flash
9. 电机
9.1 电机类型:
类型 驱动方式 应用
直流电机(DC Motor) PWM + H 桥 机器人、风扇
步进电机(Stepper Motor) PWM + 驱动芯片 CNC、3D 打印
伺服电机(Servo Motor) PWM 机械臂、无人机
9.2 电机控制示意图
MCU (PWM / GPIO) <--> 电机驱动器 <--> 电机
外设是嵌入式系统的关键组成部分,不同外设使用不同的通信接口(I2C、SPI、UART、CAN、Ethernet),合理选择和集成外设。
嵌入式系统应用场景
嵌入式系统是现代电子设备的核心,广泛应用于工业、物联网、汽车电子、医疗、消费电子等领域。它的软硬件高度集成、低功耗、高可靠性,使其成为智能设备和自动化系统的关键技术。
📌 工业控制:PLC、智能仪表、机器人控制。
📌 物联网(IoT):智能家居、智能穿戴、环境监测。
📌 汽车电子:车载导航、自动驾驶、发动机控制。
📌 医疗设备:心率监测仪、血糖仪、MRI 设备。
📌 消费电子:智能手机、智能电视、游戏机。
总之,嵌入式系统是一种专用计算机系统,通常集成在电子设备中,执行特定功能。其硬件和软件具有独特的特性,不同于通用计算机(PC / 服务器)。
以上。仅供学习与分享交流,请勿用于商业用途!转载需提前说明。
我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!