微电子系统复习总览

📖本文约 7008 字 · 阅读需 23 分钟

前言:课程概览

开发平台: NUCLEO-L432KC(STM32L432KC,ARM Cortex-M4 核心,80 MHz 主频),mbed Studio 开发环境

核心模型: Sense → Think → Act(感知 → 处理 → 执行),对应传感器 → ADC → 微控制器 → DAC/PWM → 执行器


第一章:嵌入式系统与微控制器架构 (Embedded Systems & MCU Architecture)

1.1 什么是嵌入式系统

嵌入式系统是一种内置于大型产品中的电子系统,使用集成电路感知环境、处理信息并控制输出。

五种实现方式:

方式示例优点缺点
分立元件555 定时器、晶体管简单、便宜不可编程
计算机ATM 系统高处理能力体积大、功耗高
ASICiPhone 处理器极高性能极其昂贵、不灵活
FPGA显示器、AI 加速器可重构硬件设计复杂
MCU(微控制器)STM32灵活、可编程、低成本处理能力有限

1.2 微控制器架构 – 【考点】

Harvard 架构 vs von Neumann 架构:

特性Harvardvon Neumann
指令/数据存储分离的内存空间单一内存空间
总线分离的指令和数据总线共享总线
并行访问可同时访问指令和数据不能同时访问
常见用途微控制器通用处理器
代表ARM Cortex-M4 (STM32)ARM Cortex-M0+

1.3 CPU 核心组件

组件功能
ALU(算术逻辑单元)执行算术和逻辑运算(加、乘、移位、与、或)
寄存器 (Registers)CPU 内部小型超快存储,无地址,直接由 CPU 访问
程序计数器 (PC)存放下一条指令的地址
指令寄存器 (IR)存放当前正在执行的指令
控制单元 (CU)解释指令并控制操作

指令执行周期:Fetch → Decode → Execute(取指 → 解码 → 执行)

1.4 时钟与地址总线 – 【3年3考·必考】

  • 时钟:同步微控制器内所有操作,L432KC 为 80 MHz
  • 32 位地址总线:可访问 232=4,294,967,2962^{32} = 4,294,967,296(4GB)地址空间

1.5 存储器类型 – 【3年3考·必考】

特性SRAM(静态 RAM)DRAM(动态 RAM)
速度
成本
功耗
每 bit 晶体管数6 个1 个晶体管 + 1 个电容(最少)
用途CPU 缓存、高速暂存主存储器

寄存器 vs 普通存储器: 寄存器是 CPU 内部极小的超快存储,无地址,CPU 直接访问;普通存储器(如 RAM)容量大但速度慢,通过地址访问。

1.6 存储器层次结构

CPU 寄存器CPU 缓存 (SRAM)主存 (SRAM/DRAM)Flash/本地存储外部存储\text{CPU 寄存器} \rightarrow \text{CPU 缓存 (SRAM)} \rightarrow \text{主存 (SRAM/DRAM)} \rightarrow \text{Flash/本地存储} \rightarrow \text{外部存储}

速度递减,容量递增。

1.7 Cortex-M4 存储器映射 – 【考点·基础】

32 位地址总线,共 4GB 地址空间,分为 6 个区域:

区域起始地址大小用途
Code0x00000000512 MB片上 Flash 程序代码
SRAM0x20000000512 MB片上 SRAM 数据
Peripheral0x40000000512 MB存储器映射 I/O
External RAM0x600000001 GB外部 RAM
External Devices0xA00000001 GB外部设备
System0xE0000000512 MB系统组件(SysTick、NVIC)

第二章:编程模型与 Embedded C

2.1 编程模型

三层抽象: 机器码(二进制)→ 汇编语言(符号化)→ 高级语言(C/Python)

编译器将高级语言代码翻译为机器指令。

2.2 Embedded C 特性

  • 直接硬件交互:访问寄存器、内存和 I/O 外设
  • 高效轻量:适合有限内存和处理能力的系统
  • 可移植:可为不同微控制器重新编译
  • 许多嵌入式程序直接运行在硬件上(无操作系统)或使用 RTOS

2.3 mbed API 速查 – 【考点】见考试 Q1(b)

