UART协议快速扫盲(图文并茂+超详细)

article/2025/9/17 11:56:24

文章目录

    • 1 UART发展历史
      • 1.1 早期的串行通讯设备
      • 1.2 早期的芯片级UART
      • 1.3 现代UART的发展
    • 2 预备知识
    • 3 协议层
      • 起始位
      • 数据
      • 校验位
      • 停止位
      • 波特率
    • 4 传输过程
    • 5 物理层
    • 6 优缺点

1 UART发展历史

1.1 早期的串行通讯设备

早期的电报机器使用长度可变的脉冲信号进行数据传输,比如摩斯电码;

摩斯电码

后来电传打印机(teleprinters )普遍使用5、6、7或8个数据位来表示各种字符编码,最终成为计算机外围设备。电传打字机( teletypewriter 简称 tty)成为小型计算机十分出色的通用I/O设备。

Teletypewritter

由于历史的发展原因,早期在Unix终端是一个名字为ASR33的电传打字机,而电传打字机的英文单词为Teletype(或Teletypewritter),缩写为tty。因此,终端设备也被称为tty设备。这就是TTY这个名称的来源。

1.2 早期的芯片级UART

DEC(Digital Equipment Corporation)公司的Gordon Bell 为该公司的PDP系列计算机设计了第一个UART,不过体积庞大,UART的线路占据了整个电路板;

后来DEC将串行线路单元的设计浓缩为早期的UART单芯片,以方便自己使用。

DEC公司Logo

DEC是美国一家计算机公司;

西部数据(Western Digital)公司在1971年左右将其开发为第一个广泛可用的UART单芯片 WD1402A。这是中型集成电路的早期产品。

Western Digital是美国计算机硬盘驱动器制造商和数据存储公司。

1.3 现代UART的发展

2000年代开始,大多数IBM或者相关的计算机都删除了其外部RS232的COM端口,将其替换为带宽性能更加出色的USB端口;

早期带RS232的PC

对于仍然需要RS-232串行COM端口的用户,现在通常使用外部USB转UART转换器,常见的有CH340,Silicon Labs 210x的驱动程序,现在很多处理器和芯片都内置了UART。

2 预备知识

通用异步收发传输器Universal Asynchronous Receiver/Transmitter,通常称为UART),在UART通信中,两个UART直接通信。

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

这里只需要两条线RX/TX即可在两个UART之间传输数据。具体如下图所示;

3 协议层

UART传输的数据被封装成数据包。每个数据包包含1个起始位,5~9个数据位(取决于UART的具体设置),一个可选的奇偶校验位以及1个或2个停止位,具体如下图所示;

在这里插入图片描述

起始位

UART数据传输线通常在不传输数据时保持在高电平

为了开始数据传输,发送端UART在一个时钟周期内将传输线从高电平拉低到低电平

当接收端UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据位中的每一位数据。

数据

数据位包含正在传输的实际数据。如果使用奇偶校验位,则可以是5位,最多8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。

在大多数情况下,数据首先以低有效位发送。

校验位

在串口通信中一种简单的检错方式。

有四种检错方式:偶校验奇校验高校验低校验。当然没有校验位也是可以的。

对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

举个例子,如果数据是011,则满足;

偶校验,校验位为0,保证逻辑高的位数是偶数个。

奇校验,校验位为1,这样就有3个逻辑高位。

具体如下图所示;

高位和低位不是真正的检查数据,而是强行将校验位设置为逻辑高或者逻辑低。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

停止位

发送端UART将数据传输线从低电压驱动到高电压至少持续两位数据的时间宽度来表示整个数据包的传输已经结束。

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

波特率

波特率是串口数据的传输速度,即Bit/s,常见的波特率有:9600,19200,38400,57600,115200,当然还有很多波特率,不再一一给出;

