UART协议

2023-05-16

UART协议

简介

UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信

串行通信

串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。

发送端的UART将来自控制设备(如CPU)的并行数据转换为串行数据,以串行方式将其发送到接收端的UART,然后由接收端的UART将串行数据转换为并行数据以用于接收设备的正常处理。

异步通信

异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的

数据传输速率

数据的传输速率用波特率表示,即每秒钟传输的的二进制位数。每秒传输的字符数乘以位数即为波特率。只要传输的信号是二进制的,波特率与比特率的概念就是相同的

波特率和比特率的区别

  • 波特率就是每秒传输多少符号

  • 比特率就是每秒传输多少比特。

    二进制一个符号所含信息量为1比特,因此二进制下波特率=比特率。 计算机处理的都是二进制数,在这个环境下波特率和比特率都一样。

数据传输格式

image-20220413212442190

  • 起始位:先发出一个逻辑”0”信号,表示传输字符的开始。UART数据传输线通常在不传输数据时保持在高电平

  • 数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)大多数情况下采用小端传输

  • 校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)

  • 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容错性越好,但是数据传输率同时也越慢

  • 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

  • 异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准。

小端传输:符合人的思维 低位存储在低地址 如0x0100 0001(A) 小端传输后看到的波形为 1000 0010

大端传输:符合直观视觉 地位数据存储在高位地址 如0x0100 0001(A) 大端传输后看到的波形仍为 0100 0001

RS-232(全双工,电平信号)

简介

RS-232是一种串行物理接口标准。RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。很多人经常把RS-232、RS-422、RS-485 误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面)。

RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。

IBM的PC 机将RS-232 简化成了DB-9 连接器,从而成为今天的事实标准。而工业控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三条线。

image-20220413234605018

而现在开发板都选择TTL的UART,或者直接UART转USB做在开发板上。

嵌入式里面说的串口,一般是指UART口, 但是我们经常搞不清楚它和COM口的区别, 以及RS232, TTL等关系, 实际上UART,COM指的物理接口形式(硬件), 而TTL、RS-232是指的电平标准(电信号),其中UART通常使用TTL电平。

TTL(晶体管-晶体管逻辑集成电路 全双工):

市面上很多“USB转TTL”模块,实际上是“USB转TTL电平的串口”模块。这种信号0对应0V,1对应3.3V或者5V。与单片机、SOC的IO电平兼容。不过实际也不一定是TTL电平,因为现在大部分数字逻辑都是CMOS工艺做的,只是沿用了TTL的说法。我们进行串口通信的时候从单片机直接出来的基本是都是 TTL 电平。

  • 输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。
  • 最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。

UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。

优点和不足

优点:

  • 通信只需要两条数据线
  • 无需时钟信号
  • 有奇偶校验位,方便通信的差错检查
  • 只需要接收端和发送端设置好数据包结构,即可稳定通信

缺点:

  • 接口的信号电平值较高,易损坏接口电路芯片,又因为232电平与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接,比如对同样的信号0x0101 0101来分别看RS232和TTL的波形电平,显然RS232的电平较高。

    image-20220414111827964

  • 传输速率较低,现在由于采用了新的UART芯片,波特率达到115.2Kbps

  • 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱

  • 传输距离有限,数据帧最大支持9位数据

  • RS-232 只容许一对一的通信,没有考虑构成串行总线

RS-485/ RS-422标准

RS422(全双工)

RS-422 的电气性能与RS-485完全一样。主要的区别在于:RS-422 有4 根信号线:两根发送、两根接收。由于RS-422 的收与发是分开的所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信,星型网、环网,不可用于总线网。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。

RS485(半双工,差分信号)

RS-232接口可以实现点对点的通信方式,但这种方式不能实现联网功能。为了解决这个问题,新的标准RS-485产生了。

RS-485的数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。RS-485 只有2 根信号线,所以只能工作在半双工模式,常用于总线网。

RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。

  • 差分信号:一对大小相等而极性相反的对称信号,差分信号用于传输有用的信号。在差分信号传输过程中会遇到外部干扰信号,但是,由于两根差分信号线始终在一起,因此干扰信号一般都会同时作用在两根信号线上,形成叠加在两根信号线上大小相等相位也相同的共模信号,因此差分传输的信号对外部干扰具备很强的抗干扰能力。

  • 共模信号:共模信号是作用于差分信号线上的一对大小相等极性也相同的信号,共模信号往往来自于外部干扰。

RS-485的电气特性:

  • 逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
  • RS-485的数据最高传输速率为10Mbps,但是由于RS-485 常常要与PC 机的RS-232 口通信,所以实际上一般最高115.2Kbps。又由于太高的速率会使RS-485 传输距离减小,所以往往为9600bps 左右或以下
  • RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好
  • 在100Kb/S的传输速率下,才可以达到最大的通信距离1219M。
  • RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点
  • 因为RS-485的远距离、多节点(32个)以及传输线成本低的特性,使得EIA RS-485成为工业应用中数据传输的首选标准