API功能示例
DigitalOut控制数字输出引脚DigitalOut led(LED1);
DigitalIn读取数字输入引脚DigitalIn sw(D2, PullUp);
AnalogOut模拟输出 (DAC)AnalogOut Aout(A4);
AnalogIn模拟输入 (ADC)AnalogIn Ain(A6);
PwmOutPWM 输出PwmOut pwm(D3);
SPISPI 通信SPI ser_port(A6, A5, A4);
ThisThread::sleep_for延时ThisThread::sleep_for(1s);

关键运算符区分:

  • = 赋值运算符:“设为”
  • == 比较运算符:“等于”
  • 两者不可互换使用
  • ! 逻辑非:led = !led; 翻转 LED 状态
  • & 位与运算符:x & 0x01 提取最低位

2.4 mbed_blinky 程序结构

1
2
3
4
5
6
7
8
#include "mbed.h"
DigitalOut led(LED1);
int main() {
while (true) {
led = !led;
ThisThread::sleep_for(500ms);
}
}
  • while(true) 创建无限循环(嵌入式系统中是标准做法)
  • LED 每 0.5 秒翻转一次

第三章:数字输入输出 (GPIO & Digital I/O) – 【考点】

3.1 模拟信号 vs 数字信号

特性模拟信号数字信号
时间连续离散
幅值连续固定值(二进制)
示例电压、电流、声音、光0/1 二进制

STM32 逻辑阈值: Logic 1 ≈ 3.3 V,Logic 0 ≈ 0 V

3.2 GPIO 引脚

L432KC 有效 I/O 引脚:D0–D6, D9–D13, A0–A3, A6–A7。GPIO 引脚可配置为输入或输出。

3.3 LED 驱动 – 【考点】

LED 极性: 阳极(Anode, +)→ 长脚,阴极(Cathode, −)→ 短脚。电流从阳极流向阴极。

正向偏置(LED 亮):

  • 阳极接正,阴极接负 → 电流流过 → 发光
  • 典型正向电压 VFV_F:红色 ~1.8 V,蓝色 ~3 V
  • 必须串联限流电阻

限流电阻计算:

R=VMCUVFI=3.32.20.005=220ΩR = \frac{V_{MCU} - V_F}{I} = \frac{3.3 - 2.2}{0.005} = 220\,\Omega

Active High vs Active Low:

配置LED 亮起条件
Active High输出逻辑 1 (高电平)
Active Low输出逻辑 0 (低电平)

3.4 开关与上拉/下拉电阻 – 【考点】

浮空输入问题: 当输入引脚未连接时电压不确定,可能随机读取 0 或 1。

解决方案:

  • 上拉电阻 (Pull-Up):开关断开 → 引脚接 VDD(HIGH);开关闭合 → 引脚接 GND(LOW)
  • 下拉电阻 (Pull-Down):开关断开 → 引脚接 GND(LOW);开关闭合 → 引脚接 VDD(HIGH)
  • mbed 内部可配置,默认上拉

功耗计算: 3V 供电、10kΩ 上拉电阻,按下时消耗电流:

I=VR=3V10kΩ=0.3mA=300μAI = \frac{V}{R} = \frac{3V}{10k\Omega} = 0.3\,\text{mA} = 300\,\mu\text{A}

3.5 七段数码管

  • 共阴极配置:公共引脚接 GND
  • Logic 1 → 段亮,Logic 0 → 段灭
  • 8 个 LED 段:a, b, c, d, e, f, g, dp(小数点)

第四章:编解码器与多路复用器 (Decoder, Encoder, MUX, DeMUX)

4.1 二进制表示

nn 位可表示 2n2^n 种组合。二进制转十进制:

(b2b1b0)2=b2×22+b1×21+b0×20(b_2b_1b_0)_2 = b_2 \times 2^2 + b_1 \times 2^1 + b_0 \times 2^0

例:(101)2=1×4+0×2+1×1=5(101)_2 = 1 \times 4 + 0 \times 2 + 1 \times 1 = 5

4.2 四种器件总结 – 【考点】

