UART详解

2023-05-16

UART

        通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。是一种异步全双工串行通信协议,它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上,它不是像SPI和I2C这样的通信协议,而是微控制器中独立的物理电路或独立的IC。UART工作原理是将数据的二进制位一位一位的进行传输。
        当两个设备使用UART串口通讯时,由Tx和Rx两根数据线组成,因为没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率进行通信。

硬件连接

        硬件连接比较简单,仅需要3条线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接,如下图所示:

  • TX:发送数据端,要接对面设备的RX。
  • RX:接收数据端,要接对面设备的TX。
  • GND:保证两设备共地,有统一的参考平面。
    在这里插入图片描述

通信协议

        UART作为异步串口通信协议的一种,工作原理是将数据的字节一位接一位地传输。协议如下:
在这里插入图片描述
空闲位:
        UART协议规定,当总线处于空闲状态时信号线的状态为1即高电平。
起始位:
        开始进行数据传输时发送方要先发出一个低电平0来表示传输字符的开始。因为空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
数据位:
        起始位之后就是要传输的数据,数据可以是5,6,7,8位,构成一个字符,一般都是8位。先发送最低位LSB,再发送最高位MSB(小端模式)。
奇偶校验位:
        数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:

  • 无校验(No Parity)
  • 奇校验(Odd Parity):如果数据位中1的数目是偶数,则校验位为1才能满足1的个数为奇数,如果1的数目是奇数,校验位为0。
  • 偶校验(Even Parity):如果数据为中1的数目是偶数,则校验位为0才能满足1的个数为偶数,如果1的数目是奇数,校验位为1。
  • Mark Parity:校验位始终为1。
  • Space Parity:校验位始终为0。

停止位:
        数据结束标志,可以是1位,1.5位,2位的高电平。
波特率:
        异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。数据传输速率使用波特率来表示,单位bps(bits per second)。常见的波特率9600bps,115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600。举个例子,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是:1 / 9600 ≈ 104.2us。

举例

        以9600 8N1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,现在我们传输“OK”两个ASCII值,O的ASCII为79,对应的二进制数据为01001111K的ASCII为75,对应的二进制数据为01001011,传输的格式数据如下图所示:
在这里插入图片描述
        串口波特率为9600,1bit传输时间大约为104us,传送一个数据实际是10个比特(开始位,8个数据位,停止位),一个bytes传输速率实际为:9600 * 8 / 10 = 7680bps。

COM口

        COM口(cluster communication port)即串行通讯端口,简称串口。微机上的串口通常是9针,也有25针的接口,最大速率115200bps。通常用于连接鼠标(串口)及通讯设备(如连接外置式调制解调器进行数据通讯或一些工厂的数控机接口)等。一般主板外部只有一个串口,机箱后面和并口一起的那个九孔输出端(梯形),就是COM1口,COM2口一般要从主板上插针引出。并口是最长的那个梯形口。但目前主流的主板一般都只带1个串口,甚至不带,慢慢会被USB取代。
        串口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口。9针串行口的针脚功能如下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UART详解 的相关文章

  • UART串口协议时序图

    为了在编写协议的时候更加方便 xff0c 笔者使用逻辑分析仪读取了UART串口协议的时序 xff0c 记录如下 UART协议 波特率 起始位 数据位 奇偶校验位 停止位 1 波特率9600 xff0c 数据位8 xff0c 无奇偶校验位 x
  • STM32串口接受和发送数据的程序(USART/UART)

    本实验中 STM32通过串口1和串口2上位机对话 xff0c STM32通过串口1在收到上位机发过来的字符串 以回车换行结束 后 xff0c 通过串口2原原本本的返回给上位机 串口 xff08 USART UART xff09 通信配置详解
  • UART、RS232 、RS485 区别

    UART RS232 RS485 区别 UART RS232 RS485这些物理层的串口通信 xff0c 它们都是在同一时间发送一位 RS232 RS485只是串口通讯的变种 xff0c 理解了UART串口通讯 xff0c 那么RS232和
  • 串口、UART、USART、COM、USB、TTL、RS232、RS485、RS422简介

    串口 COM口 USB口是指的物理接口形式 xff08 硬件 xff09 xff1b TTL RS 232 RS 485 USB电平是指的电平标准 xff08 电信号 xff09 串口 UART口 USART口 COM口 USB口 xff0
  • 【FPGA】UART串口通信

    文章目录 一 通信方式1 串行通信2 并行通信 二 UART串口通信1 模块设计与时序图2 代码实现 三 测试结果1 仿真结果2 上板验证 一 通信方式 1 串行通信 串行通信是指利用一条传输线将数据一位位地顺序传送 xff08 也就是说串
  • (十三)STM32——串口通信(UART)

    目录 学习目标 内容 通信方法 并行通信 串行通信 通信方向 通信方式 UART 特点 串口参数 通信流程 寄存器 USART SR USART DR USART BRR 过程 代码 运行结果 运行结果 遇到的问题 总结 学习目标 本节我们
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文
  • UART协议

    UART协议 简介 UART是通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART xff0c 是一种异步收发传输器 是设备间进行异步通信的关键
  • 串口通信UART

    串口基本概念 串口通讯 Serial Communication 是指外设和计算机间 xff0c 通过数据信号线 地线等 xff0c 按位进行传输数据的一种通讯方式 其通讯协议可分层为协议层和物理层 物理层规定通信协议中具有机械 电子功能的
  • 【verilog】UART串口发送(FPGA)

    简述核心代码仿真测试 简述 串口发送是以一定速率发送单bit数据 xff0c 通常一组数据为10bit 空闲状态为高电平 xff0c 起始位为0 xff0c 中间以低位在前的方式发送8bit数据 xff0c 终止位为1 采用计数器 cnt
  • UART, IIC, SCI, SPI, 232, 485, 422, CAN, SDIO, GPIO, MODBUS, TCP/IP汇总简介

    UART IIC SCI SPI 232 485 422 CAN SDIO GPIO MODBUS TCP IP汇总简介 UART xff1a Universal Asynchronous Receiver Transmitter xff1
  • 串口通信协议---UART

    串口通信的分类 UART属于串行 异步 全双工通信 串行通信与并行通信 根据传输数据的位宽 xff0c 串口通信可分为串行通信与并行通信 xff0c 串行通信是指设备之间通过少量数据信号线 一般是 8 根以下 xff0c 地线以及控制信号线
  • UART&RS232&RS485的区别

    UART RS232 RS485在串口通信中 xff0c 主要区别是电平的不同 xff0c 其中UART通常使用TTL电平 TTL TTL全名是晶体管 晶体管逻辑集成电路 Transistor Transistor Logic 输入高电平最
  • UART串口通信

    串口是 串行接口 的简称 xff0c 即采用串行通信方式的接口 串行通信将数据字节分成一位一位的形式在一条数据线上逐个传送 xff0c 其特点是通信线路简单 xff0c 但传输速度较慢 因此串口广泛应用于嵌入式 工业控制等领域中对数据传输速
  • 4.RTT-UART-中断接收及轮询发送

    本期博客开始分享RTT的UART xff0c 利用战舰V3的uart2来输入输出一些字符串 UART xff08 Universal Asynchronous Receiver Transmitter xff09 通用异步收发传输器 xff
  • GD32E23x的USART被断点打断后重新运行,会一直进入中断的问题

    GD32E23x的USART被断点打断后重新运行 会一直进入中断的问题 GD32E230K8单片机USART0连接一个从机芯片 该芯片每100ms发来一串16Bytes的数据 MCU中断接收 没有开启FIFO 只开启了RBNE 接收缓存非空
  • MicroPython串口数据转换技巧

    技巧一 还原从串口接收的HEX字符串 首先上官方文档 确认接收数据类型为bytes 串口读来的bytes类型HEX数据转换成HEX类型字符串转换函数 ByteToHex的转换 返回数据16进制字符串 def ByteToHex bins r
  • 启用并测试 UART 的本地环回

    我正在尝试进行 UART 内部环回测试并提出以下更改 include
  • 启用 DMA 的 UART Tx 模式

    我已经为 UART 在传输模式下编写了一个简单的设备驱动程序 并启用了 DMA 和中断 我使用的硬件是 omap 4460 pandaboard 其中加载了 Linux 3 4 下面我分享一下相关部分的代码 在开放阶段 dma map io
  • 使用 read(...) 时在换行符处停止

    我需要从通过 UART 连接的 GPS 读取 NMEA 语句 操作系统是Debian 语言必须是C 为此 我使用以下命令打开文件open 并读取一个字符串read 但是 这样我必须指定字符串长度 这会分解句子 相反 我想读到 NMEA 句子

