嵌入式通信 UART 大揭秘:经典面试题深度剖析
2025-06-13 10:15:40
晨欣小编
UART(Universal Asynchronous Receiver Transmitter)即通用异步收发传输器,是一种点对点的全双工串行通信方式,采用异步机制(无时钟线),通过约定的格式与速率在两端之间传输数据。
无时钟线(异步):依赖起始位/停止位同步;
低成本、低速:适合短距离通信;
点对点通信:一对一(典型为 TX 与 RX);
常见速率:9600bps、115200bps、1Mbps 等;
数据帧结构:
scss复制编辑起始位(1位) + 数据位(5~8位) + 校验位(可选) + 停止位(1~2位)
CPU 将待发送数据写入 UART 的数据寄存器;
UART 控制器将数据转为串行波形;
加入起始位、数据位、校验位、停止位后由 TX 引脚发出;
发送过程中,TX 空闲或忙碌由状态寄存器控制。
RX 引脚监听信号;
检测到起始位后触发同步;
采样数据位、校验位并组帧;
接收到的数据存入接收缓冲区,触发中断或轮询读取。
每个bit时间约为 8.68μs;
精准波特率计算与时钟同步极为关键;
若时钟偏移>5%,将严重导致帧错误(Frame Error)。
特性
UART
SPI
I²C
同步性
异步
同步
线数
2(TX、RX)
4(MISO, MOSI, SCLK, SS)
2(SDA、SCL)
主从结构
点对点
多主多从
速度
中速(~1Mbps)
高速(数十Mbps)
较低(~400kbps常见)
成本
低
中等
答题技巧:重点突出 UART 的“异步、双向、低成本”特征及其在调试中的典型应用。
回答要点:
接收端采样错误,可能接收到乱码或无响应;
波特率误差超过±5%会造成严重通信失败;
解决方法包括:
使用晶振锁定频率;
调整 UART 分频器;
硬件支持自适应波特率(Auto-baud)。
两种缓冲机制:
硬件FIFO:如STM32自带16字节FIFO,自动缓存;
软件缓冲区:通过中断+环形队列缓存;
典型处理逻辑:
启用接收中断;
中断服务程序中将数据转存;
如果软缓冲区满,设置溢出标志,丢弃或覆盖;
答题建议:突出中断配合环形队列机制,防止数据丢失。
可能原因:
接收中断处理不及时 → 优化中断优先级;
缓冲区太小 → 加大软件环形缓冲;
波特率不匹配 → 确保晶振精度;
帧格式配置错误(如奇偶校验)→ 双方保持一致。
TTL UART
RS-232 UART
电平标准
0V(低)/3.3V/5V(高)
+12V/-12V
接口兼容性
不可直接兼容
需电平转换芯片(如MAX232)
典型应用
MCU/模块通信
工控设备/串口调试口
四、UART通信在嵌入式项目中的典型应用
开发中最常见的用途,用于:
打印日志信息;
输出错误码、状态码;
与PC上串口助手交互。
通过AT指令方式与模组交互,需:
严格波特率匹配;
控制RTS/CTS流控(防止溢出);
配合DMA传输提升效率。
如 STM32 使用 USARTx 端口进行 ISP 烧录,可通过串口进行固件更新。
问题:为什么使用DMA传输UART数据?
避免CPU频繁处理中断;
高速稳定接收数据;
与环形缓冲结合提高吞吐量;
典型配置流程:
开启DMA通道;
配置UART为DMA模式;
设置接收缓冲长度与起始地址;
结合空闲中断(IDLE)判断帧尾;
回调函数处理数据并复用缓冲。
面试关键点:答题时强调效率优化、CPU占用率降低与实时性保障。
UART虽然属于基础通信接口,但其涉及的细节却直接影响到嵌入式系统的稳定性与可靠性。掌握UART通信原理、配置技巧以及异常处理方式,不仅是项目实战的需要,也是多数嵌入式面试的“必考题”。
答题建议:
结构清晰:分“机制、配置、问题、解决”展开;
举例恰当:可结合 STM32 或 51 实例;
突出逻辑:如用中断/环形缓冲/DMA解决数据丢失;
结合项目经验:描述你在项目中用UART与哪些设备通信,怎样做流控等。
EMD12FHAT2R
MWSD1005C4N6CTM01
SDWL2012C18NKSTF
LT1085CM#PBF
TCRG2012(0805)L3300BT25PPM
RR0603(0201)L330JTD
2SC4117-GR LF(T
CR0603F19K6P05Z
HRT8205A-HRW
PESD2IVN-UX
海量现货云仓
闪电发货
原厂正品 品质保障
个性化采购方案
售前客服
售后客服
周一至周六:09:00-12:00
13:30-18:30
投诉电话:0755-82566015
扫一扫,加我微信
感谢您的关注,当前客服人员不在线,请填写一下您的信息,我们会尽快和您联系。