器件数据输入控制输入输出方向
解码器 Decodern2n2^n少 → 多(扩展)
编码器 Encoder2n2^nn多 → 少(压缩)
多路复用器 MUX2n2^nn1多 → 一(选择)
解复用器 DEMUX1n2n2^n一 → 多(分配)

4.3 在存储器和处理器中的应用

  • 解码器 + MUX → 存储器寻址:解码器选择目标寄存器,MUX 选择输出数据
  • MUX/DEMUX → 处理器数据路径:选择 ALU 输入源,分配计算结果

第五章:模数转换器 (ADC) – 【3年2考·高频】

5.1 为什么需要 ADC/DAC?

现实世界是模拟的,数字世界是离散的。ADC 是连接两者的桥梁。

5.2 ADC 四步转换过程 – 【考点】

模拟信号采样保持量化编码数字信号\text{模拟信号} \xrightarrow{\text{采样}} \xrightarrow{\text{保持}} \xrightarrow{\text{量化}} \xrightarrow{\text{编码}} \text{数字信号}

步骤功能
采样 (Sampling)按采样频率从连续信号中取离散样本(连续时间 → 离散时间)
保持 (Holding)保持当前样本值直到下一个样本到达
量化 (Quantizing)将每个模拟样本映射到最近的离散电平(连续幅值 → 离散幅值)
编码 (Encoding)将量化电平转换为二进制数字输出

5.3 ADC 核心公式 – 【3年3考·必考】

Dout=(2n1)×VaVrefD_{out} = \frac{(2^n - 1) \times V_a}{V_{ref}}

其中 nn 为位深度,VaV_a 为模拟输入电压,VrefV_{ref} 为参考电压。

量化误差:

Quantization Error=Vstep2=Vref2n+1\text{Quantization Error} = \frac{V_{step}}{2} = \frac{V_{ref}}{2^{n+1}}

5.4 ADC 主要特性

1. 采样率 (Sampling Rate / Frequency):

  • 每秒采样次数(SPS 或 Hz)
  • Nyquist-Shannon 定理:采样频率必须 大于信号最高频率的两倍

2. 分辨率 (Resolution / Bit Depth):

  • nn 位 ADC → 2n2^n 个离散电平
  • 8 位:256 级,16 位:65,536 级

5.5 L432KC ADC 规格 – 【考点】

参数
类型逐次逼近型 (SAR)
分辨率12 位 (4096 级)
最大采样率5.33 Msps (@ 12-bit)
低分辨率下8.88 Msps (@ 6-bit)

第六章:数模转换器 (DAC) – 【3年2考·高频】

6.1 DAC 定义

DAC 将数字(二进制)信号转换为模拟物理量(电压或电流)。

6.2 DAC 核心公式 – 【3年3考·必考】

通用 n 位 DAC 输出电压:

Vout=Vref×D2nV_{out} = V_{ref} \times \frac{D}{2^n}

其中 DD 为数字输入的十进制值。

分辨率(步长):

Resolution=Vref2n\text{Resolution} = \frac{V_{ref}}{2^n}

最大输出电压:

Vmax=Vref×2n12n(永远不会等于 Vref)V_{max} = V_{ref} \times \frac{2^n - 1}{2^n} \quad (\text{永远不会等于 } V_{ref})

6.3 ADC vs DAC 分辨率

ADCDAC
分辨率含义ADC 可区分的最小输入电压变化DAC 可产生的最小输出电压步长
公式Vref/2nV_{ref} / 2^n

6.4 DAC 功能模块

输入电路电压开关电路电阻网络放大器\text{输入电路} \rightarrow \text{电压开关电路} \rightarrow \text{电阻网络} \rightarrow \text{放大器}

6.5 电阻网络实现对比 – 【考点】