假设目前UART的配置为,1个起始位,8个数据位,0个校验位,1个停止位,那么9600的波特率,可以计算出每一位数据的时间宽度为:
T d = 1 9600 ∗ 1000 = 104 u s T_d = \cfrac{1}{9600}*1000 = 104us Td=960011000=104us
那么传输一个字节(也就是10 bit 数据)需要的时间为 1.04 毫秒。

下面用串口抓取了UART的TX上的信号,其中一位数据的时间宽度为26微秒,具体如下图所示;

则可以简单计算得到;
1 26 u s = 38461 \cfrac{1}{26us}=38461 26us1=38461
因此波特率大概为 38400;

下表是各个波特率下数据位时间宽度;

TimeBaud Rate
3333µs (3.3ms)300
833µs1200
416µs2400
208µs4800
104µs9600
69µs14400
52µs19200
34µs28800
26µs38400
17.3µs57600
8µs115200
4.34µs230400

4 传输过程

发送端UART从数据总线转换并行数据:

发送端UART将起始位奇偶校验位停止位添加到数据包中:

整个数据包从发送端UART串行发送到接收端UART;接收端UART按照预先配置好的波特率对数据线进行采样:

接收端UART解析接收的数据,丢弃数据包中的起始位,奇偶校验位和停止位:

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

5 物理层

UART、RS232、RS485在串口通信中,主要区别是电平的不同,其中UART通常使用TTL电平,下面介绍这几个存在的差异;

TTL

TTL全名是晶体管-晶体管逻辑集成电路(Transistor-Transistor Logic)

  • 输入高电平最小2V,输出高电平最小2.4V,典型值3.4V;

  • 输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V。

RS232

RS232 逻辑1电平(MARK)=-3V~-15V,逻辑0电平(SPACE)=+3~+15V;

同样的,对于传输数据0x55,即二进制的01010101,RS232和TTL的区别如下;

RS485

RS485是差分信号进行串行传输;

  • 逻辑1以两线间的电压差为+(2~6)V表示;
  • 逻辑"0"以两线间的电压差为-(2~6)V表示;

在工业通信中,使用RS485比较多,因为RS485是差分信号,可以抑制共模干扰,因此在恶劣的环境中拥有很好的抗干扰性,比较稳定;

6 优缺点

没有任何通信协议是完美的,以下是UART的一些利弊,可帮助您确定它们是否适合您的项目需求:

优点

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

缺点

  • 数据帧最大支持9位数据;
  • 不支持多主机或多从机的主从系统;

http://chatgpt.dhexx.cn/article/OyaZtpX5.shtml

相关文章

UART协议学习

通信协议分层 物理层 物理层规定通讯系统具有的机械、电子功能部分的特性,确保原始数据在物理媒体的传输。如RS232、RS485等就是电气协议,规定了数据传输时的电平标准,网络上许多博主将UART看作一个协议族,这些电气协议都是UART…

c语言模拟uart协议的收发

这篇文章注重思想的讲解,理解下来肯定对uart协议有一个更深的认识。 uart协议,通常用在嵌入式设备之间的通信。像下面这样: 问题一:uart是全双工还是半双工? 你完全可以将两个设备想象成两个人,上图中的两条线想象成A和B的对话。A对B说话和B对A说话的一个场景。问大家一个问题…

UART协议详解

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。 定义:UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主…

Linux·UART协议

目录 一、什么是UART? 二、UART的帧格式 2.1 为什么UART的传输需要起始位? 2.2 UART基本的数据形式 2.3 为什么UART的数据位可变? 三、UART的波特率 3.1 什么是波特率 3.2 如何换算波特率 3.3 波特率和采样频率是一样的吗&#xff1f…

通信协议(一)——UART协议

1、知识点 基础部分参考:UART串口发送模块设计Verilog_发光中请勿扰的博客-CSDN博客_uart设计verilog (1)什么是串口(UART)? 串口作为常用的三大低速总线(UART、SPI、IIC)之一&#…

uart协议学习,从了解到入门,看这篇文章

