在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

關于STM32自動識別UART串口波特率的問題

5RJg_mcuworld ? 來源:lq ? 2019-01-24 16:23 ? 次閱讀

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

1寫在前面

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

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

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

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

2

STM32硬件自動波特率檢測

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

1.ABR應用地方

事先不知道系統的通信速度。

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

2.支持ABR系列

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

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

3.自動波特率檢測模式

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

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

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

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

模式2:0x7F;

模式3:0x55;

提示:

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

B.在7位數據長度模式下,不支持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)決定通信速率范圍(尤其是最大通信速率)。接收器采用不同的用戶可配置過采樣技術,可區分有效輸入數據和噪聲,從而用于恢復數據。這可以在最大通信速率與抗噪聲/時鐘不準確性之間實現平衡。

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

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

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

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

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

其中:

? 預期波特率取決于發送設備

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

6.誤差

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

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

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

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

    關注

    2270

    文章

    10900

    瀏覽量

    356045
  • 波特率
    +關注

    關注

    2

    文章

    307

    瀏覽量

    34142
  • ABR
    ABR
    +關注

    關注

    1

    文章

    11

    瀏覽量

    9695

原文標題:關于STM32硬件自動波特率檢測知識,項目中會用到!

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32串口波特率大小計算案例

    波特率的計算 STM32下的波特率串口外設時鐘息息相關,USART 1的時鐘來源于APB2,USART 2-5的時鐘來源于APB1。在STM32
    的頭像 發表于 10-23 14:19 ?8343次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>波特率</b>大小計算案例

    什么是串口波特率串口波特率的分類及應用詳解

    什么是串口波特率串口波特率是指串口通信系統中傳輸數據的速率。在UART
    的頭像 發表于 08-08 10:09 ?5975次閱讀
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>的分類及應用詳解

    基于stm32自動識別波特率的設計

    某設備是以某個波特率發送固定已知數據的,用f4串口接收數據,怎么判別這個設備的波特率是多少呢
    發表于 09-14 14:12

    【個人經驗分享】STM32ISP與STM32波特率自動識別技術理解

    STM32之ISP也同其他ISP一樣采用從機(STM32)波特率自動識別技術.它采用非常“不理智”的偶校驗(一個字節前面加一位校驗位使得“1”的個數保持為偶數),菜農對其不 慎滿意
    發表于 08-29 09:43

    29035串口刷寫程序波特率自動識別DSP是怎么實現的

    有用的程序數據,那么對于沒有程序數據的地址上面的數據應該都是FF,那么這個FF是否也要用數據流傳送給DSP芯片2、對于串口刷寫時,波特率自動識別DSP是怎么實現的,對于這個過程,上位機需要做哪些動作
    發表于 12-07 11:35

    關于UART串口自動識別波特率的問題匯總,錯過絕對后悔

    關于UART串口自動識別波特率的問題匯總,錯過絕對后悔
    發表于 12-15 06:19

    如何實現嵌入式里串口(UART)自動波特率識別程序設計?

    如何實現嵌入式里串口(UART)自動波特率識別程序設計?
    發表于 02-08 06:34

    單片機有沒有串口波特率自動識別算法?

    單片機有沒有串口波特率自動識別算法
    發表于 09-21 07:09

    STM32串口自動識別波特率

    STM32串口自動識別波特率
    的頭像 發表于 03-04 09:53 ?9660次閱讀

    串口波特率計算詳解

    STM32波特率計算詳解波特率的計算????STM32下的波特率串口外設時鐘息息相關,USA
    發表于 12-05 09:06 ?22次下載
    <b class='flag-5'>串口</b><b class='flag-5'>波特率</b>計算詳解

    STM32波特率計算詳解

    波特率的計算 STM32下的波特率串口外設時鐘息息相關,USART 1的時鐘來源于APB2,USART 2-5的時鐘來源于APB1。在STM32
    發表于 02-11 10:46 ?20次下載
    <b class='flag-5'>STM32</b>下<b class='flag-5'>波特率</b>計算詳解

    關于UART/CAN/PLL時鐘計算波特率的方法

    SWM系列關于UART/CAN/PLL等時鐘相關模塊,計算波特率的方法。
    的頭像 發表于 03-18 16:52 ?7919次閱讀

    STM32F0的USART波特率自動識別問題

    電子發燒友網站提供《STM32F0的USART波特率自動識別問題.pdf》資料免費下載
    發表于 08-01 11:00 ?2次下載
    <b class='flag-5'>STM32</b>F0的USART<b class='flag-5'>波特率</b><b class='flag-5'>自動識別</b>問題

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

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

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

    現在的單片機資源越來越豐富了,其中我們常用的串口也是內部集成了多個,關鍵功能也越來越強了。 我們有些應用可能會用到串口自動識別波特率,今天就來講講MCU
    的頭像 發表于 10-23 16:12 ?581次閱讀
    MCU<b class='flag-5'>串口</b><b class='flag-5'>自動識別</b><b class='flag-5'>波特率</b>原理分析
    主站蜘蛛池模板: yyy6080韩国三级理论| 天天干小说| bt天堂中文在线| 97色资源| 色天天综合色天天看| 国内精品网站| 欧美黄色精品| 日本aaaaa级片| 亚洲精品色一区色二区色三区| 日本高清视频色视频kk266| 亚洲一区二区在线播放| 男人j进女人j的视频一进一出| 一级毛片不收费| 五月天丁香花婷婷| 你懂的在线观看网址| 国产农村妇女毛片精品久久久 | 深夜久久| 国模欢欢大尺度| 色网站在线看| 黄视频在线观看免费| 中国又粗又大又爽的毛片| 免费视频一级片| 公开免费视频| 亚洲色图欧美视频| 免费国产成高清人在线视频| 97色偷偷| 一女被两男吃奶玩乳尖口述| 欧美成人午夜视频| 夜夜夜夜操| 成人午夜精品久久久久久久小说| 亚洲国产婷婷香蕉久久久久久 | 91色爱| 性夜黄a爽影免费看| 特黄特色| 国产精品成人va在线观看入口| 日本xxwwxxww视频免费丝袜| 一区二区三区精品视频| 性欧美高清强烈性视频| 国产一级特黄特色aa毛片| 欧美日日日| 国产在线视欧美亚综合|