随机推荐

  • 使用Mybatis-plus拦截加密数据

    使用Mybatis plus拦截加密数据 使用自定义注解来标识需要加密的po和字段 xff0c 并通过mybaitsplus的插件工具类Interceptor类来实现对数据的拦截与加密转换操作 一 自定义加密注解 作用在类上的注解 pack
  • SpringBoot集成阿里easyexcel(四)Converter导入导出数据转换器

    SpringBoot集成阿里easyexcel xff08 四 xff09 Converter导入导出数据转换器 通过com alibaba excel converters Converter转换器实现Excel导入导出时Java数据与E
  • SpringBoot集成Ehcache缓存

    SpringBoot集成Ehcache缓存 Ehcache有两种缓存方式 xff0c 分别是堆内存 磁盘 xff08 非堆内存 xff09 一 堆内存缓存 也就是MemoryStore xff0c 速度最快 xff0c 不适合存放大量数据
  • Spring的切面编程(AOP)概念与使用AOP实现日志记录

    Spring的切面编程 xff08 AOP xff09 概念与使用 一 面向切面编程 定义 面向切面编程 xff08 AOP xff09 是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术 作用 xff1a 利用AOP对业务
  • 关于intrins.h头文件的介绍

    在单片机中应用最多的当然就是移位函数 xff0c 利用移位函数可以更简便的实现流水灯等效果 移位函数 移位函数名 左移 span class token function crol span span class token punctua
  • 大批量数据分批批量插入或更新(Mybatis+MySQL)

    大批量数据分批批量插入或更新 在MySQL数据库的前提下 xff0c 插入或更新大批量数据 首先批量插入需要考虑到以下几个因素 xff1a 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用Mysql资源太久 xff0c 影响系统
  • VSCode配置C++开发环境

    更新细节 2020 7 3 更新细节及排版 2022 6 9 昨天从下午一直研究到晚上十一点 xff0c 查阅了很多博客资料 xff0c 还是没配置好VSCode的C 43 43 开发环境 xff0c 今天早上又弄了一下 xff0c 现在O
  • stm32模拟输出PPM信号

    PPM信号周期为20ms xff0c 分成10分代表10个通道信号 xff0c 也就是2ms代表一个信号 0 5ms代表一个通道信号的开始 xff0c 所以0 5ms 2ms为通道范围控制 LED p1 39 A 39 8 IO口初始化 x
  • 使用JSON.parse,解决ie6-7上JSON未定义问题

    使用JSON parse时出现JSON未定义问题 xff0c JSON不是标准的javascript类型 xff0c 一些高级的浏览器支持 xff0c 但一些老一点的浏览器不支持JSON 如ie6 7 若需要 ie6 7 支持JSON只需要
  • C语言中的大小端转换与高低位颠倒

    在说大小端高低位之前 xff0c 肯定要说明数据在计算机内是如何存储的 在计算机中 xff0c 我们将数据分割成了一个一个的字节 xff08 byte xff09 xff0c 而每个字节又有8位 xff08 bit xff09 一个字节 x
  • C语言库函数中的Strcat函数

    一 Strcat函数的参数 Strcat函数所引用的头文件是 lt string h gt char strcat char strDestination const char strSource 参数说明 xff1a strDestina
  • SLAM中的marginalization 和 Schur complement

    在视觉SLAM的很多论文中 xff0c 会大量或者偶尔出现marginalization这个词 翻译为边缘化 xff0c 有的论文是特地要用它 xff0c 比如sliding window slam 2 okvis 3 dso 4 而有的论
  • 数据结构之单链表循环

    单链表循环代码如下 xff1a include lt stdio h gt include lt stdlib h gt typedef struct node int data struct node next sqlist sqlist
  • 数据结构之双链表循环

    定义是 xff1a 每个数据结点都有两个指针 xff0c 分别指向直接后继和直接前驱 因此双向链表中单任意一个结点开始 xff0c 都可以很方便的访问它的前驱结点和后继结点 循环链表指 xff1a 最后一个结点next指向头结点 xff0c
  • linux学习之进程

    进程概念 xff1a 活跃度程序 xff0c 占用系统资源 xff0c 在内存中执行产生一个进程 孤儿进程 xff1a 父进程先于子进程结束 xff0c 则子进程称为孤儿进程 xff0c 并且这个子进程被init进程回收 include l
  • 使用libcurl实现http通信——post上传数据并获取response

    接口释义 使用libcurl实现http通信 get获取response 代码实现 size t span class token function responseStr span span class token punctuation
  • C语言学习之sprintf

    sprintf函数介绍 xff1a 该函数原型为 xff1a int sprintf char str const char format 该函数的功能为 xff1a 本该输出到显示上的数据 xff0c 改为输出到str所指导内存空间中 x
  • linux学习之存储器

    存储器的种类 xff1a 分为易失性存储器和非易失性存储器 易失性存储器 掉电数据会丢失 读写速度快 xff1a RAM random access memory 随机存储内存 又分为DRAM xff08 动态随机存储内存 xff09 和S
  • HTTP请求报文(请求行、请求头、请求体)

    HTTP协议 1 简介 HTTP协议 xff08 Hyper Text Transfer Protocol xff0c 超文本传输协议 xff09 是用于从万维网 xff08 WWW World Wide Web xff09 服务器传输超文
  • UART详解

    UART 通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART 是一种异步全双工串行通信协议 xff0c 它将要传输的资料在串行通信与并行通信之