RS485接口为什么要接地

RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作,当发送驱动器A向接收器B发送数据时,发送驱动器A的输出共模电压为VOS,由于两个系统具有各自独立的接地系统,存在着地电位差VGPD。那么,接收器输入端的共模电压VCM就会达到VCM=VOS+VGPD。虽然RS-485标准规定VOS≤3V,但VGPD可能会有很大幅度(十几伏甚至数十伏),并可能伴有强干扰信号,致使接收器共模输入VCM超出正常范围,并在传输线路上产生干扰电流,因此,必须有一条低阻的信号地。一条低阻的信号地将两个接口的工作地连接起来,使共模干扰电压VGPD被短路

影响485总线通信速度和通信可靠性的三个因素

  • 通信电缆中的信号反射

    有两种信号因素导致信号反射:阻抗不连续和阻抗不匹配。阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射,如图所示。这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻

    image-20220414101656963

  • 在通讯电缆中的信号衰减

    一条传输电缆可以把它看出由分布电容、分布电感和电阻联合组成的等效电路。信号的损失主要是由于电缆的分布电容和分布电感组成的LC低通滤波器

    image-20220414102105717

  • 在通信电缆中的纯阻负载

RS232与RS485对比

  • 抗干扰性:RS485 接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰

  • 传输距离:RS485 接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232 传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右

  • 通信能力:RS-485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS-485 接口方便地建立起设备网络。RS-232只允许一对一通信

  • 传输速率:RS-232传输速率较低,在异步传输时,波特率为 20Kbps。RS-485 的数据最高传输速率为 10Mbps

  • 信号线:RS485 接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线

电平信号:电平信号的传输线中有一个参考电平线(一般是GND),然后信号线上的信号值是由信号线电平和参考电平线的电压差决定。

差分信号:传输线中没有参考电平线,所有都是信号线,然后1和0的表达靠信号线之间的电压差。

电平信号的2根通信线之间的电平差异容易受到干扰,传输容易失败;差分信号不容易受到干扰,因此传输质量比较稳定。现代通信一般都使用差分信号,在相同根数的通信线下,差分信号比电平信号要快,因为差分信号抗干扰能力强,因此1个发送周期更短。

在电平信号下,”1根参考电平线+1根信号线“可以传递1位二进制;”1根参考电平线+2根信号线“可以同时发送2位二进制;如果想同时发送8位二进制就需要9根线,在差分信号下,2根线(彼此差分)可以同时发送1位二进制;如果需要同时发送8位二进制就需要16根线。

RS422与RS485对比

RS-485的电气性能与RS-422完全一样。主要的区别在于:

  • RS-422 有4 根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422 的收与发是分开的所以可以同时收和发(全双工)
  • RS-485 只有两根数据线:发送和接收都是A 和B。由于RS-485 的收与发是共用两根线,所以不能同时收和发(半双工)

串口的工作原理

串行的数据,如何转并行

移位寄存器原理

image-20220414142256399

image-20220414142355942

大致的意思是:

初始状态: 设A3A2A1A0= 1011

然后Q3的输出,是在每个时钟节拍,按照这个先后顺序,把A3A2A1A0串行的输出出去。(小端)

其实利用的就是D触发器的特性。

