0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通俗易懂的UART帧格式,单片机玩家都知道的

电子设计 来源:电子设计 作者:电子设计 2020-10-30 10:24 次阅读

今天的主角是 UART,我们通常说的串口,UART 包含 TTL 电平和 RS-232 电平两种,嵌入式系统里面,单片机的串口一般都是 TTL 电平。

今天的内容关于 UART 的帧格式,比较简单,玩过单片机的小伙伴应该都知道。

UART 的英文全称是:Universal Asynchronous Receiver/Transmitter,意为通用异步收发传输器。

UART 因为有两根线数据线 TX 和 RX,可以以全双工的形式进行发送和接收数据,同一时刻,两条链路的发送器和接收器可以同时传输数据。

区别于全双工的,还有另一种,是半双工,因为只有一根数据线,所以数据传输是这样。

或者是下面这样,同一时刻,只有一条链路在传输数据。

除了双工形式,还有一种是半工,只有发送器到接收器这一个链路。

说完了 UART 的工作模式,下面进入主题——UART 帧格式,也可以称之为 UART 协议,单片机与 PC 之间的通信,为了保证数据通信的可靠性,双方都必须遵从 UART 协议。

UART 数据帧格式

其中各位的含义如下:

起始位:发送 1 位逻辑 0(低电平),开始传输数据。

数据位:可以是 5~8 位的数据,先发低位,再发高位,一般常见的就是 8 位(1 个字节),其他的如 7 位的 ASCII 码。

校验位:奇偶校验,将数据位加上校验位,1 的位数为偶数(偶校验),1 的位数 4 为奇数(奇校验)。

停止位:停止位是数据传输结束的标志,可以是 1/1.5/2 位的逻辑 1(高电平)。

空闲位:空闲时数据线为高电平状态,代表无数据传输。

如果我们传输数据 0X33(00110011),那么对应的波形就是如下这样,因为是 LSB 在前,所以 8 位数据依次是 11001100

发送 0X33 数据帧格式

如果再发其他数据,再依次循环这个过程即可。

UART 是异步传输,以 1 个字符为传输单位,传输 2 个字符之间的时间间隔,比如传输 0X33 后再传输 0X35,这两者时间间隔是未知的。

但是同一字符内相邻位间的时间间隔是确定的,比如 0X33 低两位的 1 和 1 之间的时间间隔是确定的,这涉及到 UART 传输速率的概念——波特率。

波特率的单位是 bps,全称是 bit per second,意为每秒钟传输的 bit 数量。

波特率 9600bps,代表每秒钟传输 bit 的数量为 9600,那么传输 1bit 数据的时间就是 1/9600=104us,波特率 115200bps,代表传输 1bit 数据的时间是 8us。

两个串口之间是如何发送和接受数据呢?

首先,UART1 以 9600 波特率发送 0X33,先在数据线上放 1 个 104us 脉宽的低电平(起始位),然后是连续 2 个 104us 脉宽的高电平(2bit 逻辑 1),依次类推。

其次,UART2 以 9600 波特率接收 0X33,通过数这些数据的脉宽,来确认数据。

为了确保数据传输的正确性,减少误差,一般 UART1 和 UART2 之间的波特率差别小于 10%,一次最多只能传输 1 个字节(8bit),也有效减小了累计误差。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • uart
    +关注

    关注

    22

    文章

    1159

    浏览量

    99961
收藏 人收藏

    评论

    相关推荐

    发酵罐搅拌器轴磨损修复方法

    这样修复发酵罐搅拌器轴磨损通俗易懂
    发表于 04-24 18:43 0次下载

    如何通俗易懂地解释卷积?

    在本问题 如何通俗易懂地解释卷积?中排名第一的马同学在中举了一个很好的例子(下面的一些图摘自马同学的文章,在此表示感谢),用丢骰子说明了卷积的应用。
    发表于 12-26 17:36 150次阅读
    如何<b class='flag-5'>通俗易懂</b>地解释卷积?

    通俗易懂的PCB爆板原因以及玻璃转换温度

    【科普】通俗易懂的PCB爆板原因以及玻璃转换温度
    的头像 发表于 11-24 16:01 421次阅读
    <b class='flag-5'>通俗易懂</b>的PCB爆板原因以及玻璃转换温度

    单片机串口如何接收上位不断发送的数据

    各位大虾:本人菜鸟请教一个问题,单片机如何接送串口不断发送的数据,并将该的有效数据提取出来,请赐教一个完整程序。 注:我用的是89C52,通信115200已经调试成功,我的思路是先接收一完整
    发表于 11-06 07:41

    CW32单片机UART波特率设置介绍

    CW32单片机UART波特率设置介绍
    的头像 发表于 10-24 17:35 494次阅读
    CW32<b class='flag-5'>单片机</b><b class='flag-5'>UART</b>波特率设置介绍

    CW32单片机UART基本数据收发功能介绍

    CW32单片机UART基本数据收发功能介绍
    的头像 发表于 10-24 16:50 410次阅读
    CW32<b class='flag-5'>单片机</b><b class='flag-5'>UART</b>基本数据收发功能介绍

    请问MODBUS通信单片机如何识别一信息的开始?

    MODBUS通信单片机如何识别一信息的开始?
    发表于 10-13 07:07

    8位PIC单片机上的通用异步收发器(UART)

    电子发烧友网站提供《8位PIC单片机上的通用异步收发器(UART).pdf》资料免费下载
    发表于 09-26 09:47 0次下载
    8位PIC<b class='flag-5'>单片机</b>上的通用异步收发器(<b class='flag-5'>UART</b>)

    8位PIC单片机的位拆裂增强型UART

    电子发烧友网站提供《8位PIC单片机的位拆裂增强型UART.pdf》资料免费下载
    发表于 09-26 09:45 0次下载
    8位PIC<b class='flag-5'>单片机</b>的位拆裂增强型<b class='flag-5'>UART</b>

    如何写出单片机发送字母A的一数据格式

    写出发送字母\'A的一数据格式(假设串口工作在方式1,且已知字符A的ASCII 码是65 (对应十六进制0x41))。
    发表于 09-25 06:47

    FFT原理通俗易懂的解释

    FFT原理通俗易懂的解释  傅里叶变换(Fourier Transform,简称FFT)是一个广泛应用的数学工具,它可以将一个连续或离散信号分解成一系列单一的正弦函数,这些正弦函数名称为频率成分
    的头像 发表于 09-07 16:35 1650次阅读

    STM USART的波特率计算与格式(1)#单片机

    单片机汇编语言函数
    未来加油dz
    发布于 :2023年08月02日 21:15:05

    指令格式(1)#单片机

    单片机指令
    未来加油dz
    发布于 :2023年07月31日 23:24:39

    通俗易懂的ArkTS语言入门指南

    本文为我整理出来最通俗易懂的 ArkTS 语言入门指南。
    的头像 发表于 06-18 15:12 2w次阅读
    最<b class='flag-5'>通俗易懂</b>的ArkTS语言入门指南

    什么是DFM可制造性分析?

    可能有人都不知道这个岗位,那我换个通俗易懂的解释。
    的头像 发表于 05-31 10:25 1445次阅读
    什么是DFM可制造性分析?