3. 嵌入式系统硬件组成:CPU、内存、外设接口、总线、电源管理
做嵌入式这么多年,我见过不少工程师一上来就撸代码,结果板子跑起来各种诡异问题。说白了,很多坑都出在对硬件底层的理解不够。今天咱们就把嵌入式系统的五大硬件模块掰开揉碎讲清楚。
3.1 CPU:系统的“大脑”
CPU 选型是项目启动的第一步。我个人习惯先看三点:指令集架构、位宽、功耗。
| 维度 | 常见选项 | 典型场景 |
|---|---|---|
| 指令集 | ARM / RISC-V / MIPS / x86 | ARM 统治移动与 IoT;RISC-V 开源崛起 |
| 位宽 | 8-bit / 16-bit / 32-bit / 64-bit | 8-bit 做传感器节点;32-bit 做网关 |
| 功耗 | uA 级 / mA 级 / W 级 | 电池设备必须 uA 级待机 |
我记得有一次做低功耗门锁,选了某款 32 位 MCU,待机电流标称 2uA。结果量产后发现一批芯片待机跑到 15uA。查到最后是 GPIO 上拉电阻没关。嗯,CPU 的每个引脚在休眠模式下都得仔细配置。
3.2 内存:SRAM、DRAM 与 Flash
嵌入式内存不像 PC 那样“越大越好”。你得考虑成本、功耗、实时性。
- SRAM:速度快,但贵。一般做 CPU 内部 Cache 或小容量紧耦合内存。
- DRAM:容量大,便宜,但要刷新。SDRAM、DDR 都属于这类。
- Flash:非易失,存代码和配置。NOR Flash 可 XIP(就地执行),NAND Flash 密度高但坏块多。
你想想看,为什么很多 RTOS 系统只用几十 KB 的 SRAM?因为实时任务不需要大缓存,反而要确定性的访存延迟。DRAM 的刷新周期会引入抖动,这在硬实时场景下是致命的。
3.3 外设接口:怎么跟世界打交道
嵌入式系统要连传感器、执行器、显示屏、通信模块。接口选错了,后面改板子成本极高。
| 接口 | 特点 | 典型速率 |
|---|---|---|
| GPIO | 最基础,可模拟任何协议 | 取决于 CPU 翻转速度 |
| UART | 异步串行,点对点 | 115200 bps ~ 几 Mbps |
| I2C | 两线制,多从机,地址寻址 | 100 kHz / 400 kHz / 1 MHz |
| SPI | 四线制,全双工,速度快 | 几十 Mbps |
| CAN | 差分信号,抗干扰,多主 | 125 kbps ~ 1 Mbps |
| USB | 即插即用,支持 OTG | 12 Mbps (Full) / 480 Mbps (High) |
我在项目中遇到过最头疼的事:I2C 总线挂载了 7 个从设备,结果时钟线被拉成“梯形波”,通信频繁出错。后来加了上拉电阻并调整了 PCB 走线长度才解决。说白了,接口速率越高,对 PCB 布局的要求就越苛刻。
3.4 总线:数据流动的“高速公路”
CPU、内存、外设之间靠总线连接。嵌入式系统里最常见的总线架构有两种:
- AMBA (ARM 的 Advanced Microcontroller Bus Architecture):包含 AHB(高性能)、APB(低功耗外设)、AXI(高吞吐)等。
- 私有总线:一些 MCU 厂商自己定义的内部互联,比如 STM32 的 BusMatrix。
为什么总线设计这么重要?因为多个主设备(CPU、DMA、LCD 控制器)同时访问内存时,总线仲裁策略直接决定系统性能。我记得有一次做视频采集,CPU 和 DMA 抢 AHB 总线,导致帧率掉了一半。后来把 DMA 优先级调高,问题就解决了。
3.5 电源管理:续航与稳定的基石
嵌入式设备很多是电池供电。电源管理做不好,再牛的算法也没用。
常见的电源管理技术:
- 动态电压频率调整 (DVFS):负载低时降频降压,省电。
- 时钟门控:不用的模块直接关掉时钟。
- 电源域划分:把系统分成多个独立供电区域,休眠时只保留唤醒域。
- 低功耗模式:Sleep / Deep Sleep / Standby / Shutdown,不同模式功耗差几个数量级。
你想想看,一个 NB-IoT 水表,电池要用 5 年。如果待机电流是 10uA,每天发一次数据(50mA 持续 2 秒),一年下来电池容量消耗多少?我建议你拿到芯片后第一件事就是测各模式的真实功耗,别信数据手册的“典型值”。
3.6 知识结构总览
下面这张图把五大模块的关系画清楚了。你可以把它当作硬件选型时的检查清单。
这五个模块不是孤立的。CPU 选型决定了总线架构,总线架构影响外设接口的吞吐,外设接口的功耗又反过来约束电源管理策略。做系统设计时,一定要从全局视角权衡。