RM新时代网站-首页

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

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

3天內不再提示

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

MCU開發(fā)加油站 ? 來源:strongerHuang ? 2024-10-23 16:12 ? 次閱讀

本文直接來源:strongerHuang

參考來源 | 瑞薩嵌入式小百科

現(xiàn)在的單片機資源越來越豐富了,其中我們常用的串口也是內部集成了多個,關鍵功能也越來越強了。 我們有些應用可能會用到串口自動識別波特率,今天就來講講MCU串口自動識別波特率底層的常見的原理,以及MCU的案例。

自動識別波特率常見原理

串口自動識別波特率(Auto Baud Rate Detection,簡稱ABR)的底層原理主要基于串口通信中數(shù)據(jù)的傳輸特性和設備間的交互機制。以下是幾種常見的自動波特率識別原理。

起始位和停止位檢測法:

原理:串口通信中,每個數(shù)據(jù)包的開始都會有一個起始位(通常為0),結束有一個或多個停止位(通常為1)。通過檢測這兩個位的時間間隔,可以計算出波特率。

特定模式檢測法:

原理:發(fā)送設備發(fā)送一系列具有特定模式的字節(jié)(如固定的字節(jié)序列或模式),接收設備嘗試以不同的波特率接收并檢測這些模式。當檢測到與發(fā)送模式匹配的數(shù)據(jù)時,即可確定當前的波特率。

波特率掃描法:

原理:發(fā)送設備在初始化階段發(fā)送一個包含多個不同波特率的掃描命令。接收設備在接收到這些命令后,會自動檢測并匹配最接近的波特率。

周期性信號檢測法: 原理:利用信號的周期性變化進行波特率檢測。通過分析信號的頻率和周期性特征,可以推算出波特率。

MCU硬件串口自動識別波特率

現(xiàn)在市面上很多新推出的MCU都有波特率自動識別的功能,這里以瑞薩RA系列單片機為例,配合e2 studio給大家講講串口自動識別波特率的配置,

1UART1配置

UART1的配置只需要按照應用要求來做就可以,但必須留意所選的RXD腳必須跟IRQ是復用的,以便做軟件切換。由于是做波特率自適應,屬性頁面中關于Baud的配置可以忽略。

82a2f8c2-90fc-11ef-a511-92fbcf53809c.png

2GPT配置

由于需要通過定時器來做start bit的時間間隔測量,可以選用GPT/AGT使用one-shot/Periodic模式并留足夠Period值余量來確保start bit在低速下不會溢出。

3P402管腳配置為IRQ4

將SCI1串口默認的(RXD)P402管腳改為IRQ4,并添加中斷入口函數(shù)。

82cece20-90fc-11ef-a511-92fbcf53809c.png

中斷入口函數(shù)里面首先判斷是否發(fā)生了下降沿觸發(fā),然后啟動定時器,等再次中斷進入后,停止定時器,并取得定時器計數(shù)值,通過跟默認已知的系統(tǒng)時鐘參數(shù)相除,就能得到確切的波特率數(shù)值。

82e0ad8e-90fc-11ef-a511-92fbcf53809c.png

4波特率計算和相關寄存器配置

取得波特率實際值后,通過硬件手冊上的相關的方程式就能夠反推出幾個控制波特率的寄存器的配置需要值 (brr, semr , cks等),并將相關計算出的數(shù)值修改到FSP SCI1的全局變量結構體內 (g_uart1_baud_setting)。

82ed415c-90fc-11ef-a511-92fbcf53809c.png

5修改P402管腳配置為UART-RXD

然后將P402管腳修改為UART功能,并啟動 UART_Open() 函數(shù),設置波特率已配置標志。

82fdd4ae-90fc-11ef-a511-92fbcf53809c.png

6這樣主函數(shù)就能夠直接通過已偵測到的波特率直接發(fā)送數(shù)據(jù)和開始接收數(shù)據(jù)。

830cff9c-90fc-11ef-a511-92fbcf53809c.png

