这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【转载】嵌入式系统硬件组成与深入介绍--from毅

共1条 1/1 1 跳转至

【转载】嵌入式系统硬件组成与深入介绍--from毅

工程师
2026-02-18 19:55:17     打赏

嵌入式系统的硬件可以看作一个微缩的、高度定制化的计算机系统。其核心架构遵循经典的“冯·诺依曼结构”或“哈佛结构”。

一、各组成部分的深入理解

1. 中央处理单元 - 系统的大脑

CPU是系统的核心,负责执行指令、处理数据和控制整个系统。

核心类型:

微控制器:最常用。它将CPU、内存、基本外设都集成在一颗芯片上,即MCU。例如ST的STM32系列、Microchip的PIC系列、ESP32等。特点是高集成度、低功耗、成本低。

微处理器:更强大,但需要外部搭配内存、存储芯片等才能工作,即MPU。例如树莓派使用的Broadcom BCM系列、NXP的i.MX系列。常用于运行Linux等复杂操作系统。

数字信号处理器:专为高速数学计算(如音频、图像处理)优化,即DSP。

专用集成电路/片上系统:为特定应用高度定制,将整个系统的主要功能集成在一颗芯片上,即SoC。例如手机处理器(高通骁龙、苹果A系列)。

核心指标:

位数:8位、16位、32位、64位。位数越高,单次处理数据能力越强,寻址空间越大。32位ARM Cortex-M/A系列是当前主流。

架构:ARM(绝对主流,如Cortex-M, Cortex-A)、RISC-V(新兴开源架构)、MIPS、x86(较少见)等。

主频:工作时钟频率,影响执行速度。

功耗:嵌入式系统的关键考量,特别是电池供电设备。

2. 存储器 - 系统的记忆

内存:

RAM:程序运行时的“工作台”。

SRAM:静态RAM,速度快、功耗高、成本高,常用作CPU的高速缓存。

DRAM:动态RAM,需要刷新,容量大、成本低,常用作系统主内存(如DDR)。

ROM:存储固定不变的程序和数据。

Flash:嵌入式系统的核心存储介质。又可细分为:

NOR Flash:允许片上执行,常用于存储启动代码和操作系统。

NAND Flash:容量大、成本低,用于存储大量数据(如文件系统),但不能直接执行代码。

存储层次结构:

寄存器 (CPU内部) > 缓存 > RAM > Flash。速度递减,容量递增,成本递减。

3. 基础支撑电路 - 系统的生命线

时钟电路:

提供系统工作的“心跳”。由晶振产生稳定的时钟信号。

现代MCU通常有内部RC振荡器(低成本、精度较低)和外部晶振接口(高精度)。

复位电路:确保系统从一个确定的状态开始工作。包括上电复位、手动复位、看门狗复位等。

电源管理电路:

将外部电源(如电池、USB)转换为系统各部分所需的稳定电压(如3.3V, 1.2V等)。

LDO、DC-DC是常见的电源芯片。

高级的PMIC可以动态调节电压和频率,实现精细功耗控制。

4. 输入/输出接口 - 系统与世界的桥梁

通用输入/输出:

GPIO:最基本、最灵活的接口。每个引脚可通过软件配置为输入(读取按键、传感器状态)或输出(控制LED、继电器)。

通信接口:

串行:

UART:异步串口,用于简单的点对点通信,如调试打印。

I2C:两根线(时钟、数据),支持多主多从,用于连接低速外设(如传感器、EEPROM)。SPI:四根线(时钟、数据输入、数据输出、片选),全双工高速通信,用于连接Flash、显示屏等。

USB:通用串行总线,用于连接主机、设备或OTG。

CAN:汽车和工业领域的主力,抗干扰能力强,支持多主通信。

并行:如FSMC,用于高速连接外部存储器或LCD。模拟接口:

ADC:将模拟信号(温度、电压、麦克风声音)转换为数字信号,供CPU处理。

DAC:将数字信号转换为模拟信号输出(如音频)。

专用外设接口:

PWM:脉冲宽度调制,用于控制电机速度、LED亮度、生成模拟信号。

定时器/计数器:用于精确计时、产生定时中断、测量脉冲宽度、编码器计数。

看门狗定时器:独立的定时器,用于在程序跑飞后复位系统,提高可靠性。

LCD控制器、以太网MAC、SDIO(接SD卡)等。

二、深入理解

真正的“深入理解”体现在以下方面:

1. 理解数据流与控制流

数据如何流动:传感器信号 -> ADC采样 -> DMA搬运至内存 -> CPU处理 -> 通过SPI发送给显示屏。DMA的运用是解放CPU、提高效率的关键。

控制如何响应:按键按下 -> 产生外部中断 -> CPU暂停当前任务 -> 执行中断服务程序 -> 更新状态变量 -> 退出中断。中断 latency 和 优先级 决定了系统的实时性。

2. 理解启动链:从黑暗到光明

这是硬件与软件第一次握手的过程,极其重要:

上电复位:电源稳定后,复位电路使CPU处于已知状态。

时钟初始化:CPU首先使用内部低速时钟,随后软件初始化外部高速时钟。

取指:CPU从固定地址(复位向量)读取指令。这个地址映射到启动介质(如内部BootROM或Flash)。

Bootloader:执行芯片厂商预设的BootROM代码,可能根据引脚状态选择启动模式。然后加载用户编写的二级Bootloader,负责初始化DRAM、Flash,验证应用程序,并跳转执行。

C语言环境建立:启动文件初始化.data段(复制到RAM)、清零.bss段,设置栈指针。

进入main():世界被点亮。

3. 理解“硬件”对“软件”的约束与启示

内存对齐:某些ARM CPU访问非对齐地址会触发硬故障,这是硬件架构决定的。

缓存一致性:当CPU和DMA共同操作同一块内存区域时,必须进行缓存无效化或写回操作,否则会看到“陈旧”数据。

外设寄存器:控制一个外设,本质就是读写其对应的内存映射寄存器。理解每个bit位的含义,就是驾驭该外设的钥匙。

三、以智能物联网传感器节点为例

需求:电池供电,每5分钟采集温湿度并无线发送,待机功耗极低。

硬件设计思路:

MCU选型:选择超低功耗且集成BLE/Sub-GHz射频的MCU(如TI CC2652, Nordic nRF52840)。舍弃高性能MPU。

存储:仅需内部Flash和RAM,省去所有外部存储器。

电源:使用高效率DC-DC+LDO组合,在活跃和睡眠模式间切换。设计精确的电压监测电路,在电池低压时报警。

时钟:高频工作时使用外部晶体保证射频精度;睡眠时切换到内部低频RC振荡器维持RTC。

传感器接口:选择支持I2C或单总线的数字传感器,采样后即可断电。

关键优化:

电路设计:所有外围在MCU睡眠时都应可彻底断电,消除任何微安级的漏电流。

软件协同:MCU在采集、发送数据的极短时间内全速运行,随后立即进入深度睡眠模式,仅RTC工作等待下一次唤醒。整个系统的平均电流可能低至10微安以下。

四、深入理解的关键点

“嵌入式”的精髓在于“量身定做”:硬件选择(CPU性能、内存大小、外设类型)完全取决于具体应用需求,追求成本、功耗、性能、体积的最佳平衡,而不是“越高越好”。

软硬件紧密协同:嵌入式开发是软硬件结合的典型。理解硬件是编写高效、可靠驱动程序和应用代码的基础。例如:

知道GPIO的内部上拉电阻,才能正确配置按键电路。

知道DMA的存在,才能设计出不占用CPU大量时间的数据搬运程序。

启动流程:从按下复位键到main()函数执行,硬件层面发生了什么?

CPU从固定地址(由芯片设计决定,通常是0x00000000)取第一条指令。

执行启动文件中的汇编代码,初始化栈指针,设置时钟系统。

将存储在Flash中的数据(如果有)复制到RAM中。

跳转到C语言的main()函数。

中断系统:嵌入式系统实现实时响应的核心机制。当外设(如定时器到点、UART收到数据)需要CPU处理时,会发出中断请求,CPU暂停当前任务,转去执行中断服务程序,完成后返回。理解中断向量表、优先级、嵌套是关键。

数据手册与原理图:这是嵌入式硬件工程师的“圣经”。通过阅读MCU的数据手册和电路原理图,才能真正理解每个引脚的功能、每个寄存器的用法以及各部件是如何连接在一起的。

五、总结

嵌入式系统的硬件是一个以MCU/MPU/SoC为核心,由存储器提供舞台,基础电路提供保障,丰富的外设接口实现功能的有机整体。深入理解它,不仅要认识每个部件,更要理解它们如何协同工作,以及如何根据具体的应用场景进行最优化的选型和设计。

来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]