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

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

3天内不再提示

低频波特率的发射端累积误差

电子设计 来源:电子设计 作者:电子设计 2022-01-11 10:46 次阅读

UART通讯设计中,工程师会根据系统需要先选定合适的波特率(Baud Rate),然后选择合适的时钟源频率,以使UART传输数据时的累积误差最小,数据的误码率最低。本文以MSP430FR2311为例,对UART数据传输过程中发送端累积误差和接收端累积误差进行了详细的分析和计算。根据计算结果,工程师可以优选出时钟源频率,提高UART数据传输系统的可靠性。

在附录1的文章中,对MSP430FR2311的UART模块寄存器配置的分析和计算有了详细介绍,这里不再赘述。BRCLK是时钟源频率,BITCLK是波特率。当BRCLK是BITCLK的整数倍,即BRCLK/BITCLK=N,由于每个数据bit中含有N个BRCLK,和理想值完全相同,所以每个数据bit不存在时长误差,因此在数据传输过程中也不存在累积误差。但是大部分情况下BRCLK不是BITCLK的整数倍,由于在数据传输过程中,每个数据bit时长都是BRCLK的整数倍,这样在每个数据bit中就存在时长误差,因此在数据传输过程中也就存在累积误差。

以下分4部分进行累积误差的分析和计算:低频波特率的发射端累积误差,高频波特率的发射端累积误差,低频波特率的接收端累积误差,高频波特率的接收端累积误差。

低频波特率的发射端累积误差

以时钟源频率BRCLK 32768Hz,波特率BITCLK 2400Hz为例,32768/2400=13.6533,所以UCOS16=0,UCBRx=13,UCBRSx=0xB6.

如图1所示,在每个数据bit的发送结束时刻,实际发送时长和理想发送时长存在误差。

对于Start bit,理想时长13.65BRCLK,实际时长14BRCLK,误差时长为13.65BRCLK-14BRCLK=-0.35BRCLK。

对于LSB bit,理想时长13.65BRCLK,实际时长13BRCLK,误差时长为13.65BRCLK-13BRCLK=0.65BRCLK,累积误差时长为-0.35BRCLK+0.65BRCLK=0.30BRCLK。

对于Bit1,理想时长13.65BRCLK,实际时长14BRCLK,误差时长为13.65BRCLK-14BRCLK=-0.35BRCLK,累积误差时长为0.30BRCLK-0.35BRCLK=-0.05BRCLK。

后续bit位的误差和累积误差以此类推。

图1低频波特率的发射端累积误差示意图

以下是低频波特率的发射端累积误差的公式推导。

t_bits_ideal_TX为发送端理想累积数据时长。

t_bits_ideal_TX[i] = (i+1)/BITCLK (1)

t_bit_period_TX为发送端实际每个数据bit时长。每个数据的BRCLK个数等于UCBRx值和UCBRSx的对应调制值UCBRSx.m之和。

t_bit_period_TX[i] = (UCBRx +UCBRSx.m)/BRCLK (2)

t_bits_TX为发送端实际发送的累积数据时长。

t_bits_TX[0] = t_bit_period_TX[0] (3)

t_bits_TX[i] = t_bits_TX[i-1] + t_bit_period_TX[i], 其中i≠0 (4)

定义Error_TX为实际累积数据时长与理想累积数据时长的差值,相对于理想数据bit时长的百分比,单位为%

Error_TX[i]=( t_bits_ideal_TX[i]- t_bits_TX[i])*BITCLK*100 (5)

表1为带入例程中数据的Error_TX的计算结果。

从表1中可以看到,最大正Error_TX为3.91%,最小负Error_TX为-3.12%.

表1 Error_TX

高频波特率的发射端累积误差

以时钟源频率BRCLK 4000000Hz,波特率BITCLK 57600为例,4000000/57600=69.4444,所以UCOS16=1,UCBRx=4,UCBRFx=5,UCBRSx=0x55.

如图2所示,在每个数据bit的发送结束时刻,实际发送时长和理想发送时长存在误差。

对于Start bit,理想时长69.44BRCLK,实际时长69BRCLK,误差时长为69.44BRCLK-69BRCLK=0.44BRCLK。

对于LSB bit,理想时长69.44BRCLK,实际时长70BRCLK,误差时长为69.44BRCLK-70BRCLK=-0.56BRCLK,累积误差时长为0.44BRCLK-0.56BRCLK=-0.12BRCLK。

对于Bit1,理想时长69.44BRCLK,实际时长69BRCLK,误差时长为69.44BRCLK-69BRCLK=0.44BRCLK,累积误差时长为-0.12BRCLK+0.44BRCLK=0.32BRCLK。

后续bit位的误差和累积误差以此类推。

图2高频波特率的发射端累积误差示意图

以下是高频波特率的发射端累积误差的公式推导。

t_bits_ideal_TX为发射端理想累积数据时长。

t_bits_ideal_TX[i] = (i+1)/BITCLK (6)

t_bit_period_TX为发射端实际每个数据bit时长。每个数据的BRCLK个数等于16*UCBRx+UCBRFx值和UCBRSx的对应调制值UCBRSx.m之和。

t_bit_period_TX[i] = (16*UCBRx+UCBRFx +UCBRSx.m)/BRCLK (7)

t_bits_TX为发射端实际发送的累积数据时长。

t_bits_TX[0] = t_bit_period_TX[0] (8)

t_bits_TX[i] = t_bits_TX[i-1] + t_bit_period_TX[i], 其中i≠0 (9)

定义Error_TX为实际累积数据时长与理想累积数据时长的差值,相对于理想数据bit时长的百分比,单位为%

Error_TX[i]=( t_bits_ideal_TX[i]- T_bits_TX[i])*BITCLK*100 (10)

表2为带入例程中数据的Error_TX的计算结果。

从表2中可以看到,最大正Error_TX为0.64%,最小负Error_TX为-0.80%.

表2 Error_TX

低频波特率的 接收端累积误差

MSP430FR2311 User’s Guide中指出,接收端误差包括两部分:一个是从发射端start bit开始边沿到该边沿被接收端识别的误差,另一个是每个数据bit实际识别时刻和理想识别时刻的偏差。如图3所示。

图3 接收端两种误差

第一种误差用Tsync表示,Tsync = ±0.5BRCLK。

对于第二种误差,由于理想情况下接收端是在数据bit时长一半的位置进行采样识别,所以在进行误差计算时,是以该时刻为参考进行计算,而不像发射端,是以该数据bit理想时长结束的位置为参考进行计算。

MSP430FR2311 User’s Guide中给出了计算公式,但是这些公式中包含的元素太多不便理解。本文通过简化的方式来进行理解和计算,可以得到相同的累积误差结果。

图4为MSP430FR2311的Majority Vote示意图,从图中可以看出Majority Vote在三个边沿的位置进行数据采样,采样的中心位置为INT(N/2)+m,其中N=INT(BRCLK/BITCLK), m为UCBRSx中对应于该数据bit的UCBRSx.m值。理想的数据bit采样中心位置为0.5/BITCLK。

图4 Majority Vote示意图

所以对于从Start bit开始的第i个数据bit,其采样中心位置时刻为Tsync,前i-1个数据bit实际总时长和该数据bit采样中心位置时长的总和,然后和理想的第i个数据bit采样中心位置时刻进行比较,便可得出第i个数据bit的累积误差。

以时钟源频率BRCLK 32768Hz,波特率BITCLK 2400Hz为例,32768/2400=13.6533,所以UCOS16=0,UCBRx=13,UCBRSx=0xB6.理想数据bit采样中心位置13.6533/2=6.8267BRCLK。

如图5和图6所示,在每个数据bit采样中心位置时刻,实际累积采样时刻和理想累积采样时刻存在误差。

当考虑Tsync=0.5BRCLK时,如图5所示。

对于Start bit,理想数据bit累积采样中心位置时刻为6.83BRCLK,实际数据bit累积采样中心位置时刻为7.5BRCLK,误差为6.83BRCLK-7.5BRCLK=-0.67BRCLK。

