UART串口通讯协议解析

UART串口通讯协议解析UART 串口通讯协议解析概述接口通信协议概述通用异步收发传输器 UniversalAsy Transmitter 通常称作 UART 它将要传输的资料在串行通信与并行通信之间加以转换 作为把并行输入信号转成串行输出信号的芯片 UART 通常被集成于其他通讯接口的连结上 具体实物表现为独立的模块化芯片 或作为集成于微处理器中的周边设备 一般是 RS 232C 规格的 与类似 Maxim 的 MAX232 之类的标准信号幅度变换芯片进行搭配 作为连接外部设备的接口 在 UART 上追加

UART串口通讯协议解析

概述

接口

在UART通信中,两个UART直接相互通信。发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。数据从发送UART的Tx引脚流向接收UART的Rx引脚,硬件连接比较简单,仅需要3条线,如果两个设备UART电平不一致需要转换电平再连接。

通信协议

UART串口传输的数据被组织成数据包。每个数据包包含1个起始位,5至9个数据位,可选的奇偶校验位和1或1.5或2个停止位,协议如下:

起始位 数据位 奇偶校验位 停止位
1bit 5-9bit 0-1bit 1-2bit

空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输。

起始位:开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为总线空闲时为高电平所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平。

数据位:起始位之后就是要传输需要传输的数据,数据可以是5,6,7,8,9位,构成一个字符,一般都是8位。先发送最低位最后发送最高位,使用低电平表示‘0’高电平表示‘1’完成数据位的传输。
奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。校验位其实是调整个数,串口校验分几种方式:

  1. 无校验(no parity)
  2. 奇校验(odd parity):如果数据位中“1”的数目是偶数,则校验位为“1”,如果“1”的数目是奇数,校验位为“0”。
  3. 偶校验(even parity):如果数据为中“1”的数目是偶数,则校验位为“0”,如果为奇数,校验位为“1”。
  4. mark parity:校验位始终为1(不常用)。
  5. parity:校验位始终为0(不常用)。

停止位:数据结束标志,可以是1位,1.5位,2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备之间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟的机会。停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。
传输方向:即数据是从高位(MSB)开始传输还是从低位(LSB)开始传输。

波特率

示例

上图是uart协议传输0x55,0xAA,0x03等多个数据,通过示波器的uart解码而得到的波形示意图,由于未设置奇偶校验位,故在上图未显示出来,设置的停止位为1位;比特流格式为LSB,故从低位开始传输,接收三个数据分别为1010 1010、0101 0101、1100 0000,实际的数据应该反过来,即0101 0101(0x55)、1010 1010(0xAA)、0000 0011(0x03)。

最后

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218059.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:08
下一篇 2026年3月18日 上午8:09


相关推荐

  • VMware卸载虚拟机

    VMware卸载虚拟机右击 gt 从磁盘中删除即可

    2026年3月26日
    2
  • SqlServer 笔记

    SqlServer 笔记

    2021年11月30日
    45
  • HashMap与ConcurrentHashMap的区别「建议收藏」

    HashMap与ConcurrentHashMap的区别「建议收藏」从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的DougLea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable。从Conc

    2022年6月24日
    24
  • latex 不换行

    latex 不换行1.网上找了很久都是教怎么换行,为了不让一些类似Fig.number换行,可以用\mbox{Fig.number}命令。

    2022年5月14日
    224
  • MacOS自带ssh+XQuartz连接OpenBSD6.5

    MacOS自带ssh+XQuartz连接OpenBSD6.5记录笔记 安装 OpenBSD6 5 一 了解 OpenBSDOpenB source security focused Unix likeoperatin TheodeRaadtc

    2026年3月16日
    2
  • vue全局变量、全局方法

    vue全局变量、全局方法1 全局变量 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp main js 中设置如下内容页面中使用如下 2 全局方法 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号