
目录
[1. 什么是UART?什么是USART?二者有什么区别?](#1. 什么是UART?什么是USART?二者有什么区别?)
[1.1 UART](#1.1 UART)
[1.2 USART](#1.2 USART)
[1.3 对比](#1.3 对比)
[2. 同步通信和异步通信](#2. 同步通信和异步通信)
[3. 什么是I2C,I2C时序图](#3. 什么是I2C,I2C时序图)
[4. 什么是SPI,SPI时序图](#4. 什么是SPI,SPI时序图)
[5. 什么是DMA](#5. 什么是DMA)
[6. 我们通常所说的波特率9600bps,这个bps的意思是?](#6. 我们通常所说的波特率9600bps,这个bps的意思是?)
[7. FLASH和RAM的区别](#7. FLASH和RAM的区别)
[8. ADC和DAC有什么区别?](#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时序图
4. 什么是SPI,SPI时序图
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 |
| 中文名 | 模数转换器 | 数模转换器 |
| 核心功能 | 从模拟到数字 | 从数字到模拟 |
| 信号转换方向 | 模拟信号 → 数字信号 | 数字信号 → 模拟信号 |
| 好比 | 翻译官,将人类的语言(模拟)翻译成计算机的语言(数字) | 翻译官,将计算机的语言(数字)翻译成人类的语言(模拟) |
| 关键参数 | 分辨率、采样率、信噪比 | 分辨率、建立时间、无杂散动态范围 |
| 主要过程 | 采样 → 量化 → 编码 | 解码 → 重建 |
| 应用举例 | 麦克风、温度传感器、数字示波器 | 扬声器/耳机、电机驱动、可编程电源 |

