https://blog.csdn.net/Au54137/article/details/134883970
一、UART
1. uart 介绍
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种通信协议和硬件接口,用于在计算机系统和外部设备之间进行异步数据传输。它是一种简单且常见的串行通信方式,广泛应用于嵌入式系统、单片机和通信设备中。它在全双工模式下工作。
2. 工作原理
uart 通过发送和接收数据来实现实时通信,它使用起始位和停止位来识别每个数据字节的开始与结束,实现数据的异步传输。
UART 的引脚有:
TXD (Transmit Data):发送数据引脚,用于发送端发送数据。
RXD(Receive Data): 接收端引脚,用于接收端接收数据。
GND:共用地
3. 数据结构
uart 需要用指定的一种数据格式进行传输,数据格式如下:
一般 uart 数据都包括:起始位,数据位,奇偶校验位,停止位。如图所示
起始位: 从高到低,一个逻辑 0,表示数据传输的起始;
数据位:实际要传输的数据,可以是 5,6,7,8 个逻辑 1 或者 0 构成一个字符,发送和接收端必须保证相同的数据位数设置,确保数据的正确一致性;
校验位:可以是奇校验也可以是偶校验,或者无校验。奇校验:传输的数据中(不包含校验位)有奇数个逻辑 “1”,那么校验位为 0,反之为 1。偶校验:传输的数据中(不包含校验位)有偶数个逻辑 “1”,那么校验位为 0,反之为 1。
停止位:字符数据结束标志,可以是 1 位,1.5 位,2 位的高电平,适用于停止位的位数越多,不同时钟同步的容忍程度就越大,数据传输率越低。
空闲位:处于逻辑 “1” 状态,表示没有数据传输。
4. 波特率
UART 通过设置波特率来控制数据传输的速率。波特率表示每秒传输的位数。
发送和接收端必须使用相同的波特率设置。
假如有一个起始位,一个停止位,数据位 8 位,没有奇偶校验位,传输一个字节的数据,实际传输 10bit,那么计算方式如下:
波特率为 9600 表示串口每秒可以传输 9600bit,每传输 1bit 所需时间:
1 s/ 9600bit = 1000000 (u s)/9600(bit)=1000/9.6 =104.1667us波特率为 115200 表示串口每秒可以传输 115200bit,每传输 1bit 所需时间:
1 s / 115200 b i t = 1000000 (u s) / 115200 ( b i t ) = 1000 / 115.2 = 8.6806 u s
其他波特率计算如下:
二、USART
1. usart 介绍
USART(Universal Synchronous /Asynchronous Receiver / Transmitter,异步同步通信接口)是一种通信协议和硬件接口,用于在计算机系统和外部设备之间进行串行数据传输。它可以在全双工或半双工模式下工作,并支持同步或异步通信。
2. 工作原理
USART 通过发送和接收数据位来实现同步或异步串行数据传输。它提供了更高的灵活性与数据传输速率。
USART 主要有三根数据线:
3. 数据格式
与 uart 类似,但 USART 是以同步模式工作的,数据的传输是通过外部时钟进行同步的。发送端与接收端共享系统的 CLK。同步通信允许更高的数据传输速率和更精确的数据同步。
异步模式跟 uart 一样。
4. 波特率
与 uart 一致
UART 与 USART 的区别
同步通信支持:USART 支持同步通信,而 UART 仅支持异步通信。
时钟需求:USART 需要一个时钟信号(CLK)来同步数据传输,而 UART 不需要外部时钟信号。UART 的数据传输完全依赖于波特率的设定,而 USART 通过时钟信号来确保数据传输的同步。
数据传输速率:由于 USART 支持同步通信,因此在相同的波特率下,USART 能够实现更高的数据传输速率。相比之下,UART 的数据传输速率受限于异步通信的性质,通常较低。
硬件复杂性:USART 相对于 UART 具有更复杂的硬件实现。由于支持同步通信和更高的数据传输速率,USART 需要更多的硬件资源来实现时钟信号的生成和同步处理。UART 的硬件实现相对简单,适用于一些低复杂性和低速率的应用。