当前位置: 首页 > news >正文

UART通讯简介

UART全称Universal AsynchronousReceiver/Transmitter,通用异步收发传输器。
一、工作原理
和其它串口一样,数据按照二进制从低位到高位一位一位的传输,能将要传输的数据在串行通信与并行通信之间加以转换,能够灵活地与外部设备进行全双工数据交换。如要传输一字节的数据10001110,它是从低位0开始,一位一位的传输过去。
在 UART 通信中,两个 UART 直接相互通信。发送端将来自控制设备(如 CPU)的并行数据转换为串行形式,接着将其串行传输到接收端,然后接收端将串行数据转换回并行数据以供接收设备使用。
数据从一个UART的发送引脚(Tx) 流向另一个UART的接收(Rx) 引脚:如图11-1,UART属于异步传输数据,没有时钟信号将发送的位输出与接收的位采样同步,发送与接收使用各自的时钟。发送端将开始和停止位添加到传输的数据帧中,通过数据帧中定义的开始位和结束位,接收端知道何时开始读取这些位。每个数据帧包含 1 个起始位、5 到 9 个数据位(取决于 UART的设置,如果有奇偶校验位是5到8,没有则是5到9)、一个可选的奇偶校验位和 1 个或 2 个停止位。
在这里插入图片描述
起始位:UART 数据传输线在不传输数据时通常保持在高电平。要开始发送数据时,发送端UART先在一个时钟周期内将传输线从高电平拉到低电平。当接收端UART 检测到从高到低的电压转换时,它开始以设置好的波特率的频率读取数据帧中的位。

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

校验:奇偶校验位是接收端UART 判断数据在传输过程中是否发生变化的一种方式。位会因电磁辐射、不匹配的波特率或长距离数据传输而发生改变。接收端 UART 读取数据帧后,检查数据部分值为1的个数是奇数还是偶数。当奇偶校验位与数据匹配时,UART 知道传输没有错误。

停止:发送端UART 将数据传输线从低电平拉到高电平来表示整个数据包的传输已经结束。

二、通讯分类:
单工,UART只用Tx或Rx其中一根线进行通讯,也就是只作接收或发送;
在这里插入图片描述

半双工,UART在同一时间,只用作发送或接收;
在这里插入图片描述
全双工,UART在发送器给接收器发送数据的时候,接收器也可以给发送器发送数据,
在这里插入图片描述
三、电平标准
UART使用标准的TTL/CMOS逻辑电平(05V,03.3V,02.5V或01.8V)来表示数据,1表示高电平,0表示低电平。为了提高抗干扰能力、提高传输的距离,通常也会TTL/CMOS逻辑电平转换为RS-232逻辑电平,315V表示0,-3-15V表示1。如图11-4示例
在这里插入图片描述

四、寄存器配置
参考我早期发布文章https://blog.csdn.net/weixin_48408892/article/details/127084085?spm=1001.2014.3001.5501
主要设置分频寄存器进而设置波特率,配置数据位、校验位、停止位的寄存器,收发使能、数据接收中断等等。

五、常用USB转串口硬件电路参考如下图11-5
在这里插入图片描述

http://www.lryc.cn/news/5039.html

相关文章:

  • 80 90后表示真干不过,部门新来的00后已经把我卷奔溃了,不想干了····
  • Python中2.x 与 3​​.x 版本区别?
  • 性能指南笔记一
  • es数据导入导出
  • Python3入门教程||Python3 字符串||Python3 列表
  • API 的安全性
  • Linux驱动->设备树
  • 一天一道力扣题
  • 算法leetcode|36. 有效的数独(rust重拳出击)
  • 都说爱有回音,这次情人节驱动人生宠你!
  • npm安装依赖报错 npm code ERESOLVEnpm ERESOLVE unable to resolve dependency tree
  • 【项目设计】—— 基于Boost库的搜索引擎
  • 全网详解MyBatis-Plus updateById方法更新不了空字符串或null的解决方法
  • 联想K14电脑开机全屏变成绿色无法使用怎么U盘重装系统?
  • Spring Boot HTTP 400排查
  • 【手撕源码】vue2.x中keep-alive源码解析
  • ROS2机器人编程简述humble-第四章-BASIC DETECTOR .3
  • 【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(双向LSTM,附完整代码和数据集)
  • 【Linux】多线程编程 - 同步/条件变量/信号量
  • ES优化方案
  • 从数据备份保护到完整生命周期管理平台,爱数全新发布 AnyBackup Family 8
  • Go 微服务开发框架 DMicro 的设计思路
  • 浅谈功能测试
  • UDP的详细解析
  • 史上最详细JUC教程之Synchronized与锁升级详解
  • Vue|初识Vue
  • 在职阿里6年,一个29岁女软件测试工程师的心声
  • (C语言)自定义类型,枚举与联合
  • node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。
  • 初始C++(三):引用