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

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

3天内不再提示

关于UART的帧格式含义

要长高 来源:记得诚 作者:记得诚 2022-06-21 16:02 次阅读

看下面这个图,大家已经知道今天的主角是UART,我们通常说的串口,UART包含TTL电平和RS-232电平两种,嵌入式系统里面,单片机的串口一般都是TTL电平。

poYBAGKxeq2AMG3lAAA1ng8Eu2k693.png

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

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

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

pYYBAGKxerOAFMWvAABbRf_gpLk954.png

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

poYBAGKxeriAQm83AABYvu1izJ4380.png

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

pYYBAGKxer6AcssjAABYomN-BjA401.png

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

pYYBAGKxesOALhwIAAAo1VmZQlk357.png

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

poYBAGKxesmAVzG_AABslKS2kwc653.png

UART数据帧格式

其中各位的含义如下:

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

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

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

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

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

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

poYBAGKxes6ARCX7AABQih4myAw697.png

发送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
    +关注

    关注

    21

    文章

    1150

    浏览量

    99748
收藏 人收藏

    评论

    相关推荐

    串口UART设置的关系

    ucXorValue奇偶校验,bit7(奇偶校验位)就得是我的ucXorValue吗?现在我UART里面设置的是wordlength 8bit这和ucOprDataLen也是一回事吗?而且串口设置有1位停止位,而我定义里面似乎没有?是我搞混了还是这两者无关系呢?很迷惑,
    发表于 07-06 14:39

    关于labview数据解码的问题

    使用FPGA+USB2.0芯片上传数据到上位机,上位机采用labview编写,由于是8通道,所以上传的数据我给编码了,数据格式是“头_通道号_数据_尾”,比如“&533*”表示第
    发表于 11-18 09:18

    SPI总线的数据格式定义

    有谁写过SPI总线,我定义8位格式可以发送,我想定义的是16位格式,手册上是可以的,但是16位一直没实现。我想发送一个数据包,数据包是16位
    发表于 03-18 10:10

    IBP格式说明

    IBP格式说明
    发表于 11-21 20:54

    关于误差动态范围、编程函数、格式三个疑问

    关于误差动态范围、编程函数、格式三个疑问
    发表于 07-19 08:52

    如何启用UART错误的中断?

    你好,我有一个问题。我怎样才能使UART错误中断?我的配置窗口在下面,它显示没有启用RX错误。我读到的数据表,我找不到理由虽然。谢谢。以上来自于百度翻译 以下为原文Hello,I have
    发表于 08-23 07:20

    PIC32MX UART错误该怎么解决?

    你好,我有一个问题,“UART错误”,并使用PIC32 MX575 F256HIF我发送非常快的数据从PuTTY(我推非常快的任何键盘的计算机键盘)通过串行/ USB电缆到PIC32(TX,RX
    发表于 11-01 09:07

    串口经过转换后的CAN格式与注意事项

    MCU没有CAN或CAN接口数量不够怎么办?目前市面上有串口转CAN的相关模块或设备,但大家知道串口转CAN是如何实现的吗?转换后的格式是如何的?本文将为大家详细介绍串口经过转换后的CAN
    发表于 01-26 07:40

    如何利用FPGA实现UART的设计?

    如何利用FPGA实现UART的设计?UART的结构和格式
    发表于 04-08 06:32

    STM32异步通信格式是什么样的?

    STM32异步通信格式是什么样的?
    发表于 12-16 07:56

    RT1060如何区分接收到的CAN格式

    /接收CAN2.0B格式和CAN FD格式。 实际测试结果也符合预期,虽然FLEXCAN_WriteFD​​TxMb函数有一个小bug需要修复(CAN_CS_EDL(1)应该是CA
    发表于 03-20 08:11

    STM32CubeMX生成代码SPI格式TI是灰的

    先上图这个SPI的选项格式有摩托罗拉和TI两种,TI是灰的。请问高手,这两种格式有什么区别?谢谢!
    发表于 04-29 18:06

    gps数据格式含义说明

    本内容介绍了gps数据格式含义,给出了GPS输出的是NMEA-0183的数据格式,GPS固定数据输出语句($GPGGA)
    发表于 12-19 14:57 1.2w次阅读

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

    今天的主角是 UART,我们通常说的串口,UART 包含 TTL 电平和 RS-232 电平两种,嵌入式系统里面,单片机的串口一般都是 TTL 电平。 今天的内容关于 UART 的帧
    的头像 发表于 10-30 10:24 518次阅读

    UART的帧格式详细资料讲解

    看下面这个图,大家已经知道今天的主角是 UART,我们通常说的串口,UART 包含 TTL 电平和 RS-232 电平两种,嵌入式系统里面,单片机的串口一般都是 TTL 电平。今天的内容关于
    发表于 11-25 11:14 13次下载