嵌入式系统概述
嵌入式系统是一种 专用计算机系统,以应用为中心,结合软硬件进行裁剪,以满足系统对功能、可靠性、成本、体积和功耗的严格要求。
嵌入式系统的特点
✅ 专用性:针对特定应用优化,功能较固定。
✅ 实时性:对响应速度要求高,常使用 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
传感器数据采集、简单控制 → 选择 MCUMCU 适用于低功耗、实时控制,如家电、传感器、工业自动化
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) 8MHzESP32 内部 RC 振荡器 8MHz / 40MHz2. 外部晶振(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 32MbitMT29F2G NAND Flash 2GbitAT25SF128A 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 1MbitMT48LC16M16A2 SDRAM 256MbitW9825G6KH 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-M20-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 到 1920x10802.2 LCD 在嵌入式系统中的应用📌 工业 HMI(人机界面)📌 智能家居(智能面板、触摸屏)📌 车载显示(中控屏、仪表盘)📌 医疗设备(心电仪、血糖仪)2.3 常见 LCD 接口接口类型 特点 应用SPI LCD 低速,适用于小屏 128x64, 240x320RGB 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 bps5.2 串口在嵌入式系统中的应用📌 MCU 调试(串口日志)📌 串口屏(HMI 显示)📌 4G/5G 模块(AT 指令) 5.3 串口连接示意图 MCU UART TX <--> 设备 RXMCU 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 / 服务器)。
以上。仅供学习与分享交流,请勿用于商业用途!转载需提前说明。
我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!