Fork me on GitHub
0%

Uart

概述

简介

UART:Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。一种常用的串行通信协议,用于在电子设备之间进行数据传输。它是一种异步通信方式,意味着数据没有固定的时钟信号来同步发送和接收端的数据。相比同步通信协议(如SPI和I2C),UART不需要在数据传输中传递时钟信号,从而更加简单且适用于各种设备和环境。

特征

  • 点对点:uart协议只能作用于两个单点设备之间,通常没有明确意义上的主从关系

  • 异步通信:异步通信体现在没有时钟的控制,而是按照别的方式进行数据的确认(需要协商固定波特率Baud Rate)

  • 全双工通信:使用两个UART通道,一个用于发送(TX)一个用于接收(RX)。

  • 速率灵活性:UART通信的波特率可以根据具体需求进行灵活配置,允许在不同的传输速率下进行数据传输。

  • 数据格式灵活性:可以按需配置数据位数、停止位数、校验位等等

逻辑框图

image

数据传输

uart收发控制器之间

在UART中,传输的方式是数据包的形式。数据包由起始位、数据帧、奇偶校验位和停止位组成

image

  • 起始位

    UART 数据传输线在不传输数据时通常保持在高电平。为了开始数据传输,发送 UART 将传输线从高电平拉至低电平,持续1个时钟周期。当接收UART检测到高电平到低电平的转变时,它开始以波特率的频率读取数据帧中的位。

  • 数据帧

    数据帧包含正在传输的实际数据。如果使用奇偶校验位,它的长度可以是5-8 位。如果不使用奇偶校验位,则数据帧可以是9 位。在大多数情况下,数据首先以最低有效位发送。

  • 奇偶校验位

    奇偶校验描述了数字的偶数或奇数。奇偶校验位是UART_RX 判断数据在传输过程中是否发生变化的一种方式。位可能因电磁辐射、不匹配的波特率或长距离数据传输而改变。
    如果奇偶校验位为 0(偶校验),则数据帧中的 1 或逻辑高位总计应为偶数。如果奇偶校验位为 1(奇校验),则数据帧中的 1 位或逻辑高电平总计应为奇数。当奇偶校验位与数据匹配时,UART 就知道传输没有错误。但如果奇偶校验位为 0,并且总数为奇数,或者奇偶校验位为 1,并且总数为偶数,则 UART 知道数据帧中的位已更改。

  • 结束位

    为了发出数据包结束的信号,发送 UART 将数据传输线从低电压驱动到高电压,持续时间为1-2位。

控制器与总线

需要注意的是,数据在控制器之前数据是串行传输的。但是当数据从内容到数据总线,数据总线到uart发送器之间数据是并行传输的,相应的数据接收器到数据总线数据的发送也是并行的。

波特率

对于异步通信需要解决的一个问题就是:当发送方连续发送了多个逻辑1,接收方如何确认其具体个数。同步通信很好解决即通过时钟同步,对于串口通信使用波特率即可解决该问题。

波特率(Baud Rate)是衡量串行通信传输速率的单位,表示每秒钟传输的比特数。它用于定义数据传输速度,即在单位时间内发送的二进制位数。波特率是串行通信中一个重要的参数,需要发送方和接收方事先约定相同的波特率,以确保数据的正确传输。

波特率通常以每秒传输的位数来表示,例如:9600、115200、38400等。每个波特率都代表每秒传输的比特数,例如:波特率115200表示每秒传输115200个位;则对应传输1bit的时间也可以计算出来,这样接收方统计接收某个电平的时长即可计算出具体有几个数据。波特率和数据传输速度之间的关系是线性的。例如,波特率为9600时,每秒传输的位数为9600 bps(bits per second),而一个典型的8位数据帧包含了一个起始位、8位数据位、一个可选的校验位和一个或多个停止位,因此总的数据传输速率将高于9600 bps,但9600 bps是通信速率的基准。

优缺点

优点

  • 仅需要两根线即可进行全双工数据传输(电源线除外)
  • 不需要时钟或任何其他定时信号
  • 奇偶校验位确保将基本错误检查集成到数据包帧中

缺点

  • 帧中数据的大小是有限的
  • 与并行通信相比,数据传输速度较低
  • 发送器和接收器必须同意传输规则并选择合适的波特率

参考资料