uart协议从了解到入门 背景知识介绍:1、并行和串行的意思:2、串转并和并转串传输:3、单工、半双工、全双工区别: uart协议介绍1、uart简介2、uart通信3、uart工作原理 uart的优缺点 背景知识介绍: 1、并行和串行的意思…

FPGA实现uart协议

简介 使用verilog实现uart协议,能够和pc进行通信,实现串口回环功能,各参数设置如下: 波特率:115200数据位:8停止位:任意校验位:无 系统时钟为50M,115200波特率下&…

协议篇之UART协议

协议篇之UART协议 一、写在前面二、UART协议简介三、UART协议数据帧结构3.1 UART发送过程3.2 UART接收过程3.3 UART传输速率 四、UART收发模块设计4.1 UART接收模块设计4.2 UART发送模块设计4.3 UART回环顶层模块4.4 UART回环上板验证 五、写在最后 一、写在前面 由于设计需要&…

UART通信协议

UART通信协议 UART ( universal asynchronous receiver-transmitter)是一种采用异步串行通信方式的通用异步收发传输器;它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。UART串口通信需要两根信号线来实现…

UART协议讲解

UART协议讲解 一、什么是UART协议二、通信方式的分类1、串行通信(一)、同步通信和异步通信(二)、单工和半双工以及全双工 2、并行通信 三、UART协议具体介绍1、UART数据传输的格式2、UART电平标准 三、UART的优缺点四、参考 一、什…

【数字IC】深入浅出理解UART协议

深入浅出理解UART协议 一、什么是UART?二、UART的帧格式2.1 为什么UART的传输需要起始位?2.2 UART基本的数据形式2.3 为什么UART的数据位可变? 三、UART的波特率3.1 什么是波特率3.2 如何换算波特率3.3 波特率和采样频率是一样的吗&#xff1…

最详细的 UART协议 分析在这里!

1. 协议基础 1.1. 协议简介 UART是“Universal Asynchronous Receiver/Transmitter”,通用异步收发器的缩写。在19世纪60年代,为了解决计算机和电传打字机通信,Bell发明了UART协议,将并行输入信号转换成串行输出信号。因为U…

UART协议

UART协议 简介 UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧…

【云域网络社区】云域网络社区APP

【软件名称】云域社区 【功能介绍】资源分享,游戏交流交友 【下载地址】http://sss.shmmec.com/apk.apk 图片

怎么划分领域、子域、核心域、通用域和支撑域

怎么划分领域、子域、核心域、通用域和支撑域 如何理解领域和子域?什么是领域什么是子域怎么划分领域和子域如何理解核心域、通用域和支撑域?为什么要划分核心域、通用域和支撑域 总结 DDD 的知识体系提出了很多的名词,像:领域、子…

网络安全-域服务器(二)

域服务器: 域服务器(一):网络安全-域(一)_IT之一小佬的博客-CSDN博客域服务器(二):网络安全-域服务器(二)_IT之一小佬的博客-CSDN博客 域 11.O…

网课管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 3. 功能简介 用户中心 1.1用户注册:用户需要注册才能登陆进入web 1.2用户登录:通过判断匹配来进…

如何搭建域服务器

实验名称:如何搭建域服务器 实验环境:wind2003*2 实验过程: 由于Windows Server 2003在默认的安装过程中DNS是不被安装的,所以我们需要手动去添加, 添加方法如下:“开始—设置—控制面板—添加删除程序”&#xff…

搭建域环境(win)

目录 常见域环境是用:win2012 win7 win2003 本blog环境:Windows Server 2012 R2 and Win2008 1.Window Server 2012 R2 服务器配置 1)变更计算机名DC(用于存储活动目录数据库的计算机) 2)设置服务器…

网络教学管理系统

1、项目介绍 网络教学管理系统拥有三种角色 管理员:专业管理、班级管理、学生教师管理、公告管理、留言板管理、学习资料管理、教学视频管理、试题管理等 教师:系统留言、发布作业等 学生:可以查看作业视频、登录注册、下载作业资料等 2、…