UART代表通用异步接收器/发送器。它不是像SPI和I2C这样的通信协议,而是微控制器中的物理电路或独立的IC。UART的主要目的是发送和接收串行数据。关于UART最好的一点是其仅使用两条线在设备之间传输数据。

UART通信导论

在UART通信中,两个UART直接相互通信。发送UART将来自控制设备(如CPU)的并行数据转换为串行形式,以串行方式将其发送到接收UART,然后由接收UART将串行数据转换回并行数据以用于接收设备。只需要两条线即可在两个UART之间传输数据。数据从发送UART的Tx引脚流到接收UART的Rx引脚:

UART异步传输数据意味着没有时钟信号使发送UART的输出位与接收UART采样位同步。发送UART取代了时钟信号,将开始位和停止位添加到正在传输的数据包中。这些位定义了数据包的开始和结束,因此接收UART知道何时开始读取这些位。当接收UART检测到起始位时,它将开始以称为波特率的特定频率读取输入位。波特率是数据传输速度的度量,以每秒的比特位(bps)表示。两个UART必须以大约相同的波特率工作。在位的时序变得太远之前,发送和接收UART之间的波特率只能相差约10%。另外,还必须将两个UART配置为发送和接收相同的数据包结构。

UART是如何工作的?

将要发送数据的UART从数据总线接收数据。数据总线用于通过其他设备(例如CPU、内存或微控制器)将数据发送到UART。数据以并行形式从数据总线传输到发送UART。发送UART从数据总线获取并行数据后,它将添加起始位、奇偶校验位和停止位,以创建数据包。接着,数据包在Tx引脚上逐位串行输出。接收UART在其Rx引脚上逐位读取数据包。然后,接收UART将数据转换回并行形式,并删除起始位、奇偶校验位和停止位。最后,接收UART将数据包并行传输到接收端的数据总线:

UART传输的数据被组织成数据包,每个数据包包含1个起始位、5到9个数据位(取决于UART)、1个可选奇偶校验位,以及1个或2个停止位

起始位

UART数据传输线通常在不传输数据时保持在高电压电平。为了开始数据的传输,发送UART在一个时钟周期内将传输线从高电平拉低到低电平。当接收UART检测到高电压到低电压的转换时,它开始以波特率的频率读取数据帧中的位。

数据帧

数据帧包含正在传输的实际数据。如果使用奇偶校验位,则数据帧的长度可以是5位,最多可达8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。在大多数情况下,数据首先以最低有效位发送

奇偶校验位

奇偶校验描述一个数的性质,分为偶数或奇数。奇偶校验位是接收UART判断在传输期间是否有任何数据更改的一种方式。可以通过电磁辐射、不匹配的波特率或长距离数据传输来更改位。在接收UART读取数据帧后,它将对值为1的位数进行计数,并检查其总数是偶数还是奇数。如果奇偶校验位为0(偶校验),则数据帧中的1位应总计为偶数。如果奇偶校验位为1(奇校验),则数据帧中的1位应总计为奇数。当奇偶校验位与数据匹配时,UART知道传输没有错误。但是,如果奇偶校验位为0,且总数为奇数;或者如果奇偶校验位为1,且总数为偶数,则UART知道数据帧中的位已经更改。

停止位

为了向数据包的结尾发出信号,发送UART在至少两个位的持续时间内将数据传输线从低电压驱动到高电压。

UART传输的步骤:

1. 发送UART从数据总线并行接收数据:

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

3. 整个包从发送UART串行发送到接收UART。接收UART以预先配置的波特率对数据线进行采样:

4. 接收UART丢弃数据帧中的起始位、奇偶校验位和停止位:

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

UART的优缺点

优点:1仅使用两根传输线;2无需时钟信号;3具有奇偶校验位以允许进行错误检查;4只要双方都设置好数据包的结构,即可改变其数据包结构;5有完整的文档且是可广泛使用的方法。

缺点:1数据帧的大小最大为9位;2不支持多个从属系统或多个主系统;3每个UART的波特率必须在彼此的10%之内。

