通用异步接收器/发送器(UART)——发送与接收

图1.带数据总线的UART

UART代表通用异步接收器/发送器。它不是像SPI和I2C这样的通信协议,而是微控制器中的物理电路或独立的IC。UART的主要目的是发送和接收串行数据。关于UART最好的一点是其仅使用两条线在设备之间传输数据。

图2.两个UART彼此直接通信 

UART异步传输数据意味着没有时钟信号使发送UART的输出位与接收UART采样位同步。发送UART取代了时钟信号,将开始位和停止位添加到正在传输的数据包中。这些位定义了数据包的开始和结束,因此接收UART知道何时开始读取这些位。当接收UART检测到起始位时,它将开始以称为波特率的特定频率读取输入位。波特率是数据传输速度的度量,以每秒的比特位(bps)表示。两个UART必须以大约相同的波特率工作。在位的时序变得太远之前,发送和接收UART之间的波特率只能相差约10%。另外,还必须将两个UART配置为发送和接收相同的数据包结构。

数据传输

在UART中,传输模式为数据包形式。连接发送器和接收器的机制包括串行数据包的创建和物理硬件线路的控制。数据包由起始位、数据帧、奇偶校验位和停止位组成。

图3.UART数据包

起始位

当不传输数据时,UART数据传输线通常保持高电压电平。若要开始数据传输,发送UART会将传输线从高电平拉到低电平并保持1个时钟周期。当接收UART检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。

图4.起始位

数据帧

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

图5.数据帧

奇偶校验

奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。接收UART读取数据帧后,将计数值为1的位,检查总数是偶数还是奇数。如果奇偶校验位为0(偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为1(奇数奇偶校验),则数据帧中的1或逻辑高位总计应为奇数。当奇偶校验位与数据匹配时,UART认为传输未出错。但是,如果奇偶校验位为0,而总和为奇数,或者奇偶校验位为1,而总和为偶数,则UART认为数据帧中的位已改变。

图6.奇偶校验位

停止位

为了表示数据包结束,发送UART将数据传输线从低电压驱动到高电压并保持1到2位时间。

图7.停止位

UART传输步骤

第一步:发送UART从数据总线并行接收数据。

图8.数据总线至发送UART

第二步:发送UART将起始位、奇偶校验位和停止位添加到数据帧。

图9.Tx侧的UART数据帧

第三步:从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样。

图10.UART传输

第四步:接收UART丢弃数据帧中的起始位、奇偶校验位和停止位。

图11.Rx侧的UART数据帧

第五步:接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总线。

图12.接收UART至数据总线

帧协议

UART的一个关键特性是帧协议的实现,但还没有被充分使用。其主要用途和重要性是为每台设备提供安全和保护方面的增值。例如,当两个设备使用相同的UART帧协议时,有可能在没有检查配置的情况下连接到同一个UART,设备会连接到不同的引脚,这可能导致系统故障。

另一方面,实现帧协议可确保安全性,因为需要根据设计帧协议解析接收到的信息。每个帧协议都经过专门设计,以确保唯一性和安全性。在设计帧协议时,设计人员可以给不同设备设置期望的报头和报尾(包括CRC)。在图13中,2个字节被设置为报头的一部分。

图13.UART帧协议示例

报头1(H1为0xAB)和报头2(H2为0xCD)

报头是确定您是否在与正确的设备通信的唯一标识符。

命令(CMD)选择

命令将取决于用于创建两个设备之间通信的命令列表。

每个命令的数据长度(DL)

数据长度将取决于所选的命令。您可以根据所选的命令来使数据长度最大化,因此它会随选择而变化。在这种情况下,数据长度可以调整。

数据n(可变数据)

数据是要从设备传输的有效载荷。

报尾1(T1为0xE1)和报尾2(T2为0xE2)

报尾是在传输结束后添加的数据。就像报头一样,报尾也可以唯一标识符。

循环冗余校验(CRC公式)

循环冗余校验公式是一种附加的错误检测模式,用于检测原始数据是否发生意外更改。发送设备的CRC值必须始终等于接收器端的CRC计算值。

建议为每个UART设备实现帧协议来增加安全性。帧协议要求发送和接收设备使用相同的配置。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
USB 3.0(Universal Serial Bus 3.0)是一种用于连接计算机和外部设备的高速数据传输接口。USB 3.0在数据传输速度上比之前的USB 2.0更快。UART(Universal Asynchronous Receiver Transmitter)是一种用于串行数据通信的接口。它可以在计算机和外部设备之间传输数据,可以用于连接调制解调器、传感器、打印机等设备。 在USB 3.0 UART原理图中,通常会包括以下几个主要部件: 1. USB控制器:负责控制和管理USB数据传输。它将接收到的数据分组打包,并将其传递给UART部件,或者将UART发送的数据解包成独立的数据包,并发送到USB总线上。 2. UART芯片:UART芯片负责将串行数据转换成并行数据,或者将并行数据转换成串行数据。它实现了起始位、数据位、校验位和停止位的生成和解析,以确保数据的可靠传输。 3. 时钟和时序控制电路:时钟和时序控制电路用于控制数据传输的时钟同步和时序。它确保接收方和发送方使用相同的时钟频率和时序,以便准确地传输数据。 4. 数据缓存:数据缓存用于临时存储或接收数据,在数据传输速度不一致的情况下,可以提供流控功能。 5. 器件选择和连接电路:UART部分通常连接到其他外部设备,如传感器、打印机或调制解调器。这些外部设备可以通过相应的引脚和信号线与UART芯片连接。 总之,USB 3.0 UART原理图是为了实现USB 3.0和UART之间的数据交换而设计的。通过使用USB控制器、UART芯片、时钟和时序控制电路、数据缓存以及适当的器件选择和连接电路,可以有效地传输数据并实现设备间的通信。这种设计为计算机和外部设备之间的高速数据传输提供了一种可靠和高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值