99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的串口自動識別波特率

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 作者:黃工的嵌入式技術 ? 2020-03-04 09:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近有朋友問關于UART串口自動識別波特率的問題,今天就在這里寫點相關內容。

1寫在前面

關于自動識別UART串口波特率的這個問題,相信有項目經驗,或者認真研究過串口的朋友都應該多多少少知道一點自動識別的方法。

可能絕大部分知道的就是通過波特率一一匹配來實現(xiàn),這種方法也是最常見,而且還比較有效的一種方法。

上面這種方法就是大家熟知的通過軟件來檢測波特率的方法,其實,還有一種方法就是通過硬件自身完成波特率來檢測。

針對STM32,在ST官方其實在應用筆記和參考手冊文檔中都有提到。下面,我結合文檔簡單講下硬件自動波特率檢測的內容。

2

STM32硬件自動波特率檢測

ABR:Auto Baud Rate,自動波特率檢測使接收設備能夠接受來自各種以不同速率工作的發(fā)送設備的數(shù)據,無需事先建立數(shù)據速率。

1.ABR應用地方

事先不知道系統(tǒng)的通信速度。

系統(tǒng)正在使用精確度相對較低的時鐘源且該機制允許在不測量時鐘偏差的情況下獲得正確的波特率。

2.支持ABR系列

在STM32中,支持硬件自動波特率檢測的只有部門系列才支持,之前出來比較早的系列不支持(如F1 F4),這后面推出來的系列都支持這個功能,包含最新才出來的STM32H7、G0系列都支持。

當然,對于內置ABR的STM32系列設備而言,并非所有實例化USART接口均支持自動波特率檢測。

3.自動波特率檢測模式

ABR是指接收設備通過檢查第一個字符(通常是預先選擇的標志字符)確定傳入數(shù)據速率的過程。

STM32產品上的自動波特率檢測功能內置的各種模式基于不同字符模式:

模式0:以“1”位為開頭的任意字符;

模式1:以10xx模式開頭的任何字符;

模式2:0x7F;

模式3:0x55;

提示:

A.在所有ABR模式下,都會在同步數(shù)據接收期間多次檢測波特率,并將每一次的檢測值與上一次的檢測值進行比較。

B.在7位數(shù)據長度模式下,不支持0x7F和0x55幀檢測ABR模式。

4.代碼配置

相關代碼,官方提供有基于(標準外設庫、HAL庫的)參考例程,比如F0標準外設庫參考代碼:

static void AutoBauRate_StartBitMethod(void){ /* USART enable */ USART_Cmd(EVAL_COM1, ENABLE); /* Configure the AutoBaudRate method */ USART_AutoBaudRateConfig(EVAL_COM1, USART_AutoBaudRate_StartBit); /* Enable AutoBaudRate feature */ USART_AutoBaudRateCmd(EVAL_COM1, ENABLE); /* Wait until Receive enable acknowledge flag is set */ while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_REACK) == RESET) {} /* Wait until Transmit enable acknowledge flag is set */ while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TEACK) == RESET) {} /* Loop until the end of Autobaudrate phase */ while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_ABRF) == RESET) {} /* If AutoBaudBate error occurred */ if (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_ABRE) != RESET) { /* Turn on LED3 */ STM_EVAL_LEDOn(LED3); } else { /* Turn on LED2 */ STM_EVAL_LEDOn(LED2); /* Wait until RXNE flag is set */ while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET) {} /* Wait until TXE flag is set */ while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXE) == RESET) {} /* Send received character */ USART_SendData(EVAL_COM1, USART_ReceiveData(EVAL_COM1)); /* clear the TE bit (if a transmission is on going or a data is in the TDR, it will be sent before efectivelly disabling the transmission) */ USART_DirectionModeCmd(EVAL_COM1, USART_Mode_Tx, DISABLE); /* Check the Transfer Complete Flag */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} } /* USART Disable */ USART_Cmd(EVAL_COM1, DISABLE);}

5.ABR誤差計算

由USART時鐘源( fCK)決定通信速率范圍(尤其是最大通信速率)。接收器采用不同的用戶可配置過采樣技術,可區(qū)分有效輸入數(shù)據和噪聲,從而用于恢復數(shù)據。這可以在最大通信速率與抗噪聲/時鐘不準確性之間實現(xiàn)平衡。

可通過編程USARTx_CR1寄存器中的OVER8位來選擇過采樣方法,可以是波特率時鐘的16倍或8倍。

