UART协议详解:串行通信的基础与工作原理

需积分: 0 17 下载量 92 浏览量 更新于2024-06-30 1 收藏 9.18MB PPTX 举报
串行通信协议 UART 是一种广泛应用于嵌入式系统中的通信方式,它区别于 IIC 通信,后者主要适用于板内通信。UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种异步通信方式,这意味着发送方可以在任意时间发送下一个数据字符,无需保持与接收方的精确时钟同步。 波特率是 UART 协议中的关键参数,它定义了每秒钟能够传输的二进制位数量,例如常见的 9600 bit/s 表示每秒可以传输9600个二进制位,而每个二进制位的发送时间则是1/9600秒。在通信前,波特率是预先设定的,并且在整个通信过程中起到同步数据流的作用。 异步串行通信有三种工作模式: 1. **单工**:仅支持单方向通信,类似于广播,没有双向数据交换能力。 2. **半双工**:可以同时进行发送和接收,但一次只能执行一项操作,就像对讲机一样。 3. **全双工**:最为灵活,发送和接收可以同时进行,类似于电话对话,两边都能独立发送和接收数据。 单片机通常采用全双工异步串口通信,如常见的USART接口。在开发板上,可能会有多个串口资源供编程使用,通过库函数来实现串口通信。这些库函数包括: - **标志位检查函数**:检测和获取串口的标志位状态,如接收完成标志 RXNE 或发送完成标志 TXE。 - **清除标志位函数**:清除上一个通信周期的标志,确保数据传输的连续性。 - **中断状态获取函数**:判断串口是否产生了中断事件。 - **清除中断相关标志位函数**:处理中断结束后,清除与中断相关的标志。 在数据传输过程中,串口的工作流程涉及以下几个步骤: 1. CPU 将待发送的数据放入数据寄存器 TDR,可能通过总线传输。 2. 数据首先存储在 TDR,然后转到发送移位寄存器,逐位发送到 TX 引脚。 3. 接收数据时,RX 引脚接收数据,经过移位寄存器后存储在接收数据寄存器 RDR。 4. 当接收数据完整时,相关标志位会被置位,如 RXNE 表示接收缓冲区非空。 特别需要注意的是,TXE 位在 TDR 寄存器数据被成功转移到移位寄存器时置位,如果转移未完成则清零,这与 TXE 相关。此外,移位寄存器的第7位(TXE)和第6位(RI,接收中断请求)等标志位在串口控制中扮演重要角色,它们指示着通信的不同阶段和状态。 理解 UART 协议及其工作原理、波特率概念、不同工作模式以及单片机串口通信的细节对于嵌入式系统的开发者来说至关重要,掌握这些基础知识有助于编写高效、稳定的串口通信程序。