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

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

3天内不再提示

UART传输的数据被封装成数据包

电子设计 来源:电子设计 作者:电子设计 2022-02-21 11:17 次阅读

介绍UART

最早的串行通讯设备可以追溯到电报机,它使用长度可变的脉冲信号进行数据传输。要说早期的芯片级UART,不得不提一下DEC,该公司的PDP系列计算机用上了第一个UART。当时的UART的线路占据了整个电路板,体积巨大!可以联想一下早期计算机的样子,如下图。

如今PC机上的串口早已被USB取代,对RS-232(也称标准串口)有需求的用户通常使用USB转串口线,这里常见的有CH340串口驱动程序。在UART通信中,两个UART直接通信。

发送端的UART将来自控制设备(如CPU)的并行数据转换为串行数据,以串行方式将其发送到接收端的UART,然后由接收端的UART将串行数据转换为并行数据以用于接收设备的正常处理。这里只需要两条线RX/TX即可在两个UART之间传输数据,如下图所示。

UART传输的数据被封装成数据包。每个数据包包含1个起始位,5~9个数据位(取决于UART的具体设置),一个可选的奇偶校验位以及1个或2个停止位,如下图所示。

起始位

UART数据传输线通常在不传输数据时保持在高电平。为了开始数据传输,发送端UART在一个时钟周期内将传输线从高电平拉低到低电平。当接收端UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据位中的每一位数据。

数据

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

校验位

在串口通信中一种简单的检错方式。有四种检错方式:

偶校验

奇校验

高校验

低校验

对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

停止位

发送端UART将数据传输线从低电压驱动到高电压至少持续两位数据的时间宽度来表示整个数据包的传输已经结束。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容错性越好,但是数据传输率同时也越慢。

波特率

波特率是串口数据的传输速度,即Bit/s,常见的波特率比如:9600,19200,38400,57600,115200等。假设目前UART的配置为,1个起始位,8个数据位,0个校验位,1个停止位,那么9600的波特率,可以计算出每一位数据的时间宽度为:

o4YBAGAHxKWADljhAAAQjK6T-sg963.png

那么传输一个字节(也就是10 bit 数据)需要的时间为 1.04 毫秒。

UART传输过程

①发送端UART从数据总线转换并行数据。

②发送端UART将起始位,奇偶校验位和停止位添加到数据包中,示意图如下。

③整个数据包从发送端UART串行发送到接收端UART,接收端UART按照预先配置好的波特率对数据线进行采样,示意图如下。

④接收端UART解析接收的数据,丢弃数据包中的起始位,奇偶校验位和停止位。

⑤接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总线。

本文转自: STM32嵌入式开发(微信号:c-stm32),作者:acket,转载此文目的在于传递更多信息,版权归原作者所有。

审核编辑:何安

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

    关注

    6032

    文章

    44521

    浏览量

    633131
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101186
  • 异步串行
    +关注

    关注

    0

    文章

    7

    浏览量

    6619
