首页 > 其他分享 >协议基础——UART

协议基础——UART

时间:2024-09-08 13:50:05浏览次数:5  
标签:协议 异步 UART 基础 通信 单工 传输 串行

目录

背景知识

协议

串行-并行

单工-半双工-全双工

同步-异步

UART协议

UART引脚介绍及连接

UART帧结构

UART波特率

UART传输方式

UART通信前的约定

UART通信举例


背景知识

协议

在了解UART协议之前,我们首先要清楚什么是协议。

那什么是协议呢?

协议简单来说是标准,是规定,是”语言“。

双方遵守协议,才能友好交流,有效传达信息。

如果不遵守协议,就是不在同一个频道,鸡同鸭讲,无效沟通。

举个例子:

英文中“apple”表示苹果,你跟不懂中文的美国佬讲中文“苹果”,我想他一定会懵逼。

但当你准确地说出英文“apple”时,我相信他可以听懂了,因为你们用的是同一种语言,遵守了同一种协议。

协议我们现在清楚了,简单理解就是通信语言,双方遵守协议,用同一种通信语言,才有可能有效传输信息。

那什么是UART呢?

UART英文全称(Universal Asynchronous Receiver/Transmitter)

Universal是通用的

Asynchronous是异步的

Receiver是接收器

Transmitter是发射器

把它们连起来,Universal Asynchronous Receiver/Transmitter就是通用异步收发器

UART协议是一种串行全双工异步通信协议。

串行-并行

串行全双工异步通信协议,这里边的“串行”是什么意思呢?

串行表示串行通信,通信双方一般有两种通信方法

并行通信

串行通信

并行通信的传输原理是数据各个位同时传输

串行通信的传输原理是数据按位顺序传输

用核酸检测举例:

比如有8个人要去进行核酸检测,

并行通信相当于拥有8个检测通道,一次同时可检测8人,8人1次检测完成。

串行通信相当于只有1个检测通道,一次只能够检查1人,8人需要检查8次。

从上边例子我们可以明显发现并行检测速度(通信速度)比串行快,一次同时查8个,这就是并行通信的优点:通信速度快。

同时我们又发现,同是8个人检查,并行需要占用8个检测通道(引脚资源),串行只需要1个,占用的通道少,这就是串行通信的优点:占用引脚资源少

万物相生相克,并行的优势就是串行的劣势,串行的优势也是并行的劣势。

所以

并行通道的缺点是占用引脚资源多

串行通信的缺点是通信速度较慢

单工-半双工-全双工

相信大家已经理解串行这个概念了,

接下来迎接我们的是串行全双工异步中的”“全双工”,什么是全双工呢?

通信按照数据传送方向,分为:

单工

半双工

全双工

所谓单工,单工单工,单向工作,数据传输只支持数据在一个方向上传输

有单就有双,双工双工,那就是双向工作,假如我们手里只有单工,那怎么实现双工呢?

假设我们拿1个单工出来,试着调换线路方向,上一时刻数据传输方向是A到B,下一时刻数据传输方向是B到A,这样就实现了双向工作。

这种允许数据在两个方向上传输,但是,在某一时刻只允许数据在一个方向上传输的通信方式就是半双工,实际上它是一种切换方向的单工通信。

但是这样切换,好累啊,我不如直接拿2个单工出来,1个单工的传输方向是A到B,1个单工的方向是B到A,这样就不用一直切换了,在同一时刻,可以从A传输数据到B,也可以从B传输数据到A。

这种允许数据同时在两个方向上传输,就是全双工,实际上它是两个单工通信方式的结合,它要求发送设备和接收设备都要有独立的接收和发送能力。

同步-异步

全双工搞定了,现在串行全双工异步只剩下“异步”了,什么是异步呢?

异步异步,就是不同步,而同步指的是两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。在计算机系统中时间变化离不开时钟信号,所以同步离不开时钟信号。于是,新的通信分类方式出现了。

通信按照是否带时钟同步信号传输分为:

同步通信

异步通信

同步通信时带时钟同步信号传输的通信方式(同步通信除了数据线之外,还要有时钟线,在串行同步通信中,数据的每一位传输是随着时钟信号来传输的,比如说,我们以时钟信号上升沿作为触发数据传输的条件,时钟信号的上升沿来了,A传输1个比特到B,下一个上升沿来了,又传输一个比特,即数据传输是根据时钟信号(同步信号)来确定的)

异步通信是不带时钟同步信号传输的通信方式(由于没有时钟同步信号,那通信双方就必须事先进行约定,像UART是异步通信,因此通信双方必须约定好波特率(数据传输速度),才能保证传输没有错误。如果通信双方没有进行约定,比如A的波特率是8bits/s,也就是发送或接收1个bit需要1/8秒,而B没有跟A约定,所以不知道A的波特率,假设B的波特率是4bits/s,也就是发送或接收1个bit需要1/4秒,A向B发送了二进制数据11,耗时1/4秒,但是1/4秒B只接收一个bit,所以B端收到的数据只是二进制数据1,这样在数据传输过程中就出现了数据丢失)

一般来说,

当数据量大、实时性要求高、传输距离短时,可采用同步通信

当数据量小、实时性要求低、传输距离长时,可采用异步通信

UART协议

好,基本概念清楚了,接下来开始正题

UART引脚介绍及连接

TX是Trasmit的缩写,表示发送,RX是Receive的缩写,表示接收,

TxD是Trasmit Data的缩写,RxD是Receive Data的缩写,

所以TX是发送引脚,RX是接收引脚,电平类型相同的引脚接线如下图。

UART帧结构

兄弟们,梦回小学,看图说明

空闲状态:高电平1

起始位(1bit):低电平0

数据位(5~8bit)

校验位(0~1bit)

模式说明
No Parity(无校验)校验位占0bit,数据位紧接着就是停止位
Odd Parity(奇校验)校验位占1bit,数据位中1的个数为偶数则为1,反之为0
Even Parity(偶校验)校验位占1bit,数据位中1的个数为奇数则为1,反之为0
Mark Parity(1校验)校验位始终为1
Space Parity(0校验)检验位始终为0

停止位(1~2bit):高电平1

UART波特率

数据传输速率使用波特率表示,单位bps(bits per second)每秒比特数。

可配置选择的有8种波特率:

1200,2400,4800,9600

19200,38400,57600,115200

UART传输方式

LSB(Least Significant Bit,最低有效位),低位优先

如十六进制0x36,对应二进制0b00110110,传输时发送bit的顺序是:

0→1→1→0→1→1→0→0,

从最低位到最高位。

UART通信前的约定

由于UART传输机制中仅定义了数据帧,没有定义控制帧,

所以当两个设备需要通过UART协议进行通信时,它们需要约定好以下内容:

(1)比特宽度(每一位信号的时间长度T,波特率=1/T),即规定好波特率

(2)帧结构中每一项的具体位数

(3)是否有检验位(无/奇/偶/0/1校验)

UART通信举例

通信前规定两个设备的波特率为115200bps

起始位1bit

传输ASCII码,数据位为8bit

停止位1bit

'H'字符ASCII码为0x48,'i'字符ASCII码为0x69

标签:协议,异步,UART,基础,通信,单工,传输,串行
From: https://blog.csdn.net/muacxj/article/details/141958050

相关文章

  • 信息学奥赛初赛天天练-86-NOIP2014普及组-基础题5-球盒问题、枚举算法、单源最短路、D
    1NOIP2014普及组基础题521把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用K表示)()例如,M=7,N=3时,K=8;在这里认为(5,1,1)和(1,5,1)是同一种放置方法。问:M=8,N=5时,K=()22如图所示,图中每条边上的数字表示该边的长度,则从......
  • 信息学奥赛初赛天天练-86-NOIP2014普及组-基础题5-球盒问题、枚举算法、单源最短路、D
    信息学奥赛初赛天天练-86-NOIP2014普及组-基础题5-球盒问题、枚举算法、单源最短路、Dijkstra算法、Bellman-Ford算法PDF文档公众号回复关键字:202409081NOIP2014普及组基础题521把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(......
  • java基础之有参构造和无参构造
    通过三只猫打印的情况来对比1.无参构造的属性再main函数中创建2.有参构造在小括号中创建packagebegan;publicclasstext{publicstaticvoidmain(String[]args){//创建第1只小猫//无参Catcatcat1=newCatcat();cat1.nam......
  • Unity框架(UI框架)基础版
    目的当游戏开发者再创建UI面板的时候一般是有一套流程的而为了简化这个流程演化出UI框架1、制作UI面板基类帮助我们自动化的查找组件,监听事件,无需每次写大量冗余代码2、制作UI管理器管理所有UI面板,UI面板的显示隐藏都通过UI管理器来进行管理基础版代码:UI基类:usingSys......
  • 无线网络技术基础(一)无线网络技术概述
      无线网络技术,即无线通信技术和计算机网络技术不断融合发展的结果。一、计算机网络技术1.出现背景:电话网络  传统的电话网络,主要采用的是“虚电路”技术。在通话过程中,通话双方的“链路”是独占的,所有的语音内容均是经过相同的传输链路。如同在通话双方建立起一条......
  • 数据结构基础讲解(二)——线性表之单链表专项练习
    本文数据结构讲解参考书目:通过网盘分享的文件:数据结构 C语言版.pdf链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwd=ze8e 提取码:ze8e 上一节我讲了线性表中顺序表的定义以及常用的算法,那么这节我将继续讲解顺序表中的链式结构以及常见的算法。数据......
  • 数据结构基础讲解(一)——线性表之顺序表专项练习
     本文数据结构讲解参考书目:通过网盘分享的文件:数据结构 C语言版.pdf链接:https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwd=ze8e提取码:ze8e目录前言一.线性表的定义二.线性表的基本操作三.线性表的顺序存储和表示四.顺序表中基本操作的实现1.顺序表......
  • MinIO基础配置及应用-.net 8
    MinIO是一种常见的对象存储的服务器,可以用来搭建网盘等服务。在本人配置MinIO环境时遇到过一些问题,在此处记录以下配置过程。本次配置使用docker进行。1.在电脑上安装和配置docker(我的服务器电脑是deepin系统,上面安装了宝塔面板)具体安装步骤在网上搜索即可,deepin官方有个wiki,里......
  • C语言入门:从函数基础到实践精通
    前言欢迎各位老铁和我一起进入C语言的世界,今天我们要讨论的是一个让你更好地理解程序组织方式的核心概念——函数。无论是简单的任务,还是复杂的计算,函数都是编程中不可或缺的一部分。在本篇文章中,我将从基础讲解函数的构成和用法,再深入探讨常用的函数类型及其实际应用。函数......
  • Manim基础
    使用winget安装manim环境wingetinstallpythonwingetinstallffmpegpython-mpipinstallmanim如果还需要利用Manim的LaTeX接口来渲染方程,还必须安装LaTeX。快速开始先创建一个项目目录,将文件夹命名为project:该文件夹是项目的根文件夹。它包含Manim运......