发送和接收_通用异步接收器/发送器(UART)相关推荐

  1. cubemx串口的发送与接收_串口收发模块设计

    串口收发模块设计 作者:巩文宏 公众号:数字积木 该串口收发模块有串口发送模块,串口接收模块,波特率生成模块,发送数据fifo模块,接收数据的fifo模块组成. 默认配置下,要求输入的参考时钟为50M ...

  2. 四、s3c2440 裸机开发 通用异步收发器UARN

    四.通用异步收发器UARN 原文地址 http://blog.csdn.net/woshidahuaidan2011/article/details/51137047 by jaosn Email: ...

  3. 基于FPGA通用异步收发器UART设计

    摘要 通用异步收发器(UART)是一种能同时支持近距离和远距离传输的异步串行接口,具有传输速率较高.传输距离长.抗干扰性能好.电路结构简单以及节省布线资源等优点.然而,随着社会的发展,信息传输容量越来 ...

  4. UART 和 USART 的区别 == 通用异步收发传输器 通用同步/异步串行接收/发送器

    UART 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分.它将要传输的资料在串 ...

  5. rocket mq 监听端口_如何使用Jmeter实现MQ数据的发送和接收?性能测试实战篇

    JMeter是性能测试中被普遍使用的一种工具,常用于压力测试.该工具具有丰富的扩展插件用以满足不同情况下性能测试的需求.消息队列(Message Queue)简称为MQ,作为目前的主流中间件,在很多软 ...

  6. 串口接收标志位语句_如何获取串口的发送和接收的标志位?

    我用C#写了一个小的串口调试软件,并在51的板子上调试成功了,但是换到STM32F103上不行了,由于刚学STM32,还很不熟悉,所以还请各位能否告诉我如何获取串口的发送和接收的标志位.或是帮我把下面 ...

  7. hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...

    寻求更简洁舒适的阅读体验,请移步Mculover666的个人博客: [STM32Cube_06]使用USART发送和接收数据(查询模式)​www.mculover666.cn 本篇文章主要介绍如何使用 ...

  8. 仿qq邮箱源码程序_小伙子利用C++实现邮件程序发送和接收

    3个通过POP发送和接收邮件的VC++实例程序:三个实例分别如下: 1.pop3高级程序开发是一个能够从pop3服务器中检查所有邮件,并且可以查看邮件内容,也可以删除邮件但是没有实现附件的接收,使用时 ...

  9. 通用异步 Windows Socket TCP 客户端组件的设计与实现

    编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择.但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱 ...

最新文章

  1. 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]
  2. python基础学习(五)第一次修改
  3. 收藏一下mybatis全局参数配置
  4. 对理想团队模式的构想以及对软件流程的理解
  5. Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
  6. vb 获取设备音量_自制 Windows 10X 启动盘,提前体验微软折叠设备新系统
  7. 【数模】模糊综合评价模型
  8. 从CSV和VCF文件中获取联系人信息
  9. 日本经验 | 距离最新潮的老年电竞,中国还有多远?
  10. 窦唯与女儿【节选】揭秘男星与女儿之间的奇闻
  11. l计算机等级考试电子邮箱填写什么,计算机等级考试详解:电子邮箱的地址组成结构!...
  12. 怎么创建账户Crowd 和 JIRA、Confluence、Fisheye and Crucible、GitLab共享账户已经集成登入
  13. CSGO/steam游戏搬砖项目入行前必看知识点汇总(一)
  14. GitHub下载代理设置
  15. 微信运动刷步教程 QQ健康刷步数(一)之安卓版本 - 乐运动
  16. 裁剪TIF图像,代码简单,易懂(Arcpy)
  17. linux系统getopt函数详解
  18. 在线订舱物流详情 广州力其
  19. c51时钟数码管显示流程图_基于51单片机的8位数码管电子时钟仿真图及源代码详细资料概述...
  20. 数据分析达人博客大全

热门文章

  1. [译]简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站
  2. 精通Android自定义View(十一)绘制篇Canvas分析之裁剪
  3. java基础—Date类的常见方法演示
  4. Codewars-Regex Password Validation(正则检验密码格式)
  5. Mr.J-- jQuery学习笔记(二十)--节点操作方法
  6. 简单工厂模式、工厂方法模式与抽象工厂模式的区别(转)
  7. 清北学堂dp图论营游记day4
  8. Django框架 之基础入门
  9. 最大化最小值 | | 最小化最大值
  10. Loadrunner11完美破解小笔记