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

目录

[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)用于同步数据位。

  • 可支持协议 :同步模式使其能够支持像 SPII2C 这样的同步串行通信协议(需要额外的逻辑来实现协议细节,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博客

相关推荐
GilgameshJSS8 小时前
STM32H743-ARM例程31-CAN
c语言·arm开发·stm32·单片机·嵌入式硬件
逆小舟9 小时前
【STM32】工程文件管理
stm32·单片机·嵌入式硬件
hazy1k11 小时前
51单片机基础-DS1302时钟
stm32·单片机·嵌入式硬件·51单片机·1024程序员节
君王的羔羊21 小时前
STM32CUBEMX安装离线库
stm32·cubemx
DIY机器人工房1 天前
要解决 ESP32 与 STM32 之间 LoRa 通信无应答的问题,可从以下硬件、软件、参数匹配三个维度逐一排查:
stm32·单片机·嵌入式硬件·lora·嵌入式·diy机器人工房
qq_401700411 天前
STM32的存储起始地址和运行起始地址为什么一样
stm32·单片机·嵌入式硬件
hazy1k1 天前
51单片机基础-红外遥控(NEC协议)
stm32·单片机·嵌入式硬件·51单片机·1024程序员节
子不语1801 天前
STM32——按钮实验
stm32·单片机·嵌入式硬件
牛马大师兄1 天前
STM32实现低功耗管理使用配置知识梳理笔记
笔记·stm32·单片机·嵌入式硬件·物联网·低功耗