码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一文搞懂UART通信协议


    目录

    1、UART简介

    2、UART特性

    3、UART协议帧

    3.1、起始位

    3.2、数据位

    3.3、奇偶校验位

    3.4、停止位

    4、UART通信步骤


    1、UART简介

    UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信,如下图所示:

    2、UART特性

    UART 接口不使用时钟信号来同步发送器和接收器设备,而是以异步方式传输数据。发送器根据其时钟信号生成的位流取代了时钟信号,接收器使用其内部时钟信号对输入数据进行采样。
    同步点是通过两个设备的相同波特率(UART和大多数串行通信一样,发送和接收设备需要将波特率(波特率是指信息传输到信道的速率)设置为相同的值。对于串行端口,设定的波特率将用作每秒传输的最大位数)来管理的。
    如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率差异最大值为10%,超过此值,位的时序就会脱节。

    下总结了关于UART必须了解的几点:

    导线数量3根(TX、RX和GND)
    速度1200、2400、4800、9600、19200、38400、57600、115200等
    传输方式全双工异步
    最大主机数量1
    最大从机数量1

    3、UART协议帧

    在 UART中,传输模式为数据包形式。数据包由起始位、数据帧、奇偶校验位和停止位组成。

    3.1、起始位

    当不传输数据时, UART 数据传输线通常保持高电压电平。若要开始数据传输,发送UART 会将传输线从高电平拉到低电平并保持1 个时钟周期。
    当接收 UART 检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。

    3.2、数据位

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

    3.3、奇偶校验位

    奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收 UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。
    校验位可以配置成 1 位偶校验或 1 位奇校验或无校验位。
    接收UART 读取数据帧后,将统计数值为 1 的位,检查总数是偶数还是奇数。如果奇偶校验位为0 (偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为 1 (奇数奇偶校验),则数据帧中的1 或逻辑高位总计应为奇数。
    当奇偶校验位与数据匹配时,UART 认为传输未出错。但是,如果奇偶校验位为0 ,而总和为奇数,或者奇偶校验位为 1 ,而总和为偶数,则UART 认为数据帧中的位已改变。

    3.4、停止位

    为了表示数据包结束,发送 UART 将数据传输线从低电压驱动到高电压并保持1 到 2 位时间。

    4、UART通信步骤

    第1步:数据从数据总线到发送器。

    第2步:发送 UART 将起始位、奇偶校验位和停止位添加到数据帧。

    第3步:从起始位到结束位,整个数据包以串行方式从发送器送至接收 器 。
    接收 UART 以预配置的波特率对数据线进行采样。

    第4步:接收 器 丢弃数据帧中的起始位、奇偶校验位和停止位。

    第5步:接收 器 将串行数据转换回并行数据,并将其传输到接收端的数据总线。


    拓展学习:

    1、一文搞懂SPI通信协议

    2、一文搞懂I2C总线通信

    3、 一文看懂Modbus协议

    4、 一文搞懂PID控制算法 

    5、一文搞懂TCP的三次握手和四次挥手 

    6、一文搞懂图像二值化算法 

    7、 一文搞懂步进电机特性、原理及驱动器设计 

    8、 一文搞懂三级管和场效应管驱动电路设计及使用 

    9、ADI期刊-UART:了解通用异步接收器-发送器的硬件通信协议 

  • 相关阅读:
    2.JSP中c:if的使用
    Hive【Hive(八)自定义函数】
    vue实战入门后台篇八:springboot+mybatis实现网站后台-客户端界面数据对接
    计数排序【java实现】
    游戏使用脚本配置HTTP
    开发deepstram的自定义插件,使用gst-dseaxmple插件进行扩充,实现deepstream图像输出前的预处理,实现图像自定义绘制图(精四)
    黑客利用 MinIO 存储系统漏洞危害服务器
    【C#】某AGV调度系统源码笔记(十二)
    Persistent data structure 不可变数据结构
    美团MTCTF 2022 ret2libc_aarch64 pwn解
  • 原文地址:https://blog.csdn.net/m0_38106923/article/details/126024970
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号