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

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

3天内不再提示

波特率漂移导致通信异常的故障排查过程

AGk5_ZLG_zhiyua 来源:佚名 作者:佚名 2019-01-08 13:51 次阅读

示波器的协议解码功能大家都不生疏,你是否有过波形看起来正常,协议参数、解码设置都正确,却无法正常解码的经历呢?本文以UART协议为例,分享由于波特率漂移导致通信异常的故障排查过程。

什么是波特率漂移呢?可以理解为被测部件晶振有偏差,导致实际波特率和正常的波特率不一致。为什么波特率漂移会导致通信异常呢?本文从波形出发,带你自检解码结果。

一、波特率漂移导致通信异常的故障排查

引出这样一个真实的例子,PC端发送串口数据为“0xEE 0x61 0x32 0xFF 0xFC 0xFF 0xFF”,示波器解码结果为“0xEE 0x98 0xF6 0xFC 0xFF”初步判定通信故障。但协议参数设置和解码设置都正确,为什么会出现收发不一致的现象呢?

下文将解码时协议参数设置中的波特率都设置为9600 bps,实际为9600 bps,10126 bps的波形图解码结果对比(如图1所示)分析为例,分享波特率漂移后导致波形有偏差,从而出现通信异常的原因排查过程。

图1 同一解码波特率下的不同波形解码结果图

首先讲讲UART的解码原理。当示波器解码UART信号时,将空闲电平之后的下降沿作为开始位,然后从波形中等间隔采样,以等间隔时间段内的采样点中的多数状态作为该位的解码数值。不同波特率的波形,最小数据位宽不一致,时间T=1/采样率,实际采样率大的波形对应的时间就小,所以从图1中可看出波特率为10126bps的波形像往左偏移了。

当解码时设置的波特率同为9600时,采样点的位置是根据9600的波特率来确定的,当实际采样率和9600bps有偏差时,误差会逐渐累积,从而导致解码有偏差。设置的数据位宽越大,越容易叠加误差。

二、自检波特率方法

从波形出发,根据波形最小位宽估算波特率,此法适用于波特率偏差较大或不确定波特率该设置多少时。这是工程师们较习惯的自检方法。估算波特率需要看波形中的最小位宽,从来图2看,时基档位为100us,最小位宽刚好占一格,则最小位宽为100us左右,换算之后等于10000bps。

想要得到更精确的波特率数值,可以使用示波器的测量功能。打开示波器面板中的【measure】,选择波特率测量项,观察波特率测量结果对比,如下图2红框内的测量结果。

开头中引出的例子,正是因为波特率产生了漂移,实际为10000 bps,而解码时按照正常部件的9600bps来设置,这么一算,波特率误差大于4%,因此会导致解码结果不正确。换个晶振再解码,通讯果然正常了。

图2 从波形最小位宽估算波特率图

总结

在解码中波特率虽然只是一个参数,但因其漂移产生的影响不容忽视,它可能就是导致通信故障的因素。解码前注意检验波特率,这么一个小细节也许可以省去日后排查故障的时间。从波形出发,重新审视示波器价值,它用来观察波形和分析数据就是为了检测被测部件是否正常的。

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

    关注

    111

    文章

    5647

    浏览量

    181755
  • 波特率
    +关注

    关注

    2

    文章

    280

    浏览量

    33758

