精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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 ?141次閱讀

    波特率與串行通信的關系 各種設備波特率轉換的方法

    波特率(Baud Rate)是串行通信中的一個重要參數,它指的是信號傳輸的速率,即單位時間內傳輸的符號(或信號狀態)的數量。在串行通信中,波特率決定了數據傳輸的速度,因此對于通信效率和設備兼容性
    的頭像 發表于 11-22 10:01 ?97次閱讀

    常見的波特率標準和協議

    波特率是指在數據通信中,每秒鐘傳輸的符號數(或比特數),是衡量數據通信速度的重要指標。在不同的通信協議和場景中,常見的波特率標準和協議有所不同。以下是一些常見的波特率標準和協議: 一、串口通信
    的頭像 發表于 11-22 09:56 ?172次閱讀

    Wi-Fi與藍牙的波特率對比分析

    Wi-Fi與藍牙是兩種不同的無線通信技術,它們在波特率(或稱數據傳輸速率)方面存在顯著的差異。以下是對Wi-Fi與藍牙波特率的對比分析: 一、Wi-Fi的波特率 概述 : Wi-Fi(無線局域網
    的頭像 發表于 11-22 09:54 ?93次閱讀

    波特率的定義和計算方法 波特率與數據傳輸速度的關系

    波特率的定義 波特率(Baud Rate),又稱調制速率或傳符號,是指每秒傳輸的符號數目,單位為波特(Bd)。它是一個數字信號通信中重要的參數,在串行通信協議中經常被用作衡量串行數據
    的頭像 發表于 11-22 09:49 ?163次閱讀

    波特率9600和115200的區別

    在現代通信技術中,數據傳輸速率是一個關鍵的性能指標。對于串行通信,波特率是衡量數據傳輸速度的基本單位。波特率9600和115200是兩種常見的設置,它們在不同的應用場景中有著各自的優勢和局
    的頭像 發表于 10-18 14:56 ?908次閱讀

    波特率與比特有何關系 波特率與數據傳輸速率的關系

    波特率(Baud Rate)和比特(Bit Rate)是衡量數據通信系統性能的兩個重要參數,它們之間有著密切的關系,但并不完全相同。 波特率(Baud Rate): 波特率是指在數據
    的頭像 發表于 10-18 14:55 ?448次閱讀

    uart波特率和傳輸頻率的關系 UART串口的常用波特率為多少

    UART(Universal Asynchronous Receiver/Transmitter)是一種廣泛使用的異步串行通信技術,它允許兩臺設備之間進行雙向數據傳輸。在UART通信中,波特率和傳輸
    的頭像 發表于 10-06 16:12 ?1803次閱讀
    uart<b class='flag-5'>波特率</b>和傳輸頻率的關系 UART串口的常用<b class='flag-5'>波特率</b>為多少

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

    波特率在串口通信中的作用在串口通信中,波特率起著至關重要的作用。因為在傳輸數據時,發送方和接收方需要以相同的波特率進行通信。如果兩波特率
    的頭像 發表于 08-27 11:46 ?1195次閱讀
    串口通信中的<b class='flag-5'>波特率</b>你真的了解嗎?差距竟如此重要!

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

    在通信和電子測量領域,串口波特率是一個至關重要的參數,它決定了數據在串行通信線上的傳輸速率。使用示波器來測量串口波特率是一種常見且有效的方法,尤其是在沒有專業串口調試工具或需要更精確測量時。本文將
    的頭像 發表于 05-27 16:25 ?4481次閱讀

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

    深入探討了波特率過高可能帶來的危害,并提供了一些實用建議來保護設備不受影響。在通信領域,波特率是決定數據傳輸速度的重要參數。然而,波特率設置不當可能會對設備造成嚴重的影響。本文旨在揭示波特率
    的頭像 發表于 04-03 16:45 ?1272次閱讀

    為啥要轉換波特率 波特率和傳輸速率的關系

    對于串行多主 CAN 總線,如果波特率被稱為“500000波特”,則 CAN 上的該端口每秒最多可傳輸500000位。
    的頭像 發表于 03-06 17:38 ?4625次閱讀
    為啥要轉換<b class='flag-5'>波特率</b> <b class='flag-5'>波特率</b>和傳輸速率的關系

    波特率發生器使用哪個定時器 波特率發生器的時鐘來源是什么

    波特率發生器是一種用于控制串行數據通信速率的設備,它可以生成特定波特率的時鐘信號。在嵌入式系統、通信設備和計算機硬件中,波特率發生器的使用十分常見。波特率發生器通常使用定時器來實現時鐘
    的頭像 發表于 01-24 09:56 ?1908次閱讀

    什么是串口波特率?串口通信為什么要設置波特率

    什么是串口波特率?串口通信為什么要設置波特率波特率與比特的關系 如何選擇串口波特率?? 串口波特率
    的頭像 發表于 01-22 16:10 ?1976次閱讀

    單片機的各個通信協議的波特率

    下面是一些常見的波特率數值,這些波特率通常被用于串口通信,SPI、I2C、CAN等接口的實際波特率可能有所不同:USART:110bps300bps600bps1200bps2400bps4800bps9600bps14400b
    的頭像 發表于 12-09 08:00 ?2826次閱讀
    單片機的各個通信協議的<b class='flag-5'>波特率</b>