国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    瀏覽量

    10509
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    是否可以將 visionfive2 的 uart 配置為 1Mb 波特率

    我需要通過 uart 加載 u-boot 和 u-boot spl,由于某種原因我不能使用 sd 或 spi flash。但是這需要太多時間,因為默認的 uart 波特率是 115200。 我試過
    發表于 02-04 06:24

    碩博電子IO模塊修改波特率和節點ID操作步驟

    正確設置波特率與節點ID,是保證IO模塊與控制器穩定通信的關鍵。配置不當易引發設備失聯、數據錯亂等故障。本文將詳細講解波特率與節點ID的規范修改步驟,輕松搞定配置難題。
    的頭像 發表于 01-27 10:39 ?511次閱讀
    碩博電子IO模塊修改<b class='flag-5'>波特率</b>和節點ID操作步驟

    使用內置晶振的話,串口波特率最大可以設置多少,不會丟包嗎?

    之前我用ST的某芯片,采用內置晶振,將波特率設置115200,100ms收發一次數據發現就有丟包的情況了,想知道,芯源的MCU效果如何?有大佬試過使用內置晶振的話,串口波特率最大可以設置多少,不會丟包么
    發表于 01-19 06:48

    請問使用串口ISP波特率可以自己設定嗎?

    請問使用串口ISP,波特率可以自己設定嗎?
    發表于 01-14 08:27

    FDCAN 數據段波特率增加后發送失敗的問題分析

    客戶在使用 FDCAN 協議,仲裁段波特率配置位 1Mbit/s,數據段波特率配置為 5Mbit/s時,發現 FDCAN 發送功能異常。首先建議客戶使用 IC 內部回環模式進行測試發現 5M
    發表于 01-04 11:16 ?0次下載

    請問波特率參數如何設置?

    波特率參數如何設置?
    發表于 12-24 08:05

    支持小數波特率的意義是什么

    我看芯源有一款MCU是支持小數波特率,支持小數波特率的意義是什么?是為了數據傳輸更穩定?
    發表于 12-11 07:15

    請問支持小數波特率接收數據的意義在哪兒?

    我看芯源支持小數波特率,話說,支持小數波特率接收數據的意義在哪兒?是通訊更有精度嗎?
    發表于 12-02 07:17

    UART波特率計算及UART收發回顯實驗

    決定串口波特率的寄存器有BRR(Bite Rate Rigister),SEMR(Serial Extended Mode Rigister)和MDDR(Modulation Duty
    的頭像 發表于 10-17 09:51 ?2974次閱讀
    UART<b class='flag-5'>波特率</b>計算及UART收發回顯實驗

    串口波特率設置1200用不了是怎么回事?

    mcu:stm32f407zg 調試時,設置波特率為1200,而串口輸出為亂碼,電腦設置波特率19200來接收mcu的數據,卻能接收正確; (我以前沒有用RTT時,用stm32f103rct6
    發表于 09-23 07:19

    115200的波特率,為啥實際速度只有11KB/s?

    波特率≠真實速度! 這幾個概念確實容易混淆,但它們描述的是通信過程中不同層面的速率指標。讓我們一起來理清楚它們的區別和聯系↓ 主要區別解析 比特 (Bit Rate): 指每秒傳輸的二進制比特數量
    的頭像 發表于 09-10 11:18 ?753次閱讀

    請問如何使用低功耗 UART (LP UART) 波特率補償?

    如何使用低功耗 UART (LP UART) 波特率補償?
    發表于 08-21 07:05

    波特率是什么

    波特率是串行通信中的一個核心參數,用于描述數據在傳輸線路上的傳輸速率。以下從定義、單位、與比特的關系、實際應用及設置注意事項等方面進行詳細說明: 一、定義與本質 波特率(Baud Rate)指單位
    的頭像 發表于 07-22 11:11 ?8325次閱讀

    可編程電源的通信波特率應如何設置?

    (如RS-485專用電纜)并縮短通信距離。 在電源和PC添加終端電阻(如120Ω)以減少信號反射。 問題3:多臺電源通信沖突 原因:多臺電源共用同一串口,地址沖突或波特率不一致。 解決: 為每臺
    發表于 07-07 15:01

    基于瑞薩64位MPU RZ/G2L的uboot串口多波特率支持介紹

    本文主要介紹基于瑞薩64位MPU RZ/G2L,討論uboot下非常規波特率115200的支持方法,用于解決客戶對uboot下特殊波特率的需求,供客戶參考。
    的頭像 發表于 07-04 15:54 ?3056次閱讀
    基于瑞薩64位MPU RZ/G2L的uboot串口多<b class='flag-5'>波特率</b>支持介紹