原文标题:波形正常但是解码失败?可能是波特率漂移了

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32L151低温时UART串口波特率异常的原因?如何解决?

    我们有个项目用到STM32L151,在温度-15度左右发现lpuart的串口波特率变了,通信不上。故障概率在5%左右,更换MCU后正常。常识更换32K晶振及旁边电容都不行。
    发表于 04-12 07:55

    TC397 QSPI波特率异常问题怎么解决?

    时,收发数据异常;3. 在2的条件下,只要设置的波特率低于23M, 收发数据正常,与datasheet中描述的max 波特率50M矛盾;
    发表于 02-02 14:25

    什么是串口波特率?串口通信为什么要设置波特率

    什么是串口波特率?串口通信为什么要设置波特率波特率与比特率的关系 如何选择串口波特率?  串口波特率
    的头像 发表于 01-22 16:10 526次阅读

    AD2S1210采用SPI通信时,波特率和f -SCLK的频率是什么对应关系呢?

    专家您好: 我在使用AD2S1210解码旋变信号的过程中,遇到了以下问题: AD2S1210采用SPI通信时,我采用16位分辨,Vdrive为3.3V,技术手册上f -SCLK应为25Mhz
    发表于 12-06 07:48

    请问波特率只能用于串口通信吗?

    波特率只能用于串口通信吗?
    发表于 11-08 08:20

    什么是串口波特率?串口通信为什么要设置波特率

    在电子设备的世界中,数据是通过各种方式进行传输的。其中,串口通信是一种常见的数据传输方式,它以其简单、可靠和广泛的特性,成为了电子设备间通信的重要手段。而在串口通信中,有一个非常重要的参数——
    的头像 发表于 11-03 08:21 1573次阅读
    什么是串口<b class='flag-5'>波特率</b>?串口<b class='flag-5'>通信</b>为什么要设置<b class='flag-5'>波特率</b>?

    串口通信过程中波特率可以根据数据来调整吗?

    串口通信过程中波特率可以根据数据来调整吗
    发表于 10-13 07:55

    CAN通信波特率不对会怎样?

    ,该波特率是处理器要进行通信所需的数据传输速率。波特率不正确将导致通信失败,并可能导致危险的结果
    的头像 发表于 10-11 17:19 1263次阅读

    glibc导致的堆外内存泄露的排查过程

    本文记录一次glibc导致的堆外内存泄露的排查过程
    的头像 发表于 09-01 09:43 405次阅读
    glibc<b class='flag-5'>导致</b>的堆外内存泄露的<b class='flag-5'>排查过程</b>

    串口传输速率低于波特率会怎么样 串口传输速率低于波特率的原因

    低于波特率的传输速率可能导致数据传输错误。由于数据在传输过程中受到时钟同步和波特率控制的影响,如果传输速率低于预期的波特率,可能会
    的头像 发表于 08-25 15:24 1654次阅读

    什么是波特率波特率是如何影响CAN总线长度的?

    信息在通信通道中传输的速率被称为波特率。通俗地说,波特率是数据在网络上传输的速度/速率。这是以比特/秒表示的。因此,一秒钟内在通信网络上传输的比特数就是
    的头像 发表于 08-14 15:23 2886次阅读
    什么是<b class='flag-5'>波特率</b>?<b class='flag-5'>波特率</b>是如何影响CAN总线长度的?

    什么是串口波特率?串口波特率的分类及应用详解

    什么是串口波特率串口波特率是指串口通信系统中传输数据的速率。在UART串口通信中,数据以位(bit)的形式传输,波特率是指每秒钟传输的位数。
    的头像 发表于 08-08 10:09 3248次阅读
    什么是串口<b class='flag-5'>波特率</b>?串口<b class='flag-5'>波特率</b>的分类及应用详解

    波特率是什么?波特率设计

    从宏观理解,波特率表征了串口的传输速度。
    的头像 发表于 06-05 15:19 1.1w次阅读
    <b class='flag-5'>波特率</b>是什么?<b class='flag-5'>波特率</b>设计

    串口通信波特率详解

    波特率   串行通信可以分为两种形式:同步串行通信和异步串行通信。   同步串行通信通信双方
    发表于 05-15 14:52

    stm32f413 can通信波特率配置求助

    的时钟配置的。但413的时钟是 50m, 可尝试按照 50m,重新计算修改参数后依然无法通信。不清楚什么原因。哪位大佬可以帮忙看看这么改是否正确,谢谢!50 / ((1 + 6 + 3) * 5) = 1MHz ?msh 下也可以看到,有明显的异常回馈,似乎
    发表于 05-05 11:38