STM32外设面试速通:UART、I2C、SPI、DMA、RAM/FLASH与ADC/DAC

目录
1. 什么是UART?什么是USART?二者有什么区别?
1.1 UART
1.2 USART
1.3 对比
2. 同步通信和异步通信
3. 什么是I2C,I2C时序图
4. 什么是SPI,SPI时序图
5. 什么是DMA
6. 我们通常所说的波特率9600bps,这个bps的意思是?
7. FLASH和RAM的区别
8. ADC和DAC有什么区别?
1. 什么是UART?什么是USART?二者有什么区别?
1.1 UART
UART,全称是 Universal Asynchronous Receiver/Transmitter,即通用异步收发传输器。它是一种硬件设备(或微控制器中的一个模块),用于通过异步串行通信协议在两个设备之间传输数据。
核心特点:
-
异步通信:这是最关键的一点。通信双方没有统一的时钟信号。发送器和接收器必须事先约定好相同的通信参数(波特率、数据位、停止位、校验位),依靠数据帧的起始位和停止位来同步单个字符的传输。
-
全双工:可以同时进行数据的发送和接收(通常需要两根数据线:TXD用于发送,RXD用于接收)。
-
点对点:通常用于两个设备之间的通信。
-
帧结构:数据被封装成“帧”进行传输。每一帧包含:
-
起始位:一个逻辑低电平,标志一帧数据的开始。
-
数据位:实际要传输的数据(通常是5-9位,最常见的是8位)。
-
校验位:可选的错误检测位(奇校验或偶校验)。
-
停止位:一个或多个逻辑高电平,标志一帧数据的结束。
-
常见应用场景:
-
通过串口(COM口)连接计算机和调制解调器、老式鼠标、路由器等。
-
微控制器与GPS模块、蓝牙模块、Wi-Fi模块的通信。
-
嵌入式系统的调试信息输出(Console)。
-
USB转TTL串口模块,使得现代电脑可以通过USB与UART设备通信
1.2 USART
USART,全称是 Universal Synchronous/Asynchronous Receiver/Transmitter,即通用同步/异步收发传输器,从名字就可以看出,它是UART的超集。一个USART模块可以被配置为工作在两种模式下:
- UART模式(异步):此时它的功能与一个标准的UART完全相同。
- 同步模式:这是UART所不具备的功能。
同步模式的核心特点:
-
同步通信:需要一根额外的时钟信号线。发送方(通常是主设备)会生成一个时钟信号,接收方(从设备)根据这个时钟来采样数据。这消除了对波特率严格匹配的依赖,可以实现更高速度和更可靠的数据传输。
-
时钟信号:这根额外的线(在SPI中通常叫SCK,在I2C中叫SCL)用于同步数据位。
-
可支持协议:同步模式使其能够支持像 SPI、I2C 这样的同步串行通信协议(需要额外的逻辑来实现协议细节,USART硬件本身不直接等同于SPI或I2C,但可以配置时钟和数据极性等来适配)。
1.3 对比
| 特性 | UART(通用异步收发器) | USART(通用同步/异步收发器) |
|---|---|---|
| 全称 | Universal Asynchronous Receiver/Transmitter | Universal Synchronous/Asynchronous Receiver/Transmitter |
| 通信模式 | 仅异步 | 同步 和 异步 |
| 时钟信号 | 不需要单独的时钟线 | 同步模式下需要额外的时钟线(CK) |
| 硬件复杂性 | 相对简单 | 更复杂,因为它包含了UART的所有功能并增加了同步逻辑 |
| 成本 | 通常更低 | 通常更高 |
| 数据可靠性 | 依赖双方波特率的精确匹配,长距离或高速时易出错 | 同步模式下由硬件时钟同步,更可靠,抗干扰能力更强 |
| 速度 | 相对较低(常见于115200bps等) | 同步模式下可以达到更高的数据传输速率 |
| 灵活性 | 只能进行异步通信 | 更灵活,可在同步和异步模式间切换,适应更多应用场景 |
| 数据帧 | 使用起始位和停止位 | 异步模式下与UART相同;同步模式下帧结构可能不同(取决于配置) |
2. 同步通信和异步通信
同步通信:在同步通信中,发送方和接收方的时钟是相互关联的,数据的传输和接收是基于一个共同的时钟信号进行同步的。发送方在每个时钟周期内按照时钟的节拍发送数据,接收方也按照同样的时钟节拍接收数据。双方通过时钟信号的同步来保证正确的数据传输。同步通信对时序要求较高,需要在通信双方之间建立稳定的时钟信号。
异步通信:在异步通信中,发送方和接收方没有共同的时钟信号进行同步。数据的传输和接收不依赖于特定的时钟信号,而是通过特定的起始位和停止位来标识数据的传输开始和结束。每个数据帧都有自己的起始和停止位,这样接收方可以通过检测起始和停止位来识别每个数据帧。异步通信相对较为灵活,但需要额外的控制位来标识起始和停止。
| 特征 | 同步通信 | 异步通信 |
|---|---|---|
| 时钟 | 共享时钟,有专用的时钟线 | 无共享时钟,双方依赖各自独立的内部时钟 |
| 数据流 | 数据块连续传输,无额外标识 | 数据以“帧”为单位,每帧有起始/停止位 |
| 效率 | 高,无额外开销,适合大数据量 | 较低,每帧有起始/停止位等开销 |
| 硬件复杂度 | 较高(需要时钟线) | 较低(通常只需数据线) |
| 距离和成本 | 通常用于板内短距离通信,成本敏感 | 更适合长距离通信,成本较低 |
| 时序要求 | 对时钟信号的时序要求极高 | 对双方波特率的一致性要求极高 |
3. 什么是I2C,I2C时序图
嵌入式面试八股文(八)·单工、半双工、全双工的区别以及常用通讯接口简介_全双工半双工单工-CSDN博客
4. 什么是SPI,SPI时序图
嵌入式面试八股文(八)·单工、半双工、全双工的区别以及常用通讯接口简介_全双工半双工单工-CSDN博客
5. 什么是DMA
DMA(直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。
- 存储器→存储器(例如:复制某特别大的数据buf)
- 存储器→外设(例如:将某数据buf写入串口TDR寄存器)
- 外设→存储器(例如:将串口RDR寄存器写入某数据buf)
它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU,在这个时间中,CPU 对于内存的工作来说就无法使用。简单来说就是一个数据搬运工。
DMA的意义主要体现在以下几个方面:
- 代替CPU搬运数据,为CPU减负:数据搬运是一个耗时的任务,如果由CPU来执行数据传输操作,会占据CPU的大量时间和计算资源。通过利用DMA机制,外部设备可以直接与内存进行数据传输,无需CPU的参与,从而减轻了CPU的负担,使其能够专注于执行其他更重要的任务。
- 数据搬运工作时效要求高:某些场景下,数据的及时传输非常重要,例如实时流媒体、快速数据采集等应用。DMA能够以高效率和高速度进行数据传输,满足对数据及时性的要求。
- 数据搬运任务缺乏技术含量:相比于其他计算任务,数据搬运任务相对简单,缺乏复杂的计算和逻辑操作。通过将数据搬运任务交给DMA执行,CPU可以节省出宝贵的时间和资源,用于执行更具技术含量的计算和处理任务。
6. 我们通常所说的波特率9600bps,这个bps的意思是?
我们通常所说的波特率9600 bps,这里的 bps 的全称是 Bits Per Second,中文意思是 位每秒 或 比特率。它表示每秒钟传输的二进制位数(bit的数量)。
在绝大多数简单的串行通信(如UART)中,波特率在数值上等于比特率。因此我们经常混用这两个词。但实际上,它们有细微的技术区别:
-
比特率:指单位时间内传输的二进制位数。单位就是 bps。它衡量的是实际数据位的速度。
-
波特率:指单位时间内传输的符号(或信号事件)的数量。单位是波特。它衡量的是信号变化的速率。
7. FLASH和RAM的区别
把它们想象成办公室的桌面和文件柜:
-
RAM(内存) 就像你的 办公桌面。
-
FLASH(闪存) 就像你的 文件柜。
RAM - 办公桌面(临时工作区):
-
为什么需要它?:CPU的处理速度极快,但如果每次都直接从“文件柜”(FLASH)里取文件,速度太慢,CPU就会“饿死”。所以需要一个极快的工作区来存放CPU正在处理的“急件”。
-
工作原理:
-
当你打开一个程序(比如游戏或Word文档),系统会把它从“文件柜”(FLASH)里拿出来,放到“桌面”(RAM)上,这样CPU就能快速处理了。
-
你编辑文档时,所有的修改都暂时保存在“桌面”(RAM)上。
-
一旦断电(比如关机或停电),就像有人一下子掀翻了你的桌子,桌面上所有没保存的东西都会消失。这就是RAM的易失性。
-
FLASH - 文件柜(长期存储区):
-
为什么需要它?:用来长久地保存你的数据,即使设备关机断电,数据也不会丢失。
-
工作原理:
-
你的操作系统、应用程序、文档、照片、视频等都存放在这里。
-
当你需要运行一个程序或打开文件时,就从“文件柜”里把它拷贝到“桌面”(RAM)上进行操作。
-
保存文件这个动作,其实就是把“桌面”(RAM)上修改好的数据,写回“文件柜”(FLASH)里归档。
-
它的特点是断电后数据不丢失(非易失性),但读写速度,尤其是写入速度,比RAM慢得多。
-
| 特性 | RAM(随机存取存储器) | FLASH(闪存) |
|---|---|---|
| 中文名 | 内存、运行内存 | 闪存、闪存存储器 |
| 功能角色 | 临时工作区 | 长期存储区 |
| 易失性 | 易失性 - 断电后数据全部丢失 | 非易失性 - 断电后数据依然保存 |
| 速度 | 非常快 | 相对较慢(尤其是写入速度) |
| 寿命 | 理论上无限次读写 | 有擦写次数限制(通常足够用到设备淘汰) |
| 主要用途 | 临时存放正在运行的程序和数据 | 永久存放需要保存的程序、文件、系统 |
| 成本 | 单位容量成本较高 | 单位容量成本较低 |
| 类比 | 办公桌面 - 你正在处理的文件都放在桌上 | 文件柜 - 所有归档和待用的文件都放在里面 |
| 在电脑中的例子 | 内存条 | 固态硬盘、BIOS芯片 |
| 在手机中的例子 | 运行内存 | 机身存储 |
8. ADC和DAC有什么区别?
一句话总结:
- ADC:将连续的模拟信号转换为离散的数字信号。
- DAC:将离散的数字信号转换为连续的模拟信号。
| 特性 | ADC(模数转换器) | DAC(数模转换器) |
|---|---|---|
| 全称 | Analog-to-Digital Converter | Digital-to-Analog Converter |
| 中文名 | 模数转换器 | 数模转换器 |
| 核心功能 | 从模拟到数字 | 从数字到模拟 |
| 信号转换方向 | 模拟信号 → 数字信号 | 数字信号 → 模拟信号 |
| 好比 | 翻译官,将人类的语言(模拟)翻译成计算机的语言(数字) | 翻译官,将计算机的语言(数字)翻译成人类的语言(模拟) |
| 关键参数 | 分辨率、采样率、信噪比 | 分辨率、建立时间、无杂散动态范围 |
| 主要过程 | 采样 → 量化 → 编码 | 解码 → 重建 |
| 应用举例 | 麦克风、温度传感器、数字示波器 | 扬声器/耳机、电机驱动、可编程电源 |

千题千解·嵌入式工程师八股文详解_时光の尘的博客-CSDN博客
STM32学习笔记_时光の尘的博客-CSDN博客