特性加权电阻法R-2R 梯形网络法
电阻种类多种(R,2R,4R,8R,R, 2R, 4R, 8R, \ldots仅两种(RR2R2R
精度大电阻值不精确精确、准确
可扩展性难(电阻值指数增长)易(直接添加 R-2R 级)
实用性不实用实用且常用

R-2R 梯形网络输出电压:

Vout=Vref[B02N+B12N1+B22N2++BN121]V_{out} = -V_{ref}\left[\frac{B_0}{2^N} + \frac{B_1}{2^{N-1}} + \frac{B_2}{2^{N-2}} + \cdots + \frac{B_{N-1}}{2^1}\right]

6.6 L432KC DAC 规格 – 【考点】见考试 Q2(a)

参数
分辨率12 位
参考电压3.6 V(内部稳压供电)
步数4096
步长/分辨率0.87890625 mV
输出范围0 V ~ 3.599 V
转换速度200,000 samples/s (5 μs/conversion)
时钟周期400 个 (80 MHz × 5 μs)

第七章:脉宽调制 (PWM) – 【3年2考·高频】

7.1 基本概念

调制是将信息嵌入载波信号特征(频率、幅度、相位或脉冲宽度)的过程。

PWM(脉宽调制): 通过改变电压脉冲的宽度来编码/传输信息,信息由信号的平均电压值表示。

7.2 PWM 关键参数 – 【3年3考·必考】

参数符号公式
周期 (Time Period)TTT=ton+toff=1fT = t_{on} + t_{off} = \frac{1}{f}
频率 (Frequency)fff=1Tf = \frac{1}{T}
占空比 (Duty Cycle)DDD=tonTD = \frac{t_{on}}{T}
平均电压 (Average Voltage)VavgV_{avg}Vavg=D×VHV_{avg} = D \times V_H
ON 时间tont_{on}ton=D×Tt_{on} = D \times T
OFF 时间tofft_{off}toff=Ttont_{off} = T - t_{on}

7.3 PWM 生成方式

模拟方式: 比较器电路 — 三角波 vs 控制电压

数字方式:

方式方法效率
GPIO 翻转处理器直接控制引脚翻转低效(占用 CPU 资源)
专用定时器/PWM 外设定时器自动生成 PWM高效(释放 CPU)

7.4 mbed PWM API – 【考点】

1
2
3
4
PwmOut pwmled(D3);
pwmled.period(0.002); // 设置周期为 2ms → f = 500Hz
pwmled.write(0.6); // 设置占空比为 60%
// 等效于 pwmled.pulsewidth(0.0012);

7.5 PWM 应用

  • 逆变器(DC → AC)
  • 直流电机控制
  • LED 亮度调节/调光
  • 电池充电器

第八章:UART/USART 通信 – 【考点】

8.1 通信基础

通信方向:

模式方向示例
Simplex(单工)仅单向电视广播
Half Duplex(半双工)双向,但一次一个方向对讲机
Full Duplex(全双工)同时双向电话

8.2 并行 vs 串行通信 – 【考点】

特性并行串行
线数
距离
成本
数据传输同时多 bit逐 bit

现代系统倾向串行:更少的线、更低的成本、更远的距离、可达到高速。

8.3 同步 vs 异步

特性同步 (SPI, I2C)异步 (UART)
时钟共享时钟信号无共享时钟
同步方式时钟信号起始/停止位
速度

8.4 UART 数据帧结构 – 【3年3考·必考】

Idle (HIGH)Start Bit (LOW)Data Bits (5-9, LSB first)[Parity Bit]Stop Bit(s) (HIGH)Idle\text{Idle (HIGH)} \rightarrow \text{Start Bit (LOW)} \rightarrow \text{Data Bits (5-9, LSB first)} \rightarrow \text{[Parity Bit]} \rightarrow \text{Stop Bit(s) (HIGH)} \rightarrow \text{Idle}

字段大小用途
起始位 (Start)1 bit0 (LOW)标记帧开始
数据位 (Data)5–9 bits(通常 8)二进制数据承载实际数据
奇偶校验位 (Parity)0 或 1 bit(可选)0 或 1基本错误检测
停止位 (Stop)1 或 2 bits1 (HIGH)标记帧结束

8.5 波特率 (Baud Rate) – 【考点】

波特率 = 每秒信号变化次数(每秒传输的符号数)。在二进制系统中:Baud Rate = Bit Rate。

8.6 UART 计算 – 【3年3考·必考】

通信效率:

Efficiency=Data BitsTotal Bits×100%\text{Efficiency} = \frac{\text{Data Bits}}{\text{Total Bits}} \times 100\%

传输时间:

Ttransmit=Total BitsBaud RateT_{transmit} = \frac{\text{Total Bits}}{\text{Baud Rate}}

例:9600 bps,发送 50 字节(8 数据位、1 起始位、1 停止位、无校验):

每帧 = 1 + 8 + 0 + 1 = 10 bits

50 字节:50×10=50050 \times 10 = 500 bits

T=500/9600=52.08T = 500 / 9600 = 52.08 ms

8.7 错误类型

错误原因
帧错误 (Framing Error)在预期位置未检测到起始/停止位;通常由波特率不匹配或噪声引起
奇偶校验错误 (Parity Error)接收到的数据 1 的计数与奇偶校验位不匹配

8.8 UART vs USART

特性UARTUSART
时钟可选
支持同步模式
速度较低更高
复杂度简单更复杂

第九章:SPI 通信协议 – 【3年2考·高频】

9.1 SPI 基础

SPI (Serial Peripheral Interface):4 线同步串行接口,Motorola 1980 年代开发,全双工通信。

参数
线数4
最大速度最高 10 Mbps
同步/异步同步
串行/并行串行
最大主设备数1
最大从设备数理论上无限

9.2 SPI 四条信号线 – 【3年3考·必考】

引脚名别名方向功能
MOSISDOMaster → Slave主机发送数据
MISOSDISlave → Master从机返回数据
SCLKSCK, CLKMaster → Slave时钟信号
SS/CSCEMaster → Slave片选(激活从机)

SS/CS 通常为低电平有效 (Active Low)。SPI 使用 SS 选择从机,而非地址。

9.3 SPI 数据传输步骤

  1. 主机配置时钟频率
  2. 主机拉低 SS/CS → 激活从机
  3. 主机通过 MOSI 逐 bit 发送数据
  4. 如果需要响应,从机通过 MISO 逐 bit 返回数据
  5. 每个时钟周期进行一次全双工数据传输(移位寄存器)

9.4 时钟极性 (CPOL) 和时钟相位 (CPHA) – 【考点】

4 种 SPI 模式:

CPOLCPHA采样边沿输出边沿
00前沿(上升沿)后沿(下降沿)
01后沿(下降沿)前沿(上升沿)
10前沿(下降沿)后沿(上升沿)
11后沿(上升沿)前沿(下降沿)

CPOL = 0:时钟空闲为低;CPOL = 1:时钟空闲为高
CPHA = 0:前沿采样;CPHA = 1:后沿采样

9.5 多从机配置

1) 独立 SS: 每个从机一个 SS 引脚 → N 个从机需要 N 个 SS(线多但简单)

2) 菊花链 (Daisy Chain): 从机串联 → 只需一个 SS(省线但复杂)