832503e4-90fc-11ef-a511-92fbcf53809c.png

上述方法只需通過底層寄存器配置就能使簡單快速做波特率偵測、計算和配置。通過這種方式,只要芯片系統(tǒng)時鐘符合范圍要求,任何非通用或者極高速/超低速的波特率也是能使實現(xiàn)偵測并配置使用。

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

    關注

    6035

    文章

    44554

    瀏覽量

    634594
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17123

    瀏覽量

    350973
  • 串口
    +關注

    關注

    14

    文章

    1551

    瀏覽量

    76421
  • 波特率
    +關注

    關注

    2

    文章

    307

    瀏覽量

    34115

原文標題:MCU串口自動識別波特率底層的原理

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    什么是串口波特率串口波特率是指串口通信系統(tǒng)中傳輸數(shù)據(jù)的速率。在UART串口通信中,數(shù)據(jù)以位(bi
    的頭像 發(fā)表于 08-08 10:09 ?5925次閱讀
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>的分類及應用詳解

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

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

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

    STM32之ISP也同其他ISP一樣采用從機(STM32)波特率自動識別技術.它采用非?!安焕碇恰钡呐夹r?一個字節(jié)前面加一位校驗位使得“1”的個數(shù)保持為偶數(shù)),菜農對其不 慎滿意
    發(fā)表于 08-29 09:43

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

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

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

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

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

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

    串口波特率計算工具下載

    串口波特率計算工具
    發(fā)表于 03-11 09:38 ?179次下載

    STM32的串口自動識別波特率

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

    串口通訊實際的波特率測量

    平時使用串口打印出現(xiàn)亂碼的絕大部分原因是串口波特率沒對。那么我們怎么測量實際的波特率呢?在這之前,順便一起回顧一下波特率的概念。
    的頭像 發(fā)表于 04-04 17:27 ?7172次閱讀
    <b class='flag-5'>串口</b>通訊實際的<b class='flag-5'>波特率</b>測量

    串口波特率計算詳解

    STM32下波特率計算詳解波特率的計算????STM32下的波特率串口外設時鐘息息相關,USART 1的時鐘來源于APB2,USART 2-5的時鐘來源于APB1。在STM32中,有
    發(fā)表于 12-05 09:06 ?22次下載
    <b class='flag-5'>串口</b><b class='flag-5'>波特率</b>計算詳解

    什么是波特率?為什么要設置波特率?

    歡迎來到東用知識小課堂!一、什么是波特率?波特率(BaudRate)單位bps是用于衡量串口通信速度的單位,它表示每秒鐘發(fā)送的比特數(shù)。如果一個串口
    的頭像 發(fā)表于 04-08 00:00 ?6917次閱讀
    什么是<b class='flag-5'>波特率</b>?為什么要設置<b class='flag-5'>波特率</b>?

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

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

    串口傳輸速率低于波特率怎么辦 串口通信的波特率如何設置

    如果串口傳輸速率低于波特率,您可以嘗試以下方法來解決問題:   1. 檢查硬件連接:確保串口連接正確且牢固。檢查連接線是否完好,確保沒有松動或斷開的接觸。   2. 檢查波特率設置
    的頭像 發(fā)表于 09-08 16:23 ?6208次閱讀

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

    在電子設備的世界中,數(shù)據(jù)是通過各種方式進行傳輸?shù)?。其中?b class='flag-5'>串口通信是一種常見的數(shù)據(jù)傳輸方式,它以其簡單、可靠和廣泛的特性,成為了電子設備間通信的重要手段。而在串口通信中,有一個非常重要的參數(shù)——波特率
    的頭像 發(fā)表于 11-03 08:21 ?5151次閱讀
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b>通信為什么要設置<b class='flag-5'>波特率</b>?

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

    什么是串口波特率?串口通信為什么要設置波特率?波特率與比特的關系 如何選擇
    的頭像 發(fā)表于 01-22 16:10 ?2140次閱讀
    RM新时代网站-首页