收藏 人收藏

    评论

    相关推荐

    华纳云:服务器平均响应时间和数据包大小之间的影响

    服务器的平均响应时间与数据包大小有一定的关系,但这只是影响响应时间的众多因素之一。具体来说,数据包大小对服务器响应时间的影响可以从以下几个方面来理解: 1.数据传输时间 影响: 较大的数据包
    的头像 发表于 10-10 14:01 185次阅读

    请问DCTCP与DCUDP 的登录数据包和心跳数据包与服务器端是如何交互的?

    DCTCP与DCUDP的登录数据包和心跳数据包与服务器端是如何交互的?
    发表于 07-25 06:37

    esp8266怎么做才能每秒发送更多的数据包呢?

    在我的项目中,我需要通过WIFI实时传输大量数据。在 esp8266 参考手册中指出,我可以将 UART 波特率提高到 4 Mbits 左右,以实现更快的通信。 问题是,增加波特率不会改变整体发送
    发表于 07-22 08:00

    如何在UART上制作一个侦听器来接收数据包

    我想在 UART 上制作一个侦听器来接收数据包。 我该怎么做?有没有任何形式的假多线程?
    发表于 07-19 09:54

    使用AT SAVETRANSLINK时UDP数据包丢失怎么解决?

    Android 发送一个小 UDP 数据包(5 字节)。这个小数据包被我的微控制器在UART上接收到。微控制器将更大的数据包(可变长度,约 100 字节)发送回
    发表于 07-18 07:17

    能否在ESP结束之前通过串行端口停止传入的UDP数据包传输以解析下一个UDP数据包

    丢弃在ESP完成之前不需要的数据包,以便通过串行端口发送它以接收下一个数据包, 如果没有,我必须按顺序读取所有传入的数据包,需要的和不需要的, 而且波特率不足,主机处理器开销大, 我能否在 ESP 结束之前通过串行端口停止传入
    发表于 07-16 06:18

    请问如何使用AT CIPSEND或AT CIPSENDBUF发送多个数据包

    我可以使用 AT CIPSEND 发送单个数据包。但是我必须发送一系列二进制数据包。如何使用AT CISEND或AT CIPSENDBUF发送多个数据包,什么是正确的算法? 到目前为止,我尝试
    发表于 07-15 07:37

    NONOS如何检查是否实际发送了UDP数据包

    我发现进入深度睡眠通常无法传输发送的最后一个 UDP 数据包。我现在将睡眠延迟 30 毫秒,这是一个黑客。 我宁愿有一种方法来检查是否可以休眠,或者以其他方式能够注册指示数据包已发送的回调(无线电发送缓冲区为空)。 说清楚:
    发表于 07-12 06:14

    用ESP32-CAM和ESP-WROVER-KIT做局域网视频传输时,如何修改UDP数据包最大长度?

    UDP数据包的包头可以看出,UDP的最大包长度是2^16-1的个字节。由于UDP包头占8个字节,而在IP层进行封装后的IP包头占去20字节,所以这个是UDP数据包的最大理论长度是2^16 - 1 - 8 - 20 = 65507
    发表于 06-21 06:09

    在AN65974中短数据包和零长数据包是什么意思?

    在 AN65974 中,短数据包和零长数据包是什么意思? 非常感谢!
    发表于 05-30 07:41

    如何在AIROC GUI上获取良好数据包和总数据包

    使用 IQxel-MW LifePoint 作为发生器并发送波形BT_1DH5_00001111_Fs80M.iqvsg,但无法在 AIROC 工具中接收数据包。 以下是从 IQxel 发送
    发表于 05-22 06:39

    请问高端网络芯片如何处理数据包呢?

    随着网络芯片带宽的持续提升,其内部数据包处理单元的工作负载也随之增加。然而,如果处理单元无法与网络接口的传入速率相匹配,将无法及时处理数据包,这不仅会导致数据包随机丢失,更会降低网络的吞吐量。
    的头像 发表于 04-02 16:36 593次阅读
    请问高端网络芯片如何处理<b class='flag-5'>数据包</b>呢?

    STM32H7接收数据包异常,一接收的数据出现两发送的内容怎么解决?

    );__HAL_UART_DISABLE_IT( huart1, DMA_IT_HT); 2、发送数据包1
    发表于 03-08 08:05

    DPDK在AI驱动的高效数据包处理应用

    传统的数据包处理方式是数据包先到内核最后再到用户层进行处理。这种方式会增加额外的延迟和CPU开销,严重影响数据包处理的性能。 DPDK 绕过内核,在用户空间中实现快速数据包处理。
    的头像 发表于 02-25 11:28 867次阅读
    DPDK在AI驱动的高效<b class='flag-5'>数据包</b>处理应用

    使用P4和Vivado工具简化数据包处理设计

    电子发烧友网站提供《使用P4和Vivado工具简化数据包处理设计.pdf》资料免费下载
    发表于 01-26 17:49 0次下载
    使用P4和Vivado工具简化<b class='flag-5'>数据包</b>处理设计