嵌入式 UART 协议面试题及参考答案
通用异步收发传输器(UART)是嵌入式系统常用的串行通信接口,负责并行与串行数据转换。内容详细解析了 UART 通信原理,包括波特率、校验位、停止位等关键参数,并列举了嵌入式开发中的典型面试题,涵盖硬件接线、流控制、驱动模式(轮询与中断)等内容,配合 C 语言代码示例,提供完整的协议理解与面试准备指南。
通用异步收发传输器(UART)是嵌入式系统常用的串行通信接口,负责并行与串行数据转换。内容详细解析了 UART 通信原理,包括波特率、校验位、停止位等关键参数,并列举了嵌入式开发中的典型面试题,涵盖硬件接线、流控制、驱动模式(轮询与中断)等内容,配合 C 语言代码示例,提供完整的协议理解与面试准备指南。
UART 即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是一种广泛应用于嵌入式系统的串行通信接口。它为不同设备之间的数据传输提供了一种简单且高效的方式,在微控制器、计算机主板以及各种电子设备中都能看到其身影。
从功能角度来看,UART 主要负责处理串行数据的发送和接收。在发送数据时,它会将并行数据转换为串行数据,逐位通过传输线发送出去;而在接收数据时,则把接收到的串行数据重新转换为并行数据,供设备内部使用。这种并行 - 串行和串行 - 并行的转换功能,使得 UART 能够适配不同设备之间的数据传输需求。
在硬件层面,UART 通常以芯片或集成电路的形式存在,集成在微控制器或其他设备中。它一般具有两根数据线,即发送线(TX)和接收线(RX),通过这两根线就可以实现全双工通信,意味着设备可以同时进行数据的发送和接收。
UART 的应用场景十分广泛。在工业控制领域,它可以用于连接传感器、执行器等设备,实现数据的采集和控制指令的传输;在通信设备中,如调制解调器、蓝牙模块等,UART 也发挥着重要作用,负责与其他设备进行数据交互。此外,在消费电子领域如智能手表、智能家居网关等设备中,UART 也常用于调试日志输出或与主控芯片进行底层配置交互。
在实际开发中,理解以下参数至关重要:
答: 最基本的 UART 通信只需要两根信号线:TX(发送)和 RX(接收)。连接时需要交叉连接,即设备的 TX 接对方的 RX,设备的 RX 接对方的 TX。如果涉及流控制,可能还需要 RTS 和 CTS 线,但在大多数简单应用中仅使用 TX/RX。
答: 波特率是指每秒钟传输的二进制位数。UART 是异步通信,没有时钟信号同步,因此接收方必须依靠预设的波特率来采样发送方的数据位。如果波特率不一致,采样点会偏移,导致数据解析错误。
答: 支持。硬件流控制通常使用 RTS(请求发送)和 CTS(清除发送)引脚。当接收缓冲区即将溢出时,接收方拉低 CTS 信号通知发送方暂停发送。软件流控制则使用 XON/XOFF 字符序列。
答:
答: 通常需要配置 GPIO 复用功能为 UART 模式,设置波特率发生器分频系数,配置数据位、停止位和校验位,最后使能 UART 外设。以下是一个基于 STM32 的示例框架:
void UART_Init(void) {
// 1. 开启 GPIO 和 USART 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
// 2. 配置 TX 为复用推挽输出,RX 为浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 3. 配置 USART 参数
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
// 4. 使能串口
USART_Cmd(USART1, ENABLE);
}
UART 作为嵌入式系统中最基础的通信协议之一,掌握其原理、参数配置及驱动实现是嵌入式工程师的基本功。面试中常考察对异步通信机制的理解以及实际调试能力。建议开发者多动手实践,结合示波器分析波形,深入理解时序关系。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online