9.6 SPI 传输时间 – 【考点】

Ttransmit=Number of BitsClock FrequencyT_{transmit} = \frac{\text{Number of Bits}}{\text{Clock Frequency}}

例:1 MHz 时钟,2 字节 = 16 bits → T=16×1μs=16μsT = 16 \times 1\,\mu s = 16\,\mu s

9.7 SPI 优缺点

优点: 速度快、全双工、无起始/停止开销

缺点: 线多(每个从机需 SS)、无 ACK 确认机制、多从机时布线复杂


第十章:I2C 通信协议 – 【考点】

10.1 I2C 基础

I²C (Inter-Integrated Circuit):2 线同步串行通信,Philips 1982 年开发,用于短距离板内通信。

参数
线数2 (SDA + SCL)
类型同步
速度标准 100 kbps / 快速 400 kbps / 高速 3.4 Mbps
最大从机数1008 (10 位寻址)
多主支持

10.2 I2C 两条线

线全称功能
SDASerial Data Line双向数据传输
SCLSerial Clock Line时钟信号(由主机生成)

两条线都需要上拉电阻到 Vcc;I2C 设备使用开漏输出

10.3 I2C 消息结构 – 【3年3考·必考】

START地址帧 (7/10 bit + R/W)ACK数据帧 (8 bit)ACK数据帧STOP\text{START} \rightarrow \text{地址帧 (7/10 bit + R/W)} \rightarrow \text{ACK} \rightarrow \text{数据帧 (8 bit)} \rightarrow \text{ACK} \rightarrow \text{数据帧} \rightarrow \cdots \rightarrow \text{STOP}