对于LSB bit,理想数据bit累积采样中心位置时刻为20.48BRCLK,实际数据bit累积采样中心位置时刻为20.5BRCLK,误差为20.48BRCLK-20.5BRCLK=-0.02BRCLK。

对于Bit1,理想数据bit累积采样中心位置时刻为34.13BRCLK,实际数据bit累积采样中心位置时刻为34.5BRCLK,误差为34.13BRCLK-34.5BRCLK=-0.37BRCLK。

后续bit位的累积误差以此类推。

当考虑Tsync=-0.5BRCLK时,如图6所示。

分析方法和图5一样,不再赘述。

图5低频波特率的接收端累积误差示意图,Tsync=0.5BRCLK

图6低频波特率的接收端累积误差示意图,Tsync=-0.5BRCLK

以下是低频波特率的接收端累积误差的公式推导。

t_bits_ideal_RX为接收端理想数据bit累积采样中心位置时刻。

t_bits_ideal_RX[i] = (i+0.5)/BITCLK (11)

t_bit_period_RX为接收端实际数据bit采样中心位置时刻。每个数据bit采样中心位置时刻的BRCLK个数等于INT(0.5UCBRx)和UCBRSx的对应调制值UCBRSx.m之和。

t_bit_period_RX[i] = [INT(0.5*UCBRx) +UCBRSx.m]/BRCLK (12)

t_bits_before_RX为当前数据bit之前的所有i-1个数据bit实际累积数据时长。

t_bits_before_RX[0] = 0

t_bits_before_RX[i] = t_bits_before_RX[i-1] + (UCBRx[i-1] + UCBRSx.m[i-1])/BRCLK, 其中i≠0 (13)

其中t_bits_before_RX[i-1]为所有i-2个数据bit实际累积数据时长,(UCBRx[i-1] + UCBRSx.m[i-1])/BRCLK为第i-1个数据bit实际数据时长。

t_bits_RX为接收端实际数据bit累积采样中心位置时刻。

t_bits_TX[i] = Tsync + t_bit_period_RX[i] + t_bits_before_RX[i] (14)

定义Error_TX为接收端实际数据bit累积采样中心位置时刻相对于理想数据bit累积采样中心位置时刻的误差占理想数据bit时长的百分比,单位为%

Error_TX[i]=( t_bits_ideal_TX[i]- T_bits_TX[i])*BITCLK*100 (15)

表3为带入例程中数据的Error_TX。

从表3中可以看到,最大正Error_TX为8.84%,最小负Error_TX为-5.52%.

表3 Error_TX

高频波特率的 接收端累积误差

以时钟源频率BRCLK 4000000Hz,波特率BITCLK 57600为例,4000000/57600=69.4444,所以UCOS16=1,UCBRx=4,UCBRFx=5,UCBRSx=0x55. 理想数据bit采样中心位置69.4444/2=34.7222BRCLK.

如图7和图8所示,在每个数据bit累积采样中心位置时刻,实际采样时刻和理想采样时刻存在误差。

当考虑Tsync=0.5BRCLK时,如图7所示。

对于Start bit,理想数据bit累积采样中心位置时刻为34.72BRCLK,实际数据bit累积采样中心位置时刻为34.5BRCLK,误差为34.72BRCLK-34.5BRCLK=0.22BRCLK。

对于LSB bit,理想数据bit累积采样中心位置时刻为104.16BRCLK,实际数据bit累积采样中心位置时刻为104.5BRCLK,误差为104.16BRCLK-104.5BRCLK=-0.34BRCLK。

对于Bit1,理想数据bit累积采样中心位置时刻为173.60,实际数据bit累积采样中心位置时刻为173.5BRCLK,误差为173.60BRCLK-173.5BRCLK=0.10BRCLK。

后续bit位的累积误差以此类推。

当考虑Tsync=-0.5BRCLK时,如图8所示。

分析方法和图7一样,不再赘述。

