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

本文主要是介绍电路笔记(通信):UART Universal Asynchronous Receiver/Transmitter+电缆信号完整性改善,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UART协议概述

  • URAT(Universal Asynchronous Receiver/Transmitter)协议用于在两个设备之间进行数据传输。UART协议因其简单性和广泛应用而成为串行通信的一个基本选择,适合各种数据传输需求的应用。
异步传输
  • 定义: UART是一种异步串行通信协议,这意味着数据在传输过程中不依赖于时钟信号,而是通过约定的波特率(baud rate)来同步数据传输。
  • 定义: 波特率是指每秒传输的比特数。常见的波特率有9600、19200、38400、115200等等。
数据帧结构
  • 帧格式: UART数据传输是以数据帧为单位的。一个典型的数据帧包括以下几个部分:
1 Bits5-9 Bits0-1 Bits1-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校验位始终为01主要用于某些特定的通信协议
MARK校验位始终为11主要用于某些特定的通信协议
通信流程
  • 发送: 发送方将数据帧按照上述格式发送到接收方。每个数据位是串行传输的,意味着一位接一位地传输。

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

  • UART连接示意图

    • 下面是一个简化的图示,展示了两个MCU通过UART进行通讯的连接方式
      +-------------------+                  +-------------------+|      MCU1         |                  |      MCU2         ||                   |                  |                   ||                   TX  ------------> RX                   |  |                   RX  <------------ TX                   |  |                   GND ------------- GND                  |  |                   |                  |                   |+-------------------+                  +-------------------+
    • 两个MCU都是TX发射端连接到RX接收端,GND连接确保两个MCU有共同的地线参考电压,以稳定通信 (一个连接示例:电路笔记 : esp32pico-d4 焊接(16pin的typec、esp32pico-d4芯片))。

    • 如果电平不兼容(如TTL电平和RS-232电平),则需要使用电平转换器。在与个人电脑进行串口通讯时一般会用到USB转串口芯片,如CH340。

优缺点
  • 优点:

    • 简单: 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-232接口的信号电平值较高,易损坏接口电路的芯片。RS-232接口任何一条信号线的电压均为负逻辑关系。即:逻辑“1”为-3~-12V;逻辑“0”:+3~+12V,噪声容限为2V。(那上边中间的图可能画错了)

  • 信号电平值较高,使用不当容易损坏接口芯片

  • 传输速率较低,用于以较低波特率(<20kbps)提高串行通信距离。

  • 传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。

  • RS-232标准常用的数据传输速率为每秒300、1200、2400、9600 和 19,200 波特。对于控制信号,通过过渡区域的传输时间应小于 1 毫秒。 对于数据和定时信号,通过过渡区域的传输时间应小于 1 毫秒

RS-485

  • 用于多点通信和长距离传输。1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。

  • RS485采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。RS485有两线制和四线制两种接线,四线制是全双工通讯方式,两线制是半双工通讯方式。

  • RS485接口采用平衡驱动器和差分接收器的组合,抗共模干扰能力强,即抗噪声性能好。

  • 根据https://www.analog.com/en/resources/technical-articles/full-guide-to-serial-communication-protocol-and-our-rs485–maxim-integrated.html的描述,RS485接口的最大传输距离标准值4000英尺,最大传输速度为 10Kbps。但是为了让“bit”能被探测到而不会出现过多的抖动(边沿过渡需要快速且干净)。如果对方波(“101010…”的位模式)进行傅里叶级数分析,你会发现高于第11次谐波的成分也是显著的。300米电缆的插入损耗会衰减高频信号,从而导致失真。如果你尝试使用标准的RS-485收发器(如SN75176B)在300米的屏蔽双绞线上进行10Mbps的数据传输,高频衰减将导致边沿过渡变慢,信号被模糊化。在接收端,信号将严重失真,与发射端实际传输的信号大相径庭。由于这种失真,接收器检测到边沿过渡的时间存在不确定性,从而导致接收器输出端的抖动过大。添加链接描述

改善信号的完整性
  • 电阻和电容和电压范围影响信号的传输距离。虽然在短距离上可以忽略不计,但电缆越长,电流越高,一端的电压变化就越大。电容越高,它就越能抵抗从一个电压电平到另一个电压电平的变化。电容越高,它的变化越慢,信号越圆润。因此,随着速度的提高和距离或电容的增加,信号将开始看起来不像方波,而更像正弦波。由于TTL信号的电平较低,TTL 信号在高干扰环境中可能更容易受到噪声干扰。
  • 当信号通过电缆长距离传输时,信号可能会因电缆的频率特性和损耗而失真。为了改善信号的完整性,通常使用均衡和预失真(也称为强调)两种主要技术

均衡:

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

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

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

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

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

这篇关于电路笔记(通信):UART Universal Asynchronous Receiver/Transmitter+电缆信号完整性改善的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130211

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi