0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UART通信协议及其工作原理!

柴火创客空间 来源:柴火创客空间 2023-03-23 11:15 次阅读

"什么是UART

通用异步接收器/发射器,通常称为UART,是一种串行,异步,全双工通信协议,广泛用于嵌入式领域。"

UART连接

UART通道有两条数据线。每个设备上都有一个 RX 引脚和一个 TX 引脚(RX 用于接收,TX 用于发送)。每个设备的 RX 引脚连接到另一个设备的 TX 引脚。请注意,没有共享时钟线!这是通用异步接收器发送方的“异步”方面。

d9ac1ee4-c8af-11ed-bfe3-dac502259ad0.png

作为一种异步串行通信协议,UART的工作原理是逐位传输传输数据的每个二进制位。在UART通信协议中,当信号线上的状态为高电平时,表示“1”,当信号线上的状态为低电平时,表示“0”。

例如,当使用UART通信协议传输一个字节的数据时,在信号线上产生八种高电平和低电平组合。

串行通信是指利用一条传输线逐位顺序传输数据,或者两条信号线可以形成全双工通信,如RS232。特点是通信线路简单,使用简单的电缆即可实现通信,成本降低,适合远距离通信的应用,但传输速度慢。

异步通信以一个字符作为传输单元。通信中两个字符之间的时间间隔不是固定的,但同一字符中两个相邻位之间的时间间隔是固定的。一般来说,两个UART设备之间的通信不需要时钟线。此时,需要在两个UART设备上指定相同的传输速率,以及空闲位,起始位,奇偶校验位和结束位,即遵循相同的协议。

数据传输速率以波特率表示,即每秒传输的位数。例如,如果数据传输速率为120个字符/秒,每个字符为10位(1个起始位,7个数据位,1个校验位,1个停止位),则其传输的波特率为10×120 = 1200个字符/秒= 1200波特。

数据通信格式

d9c03870-c8af-11ed-bfe3-dac502259ad0.png

起始位

d9d38ae2-c8af-11ed-bfe3-dac502259ad0.png

每次通信开始时,发送方都会发送一个逻辑“0”信号(VOL),指示传输字符的开始。由于总线在空闲时处于高电平,因此在开始通信时首先发送与空闲状态明显不同的信号,即VOL。

数据位

d9e8d28a-c8af-11ed-bfe3-dac502259ad0.png

起始位之后是我们要传输的数据。数据位可以是 5、6、7、8、9 位等。形成一个字符(通常为 8 位)。如 ASCII 码(7 位)和扩展 BCD 码(8 位)。最低位先发送,最高位最后发送。使用低电平表示“0”,使用高电平表示“1”以完成数据位的传输。

奇偶校验位

da03a0f6-c8af-11ed-bfe3-dac502259ad0.png

将此位添加到数据位后,“1”位的位数应为偶数(偶数奇偶校验)或奇数(奇偶奇偶校验),以验证数据传输的正确性。校验位其实就是调整号,串口校验分为几种方式:

无奇偶校验

奇偶校验:如果数据位中“1”的数字是偶数,则奇偶校验位为“1”,如果“1”的数字为奇数,则奇偶校验位为“0”。

偶数奇偶校验:如果数据中“1”的数字是偶数,则奇偶校验位为“0”,如果是奇数,则奇偶校验位为“1”。

标记平价:校验位始终为 1(不常用)。

平价:奇偶校验位始终为 0(不常用)。

停止位

da154f72-c8af-11ed-bfe3-dac502259ad0.png

它是字符数据的结束标记。它可以是 1 位、1.5 位或 2 位 VOH。由于数据是在传输线上定时的,并且每个设备都有自己的时钟,因此在通信中两个设备之间很可能会出现小的不同步。因此,停止位不仅指示传输结束,而且还为计算机提供了校正时钟的机会。停止位越多,数据传输越稳定,但数据传输速度越慢。

协议层

在协议层中,指定了数据包的内容,由起始位、主数据、校验位和停止位组成。双方的数据包格式必须一致,才能正常发送和接收数据。

波特率

由于异步通信中没有时钟信号,因此两个通信设备需要就波特率达成一致。常见的有4800、9600、115200等。

da272512-c8af-11ed-bfe3-dac502259ad0.png

通信的开始和停止信号:串行通信的数据包从开始信号开始,以停止信号结束。数据包的开始信号由逻辑0的数据位表示,数据包的停止信号可以用逻辑0的5.1、1、5.2或1个数据位表示,只要双方同意即可。

数据检查:在有效数据之后,有一个可选的数据校验位。由于数据通信相对容易受到外界干扰,传输数据偏斜,可以在传输过程中增加校验位来解决这个问题。检查方法包括奇数检查、偶数检查、0 检查(空格)、1 检查(标记)和无奇偶校验。

奇偶校验要求有效数据和奇偶校验位中的“1”数为奇数。

例如,8 01101001 位有效数据,总共有 4 个“1”。如果校验位为“1”,则最后传输的数据将是 8 位有效数据加上 1 位校验位,总计 9 位。偶数奇偶校验和奇数奇偶校验要求正好相反。帧数据和奇偶校验位中“1”的数目要求为偶数,如数据帧:11001010。此时,数据框中“1”的数量为4,因此偶数奇偶校验位为“0”。0 check 表示无论有效数据的内容是什么,校验位始终为“0”,1 check 表示校验位始终为“1”。

错误状态

以下是使用 UART 时可能会遇到的一些错误:

成帧错误

UART状态和控制寄存器将指示各种状态条件,包括与传输相关的错误状态。了解此协议可以更轻松地理解错误状态。它们包括成帧错误,当接收器在预期的位时间看不到停止位时会发生。如果数据线在预期停止位时未处于预期的高电平状态(取决于设置 UART 的数据和奇偶校验位的数量),则 UART 将发出成帧错误的信号。

奇偶校验错误

仅当 UART 处于奇偶校验模式时,才会引发奇偶校验错误。在奇偶校验模式下,发送一个额外的位来保存所有传输的数据位的奇偶校验(偶数或奇数)。如果数据位出错(1 表示 0 或 0 表示 1),则奇偶校验位将出错,并且将引发指定错误的错误。

溢出错误

当接收方在下一个字符到达之前不处理(从输入缓冲区中删除字符)时,会发生溢出错误。

中断条件

中断条件不一定是错误。当接收器输入处于逻辑低电平状态超过一定持续时间(通常超过一个字符时间)时,就会发生这种情况。对于接收者来说,它看起来像一个带有成帧错误的全0字符。在 python 代码中,您可以看到重置是通过发送中断触发的。这会将数据线拉低足够长的时间,以便MCLR被拉低并复位电路板。

以下是UART,I2c和SPI之间的区别

da420f1c-c8af-11ed-bfe3-dac502259ad0.png

您可能想知道,这三种通信中哪一种是最好的?是UART,I2C还是SPI?

没有“最佳”的通信外围设备,每个通信外设都有自己的优点和缺点。因此,用户应选择最适合其项目的通信外设。例如,如果您想要最快的通信外设,SPI 将是理想的选择。另一方面,如果用户想要连接多个设备而又不太复杂,I2C 将是理想的选择,因为它最多可以连接 127 台设备并且易于管理。

很多MUC控制器都支持UART协议,SPI协议和I2C协议,比如Seeeduino XIAO 控制器,用户可以根据自己的需求选择不同的接口设备。

da591072-c8af-11ed-bfe3-dac502259ad0.png

写在最后

不同通信协议都有其优点和缺点,根据应用场景合理选择即可,这样我们的MUC控制器就可以控制各种各样的硬件设备或传感器设备了!本期就介绍到这里,欢迎您持续关注“柴火创客”公众号,每天都有不一样的科技信息

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    858

    浏览量

    40269
  • uart
    +关注

    关注

    22

    文章

    1228

    浏览量

    101191
  • 串行通信
    +关注

    关注

    4

    文章

    566

    浏览量

    35299

原文标题:网络通信 | UART通信协议及其工作原理!

文章出处:【微信号:ChaiHuoMakerSpace,微信公众号:柴火创客空间】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    UART通信协议

    通信协议工作原理是将传输数据的每个字符以串行方式一位接一位的传输。如下图:其中每一位(bit)的意义如下:起始位:先发出一个逻辑“0”的信号,表示传输字符的开始。数据位:紧跟起始位之后。数据位的个数可以
    发表于 01-31 10:43

    UART通信协议是什么

      UART作为异步串口通信协议的一种,工作原理是将传输数据的每一个字符一位一位地传输。其中每一位(bit)的意义如下:  起始位:先发出一个逻辑“0”的信号,表示传输字符开始。  数据位:紧接着
    发表于 02-23 16:54

    怎样使用STM32CubeMX来配置USART串口通信协议

    UART串口通信协议工作原理是什么?怎样使用STM32CubeMX来配置USART串口通信协议呢?
    发表于 12-06 06:53

    UART通信协议的相关资料推荐

    一、前言1、简介  写的这篇博客,是为了简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯片的一些操作,在后面我会以我使用的STM32F429
    发表于 01-25 06:40

    KWP2000通信协议与读码器工作原理

    KWP2000通信协议与读码器工作原理
    发表于 12-17 20:48 12次下载

    CAN总线通信协议的分析和实现 CAN总线通信协议及其实现方法

    CAN总线通信协议的分析和实现 CAN总线通信协议及其实现方法
    发表于 09-04 08:45 40次下载
    CAN总线<b class='flag-5'>通信协议</b>的分析和实现 CAN总线<b class='flag-5'>通信协议</b>以<b class='flag-5'>及其</b>实现方法

    1-Wire通信协议工作原理及优势介绍

    了解1-Wire®通信协议工作原理及其相对于其他类型串行通信的优势、常见实施配置,以及主流的1-Wire应用
    的头像 发表于 10-09 04:10 6962次阅读

    基于STM32之UART串口通信协议(一)详解

    一、前言1、简介  写的这篇博客,是为了简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯片的一些操作,在后面我会以我使用的STM32F429
    发表于 11-30 14:36 22次下载
    基于STM32之<b class='flag-5'>UART</b>串口<b class='flag-5'>通信协议</b>(一)详解

    讨论使用UART通信协议的基本原则

    UART,即通用异步接收器/发送器,是最常用的设备间通信协议之一,正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作
    的头像 发表于 02-01 17:54 1004次阅读

    UART通信协议工作原理

    通用异步接收器/发射器,通常称为UART,是一种串行,异步,全双工通信协议,广泛用于嵌入式领域。 UART连接 UART通道有两条数据线。每个设备上都有一个 RX 引脚和一
    的头像 发表于 03-23 14:24 2664次阅读
    <b class='flag-5'>UART</b><b class='flag-5'>通信协议</b>的<b class='flag-5'>工作原理</b>

    【世说知识】一文搞懂UART通信协议

    UART,即通用异步接收器/发送器,是最常用的设备间通信协议之一,正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作
    的头像 发表于 02-02 10:46 2152次阅读
    【世说知识】一文搞懂<b class='flag-5'>UART</b><b class='flag-5'>通信协议</b>

    UART串口通信协议是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一种通信接口协议,用于实现串口通信。它是一种简单的、可靠的、广泛应用的串口
    的头像 发表于 03-19 17:26 1270次阅读

    简单认识UART串行通信协议

    的数据通信,特别是在嵌入式系统、计算机外设以及微控制器等场景中。本文将对UART串行通信协议进行详细的介绍,包括其基本原理、工作方式、参数设置、错误检测与纠正以及应用实例等方面。
    的头像 发表于 05-27 16:09 1969次阅读

    简单认识UART通信协议

    模块等多种设备之间的数据传输。以下是对UART通讯协议的详细简述,内容将涵盖其基本原理、工作方式、配置参数、常见应用以及与其他通信协议的比较。
    的头像 发表于 07-25 18:07 1354次阅读

    UART协议工作原理和应用场景

    UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)协议是一种广泛使用的串行通信协议,它允许计算机与外部设备之间通过串行接口进行数据传输。以下是对
    的头像 发表于 08-25 17:15 2443次阅读