图7高频波特率的接收端累积误差示意图,Tsync=0.5BRCLK

图8高频波特率的接收端累积误差示意图,Tsync=-0.5BRCLK

以下是高频波特率的接收端累积误差的公式推导。

t_bits_ideal_RX为接收端理想数据bit累积采样中心位置时刻。

t_bits_ideal_RX[i] = (i+0.5)/BITCLK (16)

t_bit_period_RX为接收端实际数据bit采样中心位置时刻。每个数据bit采样中心位置时刻的BRCLK个数等于INT[0.5*(16*UCBRx+UCBRFx)]和UCBRSx的对应调制值UCBRSx.m之和。

t_bit_period_RX[i] = [INT(0.5*(16*UCBRx+UCBRFx)) +UCBRSx.m]/BRCLK (17)

t_bits_before_RX为当前数据bit之前的所有i-1个数据bit实际累积数据时长。

t_bits_before_RX[0] = 0

t_bits_before_RX[i] = t_bits_before_RX[i-1] + (16*UCBRx+UCBRFx + UCBRSx.m)/BRCLK, 其中i≠0 (18)

其中t_bits_before_RX[i-1]为所有i-2个数据bit实际累积数据时长,(16*UCBRx+UCBRFx + UCBRSx.m)/BRCLK为第i-1个数据bit实际数据时长。

t_bits_RX为接收端实际数据bit累积采样中心位置时刻。

t_bits_TX[i] = Tsync + t_bit_period_RX[i] + t_bits_before_RX[i] (19)

定义Error_TX为接收端实际数据bit累积采样中心位置时刻相对于理想数据bit累积采样中心位置时刻的误差占理想数据bit时长的百分比,单位为%

Error_TX[i]=( t_bits_ideal_TX[i]- T_bits_TX[i])*BITCLK*100 (20)

表4为带入例程中数据的Error_TX。

从表4中可以看到,最大正Error_TX为1.76%,最小负Error_TX为-1.12%.

表4 Error_TX

时钟源频率优选

时钟源频率优选需要考虑两方面的因素:

尽量降低发射端累积误差和接收端累积误差

对于Majority Vote架构,过高的时钟源频率会减小Majority Vote的检测窗口,降低Majority Vote的性能

以波特率9600Hz为例, Error_TX和Error_RX如表5所示,根据时钟源优选原则,选择1000000Hz。

表5 Error_TX和Error_RX

BRCLKBITCLKError_TX+ (%)Error_TX- (%)Error_RX+ (%)Error_RX- (%)

32768960016.02-17.1937.30-23.24

100000096000.64-0.481.04-1.04

800000096000.04-0.080.14-0.10

审核编辑:何安

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

    关注

    0

    文章

    341

    浏览量

    9997
收藏 人收藏

    评论

    相关推荐

    波特率设置中的常见问题解析

    在数字通信系统中,波特率是一个关键参数,它直接影响数据传输的效率和可靠性。然而,在实际应用中,波特率的设置往往会引起一些常见的问题。 一、波特率与数据速率的混淆 问题描述: 许多人会将波特率
    的头像 发表于 11-22 10:06 121次阅读

    波特率与串行通信的关系 各种设备波特率转换的方法

    波特率(Baud Rate)是串行通信中的一个重要参数,它指的是信号传输的速率,即单位时间内传输的符号(或信号状态)的数量。在串行通信中,波特率决定了数据传输的速度,因此对于通信效率和设备兼容性
    的头像 发表于 11-22 10:01 84次阅读

    常见的波特率标准和协议

    波特率是指在数据通信中,每秒钟传输的符号数(或比特数),是衡量数据通信速度的重要指标。在不同的通信协议和场景中,常见的波特率标准和协议有所不同。以下是一些常见的波特率标准和协议: 一、串口通信
    的头像 发表于 11-22 09:56 116次阅读

    Wi-Fi与蓝牙的波特率对比分析

    Wi-Fi与蓝牙是两种不同的无线通信技术,它们在波特率(或称数据传输速率)方面存在显著的差异。以下是对Wi-Fi与蓝牙波特率的对比分析: 一、Wi-Fi的波特率 概述 : Wi-Fi(无线局域网
    的头像 发表于 11-22 09:54 83次阅读

    波特率的定义和计算方法 波特率与数据传输速度的关系

    波特率的定义 波特率(Baud Rate),又称调制速率或传符号,是指每秒传输的符号数目,单位为波特(Bd)。它是一个数字信号通信中重要的参数,在串行通信协议中经常被用作衡量串行数据
    的头像 发表于 11-22 09:49 130次阅读

    波特率9600和115200的区别

    在现代通信技术中,数据传输速率是一个关键的性能指标。对于串行通信,波特率是衡量数据传输速度的基本单位。波特率9600和115200是两种常见的设置,它们在不同的应用场景中有着各自的优势和局
    的头像 发表于 10-18 14:56 886次阅读

    波特率与比特有何关系 波特率与数据传输速率的关系

    波特率(Baud Rate)和比特(Bit Rate)是衡量数据通信系统性能的两个重要参数,它们之间有着密切的关系,但并不完全相同。 波特率(Baud Rate): 波特率是指在数据
    的头像 发表于 10-18 14:55 441次阅读

    uart波特率和传输频率的关系 UART串口的常用波特率为多少

    UART(Universal Asynchronous Receiver/Transmitter)是一种广泛使用的异步串行通信技术,它允许两台设备之间进行双向数据传输。在UART通信中,波特率和传输
    的头像 发表于 10-06 16:12 1764次阅读
    uart<b class='flag-5'>波特率</b>和传输频率的关系 UART串口的常用<b class='flag-5'>波特率</b>为多少

    串口通信中的波特率你真的了解吗?差距竟如此重要!

    波特率在串口通信中的作用在串口通信中,波特率起着至关重要的作用。因为在传输数据时,发送方和接收方需要以相同的波特率进行通信。如果两波特率
    的头像 发表于 08-27 11:46 1177次阅读
    串口通信中的<b class='flag-5'>波特率</b>你真的了解吗?差距竟如此重要!

    如何使用示波器测量串口波特率

    在通信和电子测量领域,串口波特率是一个至关重要的参数,它决定了数据在串行通信线上的传输速率。使用示波器来测量串口波特率是一种常见且有效的方法,尤其是在没有专业串口调试工具或需要更精确测量时。本文将
    的头像 发表于 05-27 16:25 4460次阅读

    波特率有什么危害尼?又该如何避免?

    深入探讨了波特率过高可能带来的危害,并提供了一些实用建议来保护设备不受影响。在通信领域,波特率是决定数据传输速度的重要参数。然而,波特率设置不当可能会对设备造成严重的影响。本文旨在揭示波特率
    的头像 发表于 04-03 16:45 1267次阅读

    为啥要转换波特率 波特率和传输速率的关系

    对于串行多主 CAN 总线,如果波特率被称为“500000波特”,则 CAN 上的该端口每秒最多可传输500000位。
    的头像 发表于 03-06 17:38 4614次阅读
    为啥要转换<b class='flag-5'>波特率</b> <b class='flag-5'>波特率</b>和传输速率的关系

    波特率发生器使用哪个定时器 波特率发生器的时钟来源是什么

    波特率发生器是一种用于控制串行数据通信速率的设备,它可以生成特定波特率的时钟信号。在嵌入式系统、通信设备和计算机硬件中,波特率发生器的使用十分常见。波特率发生器通常使用定时器来实现时钟
    的头像 发表于 01-24 09:56 1898次阅读

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

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

    单片机的各个通信协议的波特率

    下面是一些常见的波特率数值,这些波特率通常被用于串口通信,SPI、I2C、CAN等接口的实际波特率可能有所不同:USART:110bps300bps600bps1200bps2400bps4800bps9600bps14400b
    的头像 发表于 12-09 08:00 2815次阅读
    单片机的各个通信协议的<b class='flag-5'>波特率</b>