电路笔记(通信):UART Universal Asynchronous Receiver/Transmitter+电缆信号完整性改善

UART协议概述

  • URAT(Universal Asynchronous Receiver/Transmitter)协议用于在两个设备之间进行数据传输。UART协议因其简单性和广泛应用而成为串行通信的一个基本选择,适合各种数据传输需求的应用。
异步传输
  • 定义: UART是一种异步串行通信协议,这意味着数据在传输过程中不依赖于时钟信号,而是通过约定的波特率(baud rate)来同步数据传输。
  • 定义: 波特率是指每秒传输的比特数。常见的波特率有9600、19200、38400、115200等等。
数据帧结构
  • 帧格式: UART数据传输是以数据帧为单位的。一个典型的数据帧包括以下几个部分:
1 Bits 5-9 Bits 0-1 Bits 1-2Bits(还有0.5、1.5)
起始位 数据位 奇偶校验位 停止位
  • 起始位(Start Bit): 一个低电平信号,用于表示数据传输的开始。
  • 数据位(Data Bits): 实际传输的数据,通常为5到9位。
  • 奇偶校验位(Parity Bit): 可选的位,用于错误检测。可以是偶校验、奇校验或无校验。
  • 停止位(Stop Bit): 一个或多个高电平信号,用于标识数据传输的结束。
  • 示例: 如果数据位为8位、没有奇偶校验位,且使用1个停止位,则一个完整的数据帧会包括:1个起始位 + 8个数据位 + 1个停止位。

Layer 1 数据帧 位4 位5 位6 位1 位2 位3 位0 位7 启动位 停止位 位1 位2 位0 启动位 位5 位6 位7 停止位

  • UART中不同校验方法(其中奇偶校验可通过异或实现):
校验方法 描述 校验位数量 用途
NONE 不使用任何校验位 0 数据传输不进行错误检查
EVEN 校验位使数据的1位总数为偶数 1 检测偶数个错误位
ODD 校验位使数据的1位总数为奇数 1 检测奇数个错误位
SPACE 校验位始终为0 1 主要用于某些特定的通信协议
MARK 校验位始终为1 1 主要用于某些特定的通信协议
通信流程
  • 发送: 发送方将数据帧按照上述格式发送到接收方。每个数据位是串行传输的,意味着一位接一位地传输。

  • 接收: 接收方接收数据帧并解析数据位。起始位和停止位帮助接收方确定数据的边界和正确性。

  • UART连接示意图

    • 下面是一个简化的图示,展示了两个MCU通过UART进行通讯的连接方式

      复制代码
        +-------------------+                  +-------------------+
        |      MCU1         |                  |      MCU2         |
        |                   |                  |                   |
        |                   TX  ------------> RX                   |  
        |                   RX  <------------ TX                   |  
        |                   GND ------------- GND                  |  
        |                   |                  |                   |
        +-------------------+                  +-------------------+
优缺点
  • 优点:

    • 简单: UART协议实现简单,易于理解和使用。
    • 无需额外时钟线: 通过波特率匹配进行同步,不需要额外的时钟信号线。
    • 广泛支持: 许多设备和微控制器都支持UART。
  • 缺点:

    • 同步问题: 由于没有共享的时钟信号,波特率不匹配可能导致数据传输错误。
    • 距离限制: UART适用于短距离通信,长距离传输可能需要额外的信号增强或转换器。
    • 无内建错误校正: UART协议本身不提供数据校正功能(虽然奇偶校验可以提供基本的错误检测)。
同步和流控
  • 尽管异步串口通信不依赖于时钟信号来同步数据传输,但在实际应用中,常用一些流控机制来避免数据丢失或接收溢出。例如:
  • 软件流控 (XON/XOFF):通过发送特定的控制字符来暂停或恢复数据传输。
  • 硬件流控 (RTS/CTS):使用额外的信号线来控制数据流。

常见UART实现方式

Layer 1 起始位 数据位 终止位 RS232 RS485 TTL

TTL Serial

  • TTL Serial 是基于逻辑电平的串口通信协议。它使用0V(逻辑低,0v-0.4v)和+5V(或+3.3V,2.4v-5v)表示数据的0和1,通常用于嵌入式系统和微控制器的串行通信。
  • 使用 TTL 电平的串行通信通常成本较低。许多微控制器和外围设备支持 TTL Serial。
  • TTL 电平信号适用于短距离通信,长距离传输可能需要转换。正常情况下,通讯距离:TTL < RS232 < 485。

RS-232

RS-485

改善信号的完整性

均衡:

  • 均衡是对信号进行调整,以补偿电缆引入的失真。电缆会导致频率依赖性损耗,即高频信号比低频信号衰减得更多。均衡通过在特定频率上增加增益来补偿这些损失,从而使整个信号的频率响应尽可能平坦。
  • 固定均衡(Fixed Equalization): 使用预定义的设置根据已知的电缆特性调整频率增益。
  • 自适应均衡(Adaptive Equalization): 实时动态调整均衡设置,以应对电缆条件和信号失真的变化,从而补偿不同的失真情况。

预失真:(Pre-Distortion,或称为强调)

  • 预失真是在信号传输之前对信号进行修改,以抵消电缆失真带来的影响。预失真的主要形式有两种:

  • 预加重(Pre-Emphasis): 在信号传输前增加高频信号的增益。由于高频信号在电缆中衰减更多,增加高频的幅度可以确保这些频率在接收时有合适的水平。

  • 去加重(De-Emphasis):减少低频信号的幅度。接收端设计为应用均衡滤波器来补偿低频损失时,通常使用此方法。

相关推荐
山岚的运维笔记7 分钟前
SQL Server笔记 -- 第85章:查询提示
数据库·笔记·sql·microsoft·sqlserver
浅念-24 分钟前
C++ 模板进阶
开发语言·数据结构·c++·经验分享·笔记·学习·模版
打码人的日常分享1 小时前
数据中心信息中心信息科管理制度
大数据·运维·网络·云计算·制造
桂花很香,旭很美3 小时前
Anthropic Agent 工程实战笔记(二)工具设计
笔记·架构·language model
梅羽落4 小时前
XPath笔记
笔记
mftang4 小时前
WebSocket协议与其他通信协议有什么区别?
网络·websocket·网络协议
桂花很香,旭很美4 小时前
Anthropic Agent 工程实战笔记(六)安全与生产
笔记·架构·agent
funnycoffee1234 小时前
H3C交换机查看日志命令display logbuffer
运维·网络·h3c logbuffer·h3c日志
sponge'4 小时前
opencv学习笔记14:transformer
笔记·学习·transformer
小灰灰搞电子4 小时前
ESP32 使用ESP-IDF实现Modbus TCP主机通信源码分享
网络·modbustcp·网络协议·tcp/ip·esp32