元素功能
START 条件SCL 为 HIGH 时,SDA 从 HIGH → LOW
STOP 条件SCL 为 HIGH 时,SDA 从 LOW → HIGH
地址帧7 位或 10 位唯一从机地址 + 1 位 R/W
R/W 位0 = 写(主机→从机),1 = 读(从机→主机)
ACK/NACK0 = ACK(成功接收),1 = NACK
数据帧8 位数据,MSB 先传

10.4 I2C 寻址

  • 7 位地址:27=1282^7 = 128 个唯一地址
  • 10 位地址:210=1,0242^{10} = 1,024 个唯一地址
  • 每个从机比较发送的地址与自己的地址
  • 地址匹配 → 回复 ACK;不匹配 → 不响应

10.5 I2C 仲裁

  • 多主模式下,每个主机在发送前检测 SDA 线
  • SDA 为 LOW → 总线正忙 → 等待
  • 发送时同时监控:发送 1 但读到 0 → 失去仲裁 → 退出
  • LOW 在仲裁中优先(谁先拉低谁占优)

10.6 三大协议对比 – 【3年3考·必考】

特性UARTSPII2C
线数1 (TX) + 1 (RX)4 (MOSI+MISO+SCLK+SS)2 (SDA+SCL)
速度最慢最快中等
同步/异步异步同步同步
双工全双工全双工半双工
主/从一对一1 主多从多主多从
多设备最多 2 个多但复杂(每个从机要 SS)多且简单(同两线)
寻址SS 片选7/10 位地址
起始/停止起始位+停止位无(SS 控制)START+STOP 条件
确认ACK/NACK
典型用途调试、GPS、蓝牙显示器、SD 卡、ADC/DAC传感器网络、EEPROM

选型速记:

  • 高速显示/存储 → SPI
  • 多传感器(需要简洁布线)→ I2C
  • 简单 PC 调试 → UART

附录 A:公式总表

A.1 微控制器基础

公式说明
2k2^kk 位地址总线可访问的内存地址数
232=4 GB2^{32} = 4\text{ GB}32 位地址总线 = 4GB 地址空间

A.2 ADC

公式说明
Dout=(2n1)×VaVrefD_{out} = \frac{(2^n - 1) \times V_a}{V_{ref}}ADC 数字输出
Vstep=Vref2nV_{step} = \frac{V_{ref}}{2^n}ADC 步长
Quantization Error=Vstep2\text{Quantization Error} = \frac{V_{step}}{2}量化误差
fs>2×fmaxf_s > 2 \times f_{max}Nyquist 采样定理

A.3 DAC

公式说明
Vout=Vref×D2nV_{out} = V_{ref} \times \frac{D}{2^n}DAC 输出电压
Resolution=Vref2n\text{Resolution} = \frac{V_{ref}}{2^n}DAC 分辨率/步长
步数 = 2n2^nn 位 DAC 的输出电平数
Vmax=Vref×2n12nV_{max} = V_{ref} \times \frac{2^n-1}{2^n}最大输出电压

A.4 PWM

公式说明
T=ton+toff=1fT = t_{on} + t_{off} = \frac{1}{f}周期
f=1Tf = \frac{1}{T}频率
D=tonTD = \frac{t_{on}}{T}占空比
Vavg=D×VHV_{avg} = D \times V_H平均电压

A.5 通信

公式说明
Efficiency=Data BitsTotal Bits×100%\text{Efficiency} = \frac{\text{Data Bits}}{\text{Total Bits}} \times 100\%UART 通信效率
Ttx=Total BitsBaud RateT_{tx} = \frac{\text{Total Bits}}{\text{Baud Rate}}UART 传输时间
Ttx=BitsClock FrequencyT_{tx} = \frac{\text{Bits}}{\text{Clock Frequency}}SPI 传输时间
T=1fT = \frac{1}{f}周期与频率关系

附录 B:高频考点总表

期末考点(按考频排序)

