1. 课程导论:低功耗嵌入式系统概述、串口通信在物联网中的地位、本课程学习目标与前置知识

1.1 低功耗嵌入式系统概述

在物联网(IoT)与边缘计算飞速发展的今天,嵌入式系统正从“功能驱动”转向“能效驱动”。大量终端节点依赖电池或能量采集供电,一次部署后往往需要运行数月甚至数年。低功耗设计不再是可选项,而是产品能否商业落地的核心约束。

低功耗嵌入式系统的设计目标是在满足实时性与处理能力的前提下,最小化系统平均功耗。其功耗模型通常由三部分组成:

功耗分量 来源 典型占比(IoT节点)
动态功耗 CMOS电路翻转、时钟切换、外设工作 40% – 60%
静态功耗 漏电流、偏置电流、保持电流 10% – 30%
唤醒与状态切换功耗 从休眠到活跃的瞬态能量 5% – 20%

降低动态功耗的核心策略包括:降低工作频率、关闭未使用外设时钟、使用低功耗通信协议。而降低唤醒功耗的关键在于:减少唤醒次数、缩短唤醒时间、避免轮询。本课程聚焦的“空闲中断唤醒 + DMA 协同”正是针对串口通信场景,将唤醒功耗降至理论最低的经典方案。

设计原则提示: 低功耗设计应遵循“90/10 法则”——系统 90% 的时间处于休眠状态,10% 的时间处理突发数据。串口空闲中断正是利用这 90% 的休眠窗口实现零功耗等待。

1.2 串口通信在物联网中的地位

串口(UART/USART)是嵌入式系统中最古老、最普及的通信接口之一。在物联网架构中,串口承担着不可替代的角色:

  • 传感器桥接: 绝大多数数字传感器(温湿度、气压、IMU、气体)通过 UART 或类 UART 协议(如 RS-232、RS-485、TTL 串口)与 MCU 连接。
  • 无线模块配置: LoRa、NB-IoT、Wi-Fi(ESP8266/ESP32)、BLE(HC-08/CC254x)等无线模组均通过 AT 指令串口与主控交互。
  • 调试与日志: 串口是嵌入式开发的标准调试接口,printf 输出、错误日志、状态监控几乎全部依赖串口。
  • 固件升级: 通过串口 Bootloader 进行 OTA 或本地升级,是低成本产品的首选方案。

然而,传统串口接收方式(轮询或中断逐字节接收)在低功耗场景下存在严重缺陷:

  • 轮询方式: CPU 持续占用,无法进入休眠,功耗极高。
  • 逐字节中断: 每接收一个字节就唤醒一次 CPU,频繁进出休眠导致唤醒功耗占比过大。

空闲中断唤醒 + DMA 协同策略正是为了解决这一矛盾而诞生。

关键数据: 在 115200 bps 的典型速率下,逐字节中断方式每接收 1 KB 数据约唤醒 CPU 1024 次;而采用 DMA + 空闲中断方式,仅需唤醒 1–2 次,唤醒功耗降低 99% 以上。

1.3 本课程学习目标

完成本课程后,学员将具备以下能力:

目标编号 能力描述 对应章节
G1 理解 MCU 低功耗模式(Sleep/Stop/Standby)与串口外设的唤醒源配置 第 2–4 章
G2 掌握空闲中断(IDLE Line Interrupt)的原理、触发条件与配置方法 第 5–7 章
G3 熟练使用 DMA 进行串口数据搬运,实现零 CPU 干预接收 第 8–10 章
G4 设计并实现“空闲中断 + DMA”协同框架,完成低功耗串口收发 第 11–15 章
G5 掌握功耗测量方法,能够量化评估优化前后的功耗差异 第 16–18 章
G6 能够将本方案移植到 STM32、GD32、ESP32 等主流平台 第 19–22 章

1.4 前置知识要求

为顺利学习本课程,建议学员具备以下基础:

  • 嵌入式 C 语言编程: 能够编写寄存器操作、中断服务函数、状态机逻辑。
  • MCU 基础架构: 了解 GPIO、时钟树、中断向量表、NVIC 优先级等基本概念。
  • 串口协议基础: 理解起始位、数据位、校验位、停止位、波特率等基本参数。
  • DMA 基本概念: 知道 DMA 是直接内存访问,能够搬运数据而不占用 CPU。
  • 开发环境: 能够使用 Keil、IAR 或 STM32CubeIDE 创建工程并下载调试。
注意: 本课程不从头讲解 C 语言语法或 MCU 入门操作。如果对上述前置知识不熟悉,建议先学习《嵌入式 C 语言进阶》或《STM32 入门指南》等基础课程。

1.5 低功耗串口系统架构总览

下图展示了本课程将要实现的低功耗串口系统整体架构。该架构以“空闲中断”作为唤醒源,以“DMA”作为数据搬运引擎,CPU 仅在数据帧到达时短暂唤醒处理。

低功耗串口系统架构总览 低功耗串口系统架构总览 外部设备 传感器 / 无线模组 发送不定长数据帧 TX/RX UART 外设 空闲中断检测 波特率 115200 DMA 请求 DMA 控制器 循环 / 普通模式 搬运 RAM 缓冲区 空闲中断 CPU 唤醒 → 处理数据帧 读取已接收数据 架构说明: 1. 外部设备发送不定长数据帧,UART 外设逐字节接收并触发 DMA 请求。 2. 数据帧传输结束后,UART 产生空闲中断,唤醒 CPU 处理完整数据帧。 3. CPU 从 RAM 缓冲区读取数据,处理完成后再次进入休眠,等待下一帧。

1.6 课程内容路线图

本课程共 30 章,按知识递进关系分为五个模块:

模块 章节范围 核心内容
基础篇 第 1–4 章 低功耗概念、MCU 休眠模式、串口唤醒源配置
核心机制篇 第 5–10 章 空闲中断原理、DMA 传输机制、中断与 DMA 协同
实战实现篇 第 11–15 章 完整代码实现、状态机设计、环形缓冲区、错误处理
测量与优化篇 第 16–18 章 功耗测量方法、唤醒时间优化、多波特率适配
移植与扩展篇 第 19–30 章 STM32/GD32/ESP32 移植、多串口并发、RTOS 集成