如果我们使用8位的移位寄存器,就可以利用8个clk的时间,发一组8bit的数据通过一根导线传输出去.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UART协议 的相关文章

  • 【RT-Thread】UART 设备源码分析

    官网介绍 I O 设备模型框架如下图 xff1a 但看到官网写道 设备驱动层是一组驱使硬件设备工作的程序 xff0c 实现访问硬件设备的功能 它负责创建和注册 I O 设备 xff0c 对于操作逻辑简单的设备 xff0c 可以不经过设备驱动
  • 【FPGA】FPGA实现UART串口通信回环

    目录 一 UART协议基础二 系统模块划分三 代码实现1 uart顶层设计模块2 uart rx串口数据接收模块3 control控制模块4 uart tx串口数据发送模块 四 仿真五 上板验证六 踩坑事项 一 UART协议基础 关于UAR
  • UART、RS232 、RS485 区别

    UART RS232 RS485 区别 UART RS232 RS485这些物理层的串口通信 xff0c 它们都是在同一时间发送一位 RS232 RS485只是串口通讯的变种 xff0c 理解了UART串口通讯 xff0c 那么RS232和
  • TM4C123系列(四)————UART串口通信

    一 实验简介 使用TM4C123的串口通信功能实现单片机与PC端通信 二 UART介绍 TM4C123有八个串口 xff0c 其中UART0已经与USB集成 xff0c UART0建议只用来和PC端通信 xff0c 不要与外界通信 除此之外
  • (十三)STM32——串口通信(UART)

    目录 学习目标 内容 通信方法 并行通信 串行通信 通信方向 通信方式 UART 特点 串口参数 通信流程 寄存器 USART SR USART DR USART BRR 过程 代码 运行结果 运行结果 遇到的问题 总结 学习目标 本节我们
  • 串口通信基础知识(UART)

    目录 一 串口通信的具体分类 xff1a 二 常见的串行通信接口简介 xff1a 三 具体通信标准的实现 xff1a 1 UART xff08 通用异步收发传输器 xff09 xff1a 一 串口通信的具体分类 xff1a 总结一下 xff
  • 基于uart的RS232和RS485总线

    我们之前讲uart的时候就已经提过一个问题 xff0c 就是它并不是直接连接到SOC里面的 xff0c 而是经过了一个芯片的转换 这个芯片的转换就是和我们要说的rs232 485总线有关的 RS232和RS485总线其实本质就是uart 只
  • 【STM32】UART串口通信详解

    目录 一 数据通信方式 1 串行与并行通信2 全双工 半双工及单工通讯3 同步通讯与异步通讯 二 串口通讯协议 STM32串口简介1 物理层1 RS232标准2 USB转串口 重点 3原生的串口到串口2 协议层1 xff09 通讯的起始和停
  • WK2114(一个异步串口UART 扩展为4个串口UART)

    WK2114是UART接口的4通道UART器件 WK2114将一个标准3线异步串口 xff08 UART xff09 扩展成为4个增强 功能串口 xff08 UART xff09 主接口UART在数据传输时主接口的UART可以通过引脚配置为
  • 串口通信协议---UART

    串口通信的分类 UART属于串行 异步 全双工通信 串行通信与并行通信 根据传输数据的位宽 xff0c 串口通信可分为串行通信与并行通信 xff0c 串行通信是指设备之间通过少量数据信号线 一般是 8 根以下 xff0c 地线以及控制信号线
  • UART&RS232&RS485的区别

    UART RS232 RS485在串口通信中 xff0c 主要区别是电平的不同 xff0c 其中UART通常使用TTL电平 TTL TTL全名是晶体管 晶体管逻辑集成电路 Transistor Transistor Logic 输入高电平最
  • C51_day5:串口通信UART

    3 1 串口基本认知 串行接口简称串口 xff0c 也称串行通信接口或串行通讯接口 xff08 通常指COM接口 xff09 xff0c 是采用串行通信方式的扩展接口 串行接口 xff08 Serial Interface xff09 是指
  • UART串口通信协议详解

    UART xff1a 通信异步收发器 xff0c 串行 异步通信总线 xff0c 两条数据线 xff08 收发 xff09 xff0c 全双工 xff08 可以同时接收和发送 xff09 一 UART帧格式 xff08 UART协议 xff
  • 使用HAL库开发STM32:UART基础使用

    文章目录 目的 基础说明与初始化 基础说明 初始化 数据接收和发送 轮询方式 中断方式 DMA方式 其它说明 总结 目的 UART 异步串口 是单片机非常常用的一个功能 一般用作设备或模块间通讯的一种方式 通常所说的232或是485通讯从写
  • UART串口协议

    通用异步收发传输器 Universal Asynchronous Receiver Transmitter 通常称作UATR 是一种异步收发传输器 将数据由串行通信与并行通信间做传输转换 作为并行输入称为串行输出的芯片 UART是一种通用串
  • UART ISR Tx Rx 架构

    我让事情变得复杂了吗 我正在构建我的代码 以便通过 UART 从 8051 micro 与外围设备进行通信 外设响应主机的命令 一次只能响应一个命令 这是一个简单的发送和接收协议 tx1 rx1 tx2 rx2 tx3 rx3 每个 TX
  • IOError:[Errno 2]没有这样的文件或目录(当它确实存在时)Python [重复]

    这个问题在这里已经有答案了 我正在通过 python 中的 uart 传输文件文件夹 下面您可以看到简单的功能 但有一个问题 因为我收到如标题所示的错误 IOError Errno 2 No such file or directory 1
  • 英特尔伽利略裸机 UART

    我想编写一些 hello world 程序裸机申请于英特尔伽利略木板 当然 使用 UEFI 打印文本 到 UART 1 效果很好 但我想 手动 访问 UART 而不需要 UEFI 的任何帮助 在 QEMU 中我的代码运行良好 h file
  • GATT 配置文件和 UART 服务

    我是开发通过蓝牙连接到外围设备的移动应用程序的新手 我搜索到 GATT 是用于蓝牙LE 通信的相关配置文件 但我们的客户建议我们使用 UART 服务 现在我很困惑 1 这两件事是如何关联的 2 我们是否必须选择其中之一 如果是的话 每一个的
  • 如何将 microbit 与 BLE 连接并监听按钮按下事件?

    2021 年 11 月 28 日编辑 如果您需要使用蓝牙低功耗将 microbit 连接到计算机 并在单击按钮时执行操作 直接跳并跟随 ukBaz https stackoverflow com users 7721752 ukbaz的回答

随机推荐