排序考点名称考频分值所属章节关键技巧
1DAC 参数计算(步数、分辨率、范围、转换速度、时钟周期)3年3考·必考10分Ch6212=40962^{12}=4096 steps, 3.6/40963.6/4096 mV/step
2PWM 计算(周期、频率、占空比、平均电压)3年3考·必考6分Ch7D=ton/TD=t_{on}/T, Vavg=D×VHV_{avg}=D\times V_H
3ADC→DAC 级联(量化误差、数字输出、电压还原)3年2考·高频8分Ch5+6ADC: D=(2n1)Va/VrefD=(2^n-1)V_a/V_{ref}, DAC: Vout=Vref×D/2nV_{out}=V_{ref}\times D/2^n
4SPI vs I2C 选型与对比3年2考·高频4分Ch9+10速度:SPI>I2C;布线简洁:I2C>SPI
5mbed 编程题(GPIO 控制、PWM、定时循环)3年2考·高频8分Ch2DigitalOut, while 循环, sleep_for
6微控制器架构(Harvard vs von Neumann, CPU 组件)2年1考3分Ch1Harvard=分离总线,可同时访问指令和数据
7SRAM vs DRAM2年1考5分Ch1SRAM 快/贵/6晶体管;DRAM 慢/便宜/1晶体管+1电容
8地址总线计算2年1考2分Ch132 bit → 232=4GB2^{32}=4\text{GB}
9寄存器 vs 内存2年1考3分Ch1寄存器无地址/CPU内部/极快
10SPI 代码分析(MOSI/MISO, 位运算, SPI.write())2年1考8分Ch9A6=MOSI, A5=MISO; & 位与; = vs ==
11SPI 传输时间2年1考2分Ch9Ttx=Bits/fclkT_{tx}=\text{Bits}/f_{clk}
12UART 帧结构与效率1年1考Ch8Start+Data+Parity+Stop
13R-2R vs 加权电阻1年1考Ch6R-2R: 仅两种电阻,易扩展
14通信方向(单工/半双工/全双工)1年1考Ch8SPI=全双工,I2C=半双工

附录 C:样题解析 (Sample Exam Walkthrough)

Q1: 微控制器架构与 mbed 编程(20 分)

(a)(i) 寄存器 vs 普通存储器 [3 marks]

寄存器:CPU 内小型超快存储,临时存放处理中的数据,无地址,CPU 直接访问。普通存储器(如 RAM):速度较慢,用于存储大量数据,通过地址访问。

(a)(ii) SRAM vs DRAM [5 marks]

SRAMDRAM
速度
成本便宜
功耗低(更节能)
每 bit 晶体管6 个1 晶体管 + 1 电容(最少)

(a)(iii) 时钟的重要性 [2 marks]

时钟提供定时信号,同步微控制器内的所有操作。

(a)(iv) 32 位地址总线 [2 marks]

232=4,294,967,2962^{32} = 4,294,967,296(4GB)可寻址内存空间。

(b) 灌溉系统 mbed 编程 [8 marks]

要求:D5 引脚控制水泵,ON 1 秒 → OFF 4 秒,循环 5 次。

1
2
3
4
5
6
7
8
9
10
11
12
#include "mbed.h"
DigitalOut pump(D5);
int main() {
int count = 0;
while (count <= 4) {
pump = 1;
ThisThread::sleep_for(1s);
pump = 0;
ThisThread::sleep_for(4s);
count = count + 1;
}
}

Q2: DAC 与 ADC 计算(20 分)

(a) L432KC 12-bit DAC, Vref = 3.6V [10 marks]

参数计算答案
步数2122^{12}4096
分辨率3.6/40963.6 / 40960.8789 mV
范围(2121)/212×3.6(2^{12}-1)/2^{12} \times 3.63.599 V
转换速度1/5μs1 / 5\mu s200,000/s
时钟周期80 MHz×5μs80\text{ MHz} \times 5\mu s400 周期

(b) 4-bit ADC → 4-bit DAC 级联 [10 marks]

ADC: Vref=5VV_{ref}=5V, DAC: Vref=3.3VV_{ref}=3.3V, 输入 = 3.8V

(i) ADC 数字输出:

Vstep=5/24=0.3125VV_{step} = 5/2^4 = 0.3125V

(3.80.15625)/0.3125=11.66(3.8 - 0.15625) / 0.3125 = 11.66 → 第 12 步 → 1100 (二进制)

(ii) 量化误差:

Vstep/2=0.3125/2=0.15625VV_{step}/2 = 0.3125/2 = \mathbf{0.15625V}

(iii) DAC 输出:

Vout=12/24×3.3=2.475VV_{out} = 12/2^4 \times 3.3 = \mathbf{2.475V}

Q3: PWM + 通信协议(20 分)

(a) PWM: ton=4μst_{on} = 4\mu s, D=25%D = 25\% [6 marks]

参数计算答案
TT4/0.254/0.2516 μs
tofft_{off}16416 - 412 μs
ff1/(16×106)1/(16 \times 10^{-6})62.5 kHz

(b)(i) SPI vs I2C — 43 个传感器 [4 marks]

选择 I2C。布线复杂度:I2C 仅需 2 线(SDA+SCL)连接全部 43 个设备;SPI 需 4+43=47 线(1 MOSI+1 MISO+1 SCK+43 SS),布线极其复杂。速度:SPI 更快,但在工厂自动化场景中布线的简洁性更重要。

(b)(ii) SPI 传输时间 [2 marks]

1 MHz 时钟,2 字节 = 16 bits → T=16×1μs=16μsT = 16 \times 1\mu s = \mathbf{16\,\mu s}

© SPI 代码分析 [8 marks]

1
SPI ser_port(A6, A5, A4);  // MOSI, MISO, SCK

(i) A6 = MOSI(主机发送数据),A5 = MISO(主机接收数据)

(ii) switch_word = 0xB0, switch_word & 0x01 → B0 & 01 = B0(若 switch_ip1==1),否则为 B0

(iii) recd_val = ser_port.write(switch_word) — 发送 switch_word 并同时接收从机返回的数据存入 recd_val

(iv) ==比较运算符(判断左右是否相等),=赋值运算符(将右侧值赋给左侧)。两者不可互换


附录 D:实验与项目速查

实验平台

  • 开发板: NUCLEO-L432KC (STM32L432KC, ARM Cortex-M4, 80 MHz)
  • IDE: mbed Studio(在线版或桌面版)
  • 编译输出: .bin 文件 → 复制到 MCU 文件夹运行

关键引脚

功能NUCLEO-L432KC 引脚
用户 LEDLED1 (LD3)
数字 I/OD0–D6, D9–D13
模拟输入A0–A3, A6–A7
模拟输出 (DAC)A4
PWMD3, D5, D6 等
SPIA6 (MOSI), A5 (MISO), A4 (SCK)
UARTD0 (TX), D1 (RX)
I2CD4 (SDA), D5 (SCL)

调试工具

  • 数字万用表 (DMM): 测量电压(并联)、电流(串联)、电阻
  • 示波器 (Oscilloscope): 观察电压波形,特别是快速变化的信号
  • 信号发生器 (Function Generator): 产生测试信号(正弦、方波、三角波)

总结

本课程围绕 STM32L432KC 微控制器展开,核心知识链为:

传感器 (模拟)ADC微控制器 (数字)DAC/PWM执行器 (模拟)\text{传感器 (模拟)} \xrightarrow{ADC} \text{微控制器 (数字)} \xrightarrow{DAC/PWM} \text{执行器 (模拟)}

配合 GPIO(数字 I/O)、SPI/I2C/UART(通信协议)构成完整嵌入式系统。

考试三大题结构(每题 20 分):

  1. MCU 架构 + mbed 编程(寄存器、存储器、时钟、地址总线、嵌入式 C)
  2. DAC + ADC 计算(分辨率、步数、量化误差、电压转换、级联分析)
  3. PWM 计算 + 通信协议对比与代码分析(周期、占空比、SPI vs I2C、代码阅读)

记忆优先级: DAC/ADC 计算公式 > PWM 参数 > SPI/I2C 对比 > GPIO 基本概念 > R-2R vs 加权电阻 > UART 帧结构


微电子系统复习总览
https://brightnewmoon.top/2026/06/06/Microelectronic-Systems-Review/
作者
BrightNewMoon
发布于
2026年6月6日
许可协议
分享
微信扫码分享

打开微信「扫一扫」