USART時鐘源頻率必須與預期通信速率兼容:

? 16倍過采樣時,波特率介于fCK/65535與fCK/16之間。

? 8倍過采樣時,波特率介于fCK/65535與fCK/8之間。

波特率誤差取決于USART時鐘源、過采樣方法和ABR模式。

其中:

? 預期波特率取決于發(fā)送設備

? 實際波特率是USART接收器使用自動波特率檢測操作確定的波特率。

6.誤差

下圖來自官方測試數(shù)據,基于:fCK = 72 MHz時ABR的誤差計算,115200 bits/s預期波特率

從上圖可以看出:ABR模式2和3的精確度高于模式0和1;它們的波特率誤差值更低。

不過,由于預期波特率與實際波特率之間的誤差小于1%,因此所有模式的結果均正常。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2293

    文章

    11032

    瀏覽量

    364984
  • uart
    +關注

    關注

    22

    文章

    1276

    瀏覽量

    103958
  • 波特率
    +關注

    關注

    2

    文章

    313

    瀏覽量

    34953
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

    Software”在“System Configuration”→“Serial Port”中調整波特率。 3. 通過SCPI命令設置(適用于自動化測試系統(tǒng)) 步驟: 使用終端工具(如PuTTY、Tera
    發(fā)表于 07-07 15:01

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

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

    RS232通信的波特率設置說明

    RS232通信的波特率設置是確保數(shù)據正確傳輸?shù)年P鍵參數(shù)之一。以下是對RS232通信波特率設置的說明: 一、波特率的概念 波特率是指每秒傳輸?shù)谋忍財?shù)(bps),是衡量數(shù)據傳輸速度的重要指
    的頭像 發(fā)表于 12-10 16:26 ?4372次閱讀

    波特率設置中的常見問題解析

    在數(shù)字通信系統(tǒng)中,波特率是一個關鍵參數(shù),它直接影響數(shù)據傳輸?shù)男屎涂煽啃?。然而,在實際應用中,波特率的設置往往會引起一些常見的問題。 一、波特率與數(shù)據速率的混淆 問題描述: 許多人會將波特率
    的頭像 發(fā)表于 11-22 10:06 ?1717次閱讀

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

    波特率(Baud Rate)是串行通信中的一個重要參數(shù),它指的是信號傳輸?shù)乃俾剩磫挝粫r間內傳輸?shù)姆枺ɑ蛐盘枲顟B(tài))的數(shù)量。在串行通信中,波特率決定了數(shù)據傳輸?shù)乃俣?,因此對于通信效率和設備兼容性
    的頭像 發(fā)表于 11-22 10:01 ?1660次閱讀

    常見的波特率標準和協(xié)議

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

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

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

    波特率設置在串口通信中的重要性

    在現(xiàn)代通信技術中,串口通信作為一種基本的數(shù)據傳輸方式,扮演著不可或缺的角色。無論是在計算機與外部設備的連接,還是在工業(yè)自動化系統(tǒng)中的數(shù)據交換,串口通信都發(fā)揮著重要作用。波特率,作為
    的頭像 發(fā)表于 11-22 09:51 ?3015次閱讀

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

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

    串口波特率是多少?

    波特率是多少
    發(fā)表于 11-05 15:40

    MCU串口自動識別波特率原理分析

    現(xiàn)在的單片機資源越來越豐富了,其中我們常用的串口也是內部集成了多個,關鍵功能也越來越強了。 我們有些應用可能會用到串口自動識別波特率,今天就來講講MCU
    的頭像 發(fā)表于 10-23 16:12 ?2002次閱讀
    MCU<b class='flag-5'>串口</b><b class='flag-5'>自動識別</b><b class='flag-5'>波特率</b>原理分析

    波特率9600和115200的區(qū)別

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

    波特率與比特有何關系 波特率與數(shù)據傳輸速率的關系

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

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

    頻率是兩個關鍵參數(shù),它們之間存在一定的關系,并且UART串口有一系列常用的波特率。以下是對這兩個概念的介紹。 一、UART波特率和傳輸頻率的關系 1. 定義與區(qū)別 波特率(Baud R
    的頭像 發(fā)表于 10-06 16:12 ?7014次閱讀
    uart<b class='flag-5'>波特率</b>和傳輸頻率的關系 UART<b class='flag-5'>串口</b>的常用<b class='flag-5'>波特率</b>為多少

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

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