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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MCU串口自動(dòng)識(shí)別波特率原理分析

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

本文直接來(lái)源:strongerHuang

參考來(lái)源 | 瑞薩嵌入式小百科

現(xiàn)在的單片機(jī)資源越來(lái)越豐富了,其中我們常用的串口也是內(nèi)部集成了多個(gè),關(guān)鍵功能也越來(lái)越強(qiáng)了。 我們有些應(yīng)用可能會(huì)用到串口自動(dòng)識(shí)別波特率,今天就來(lái)講講MCU串口自動(dòng)識(shí)別波特率底層的常見(jiàn)的原理,以及MCU的案例。

自動(dòng)識(shí)別波特率常見(jiàn)原理

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

起始位和停止位檢測(cè)法:

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

特定模式檢測(cè)法:

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

波特率掃描法:

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

周期性信號(hào)檢測(cè)法: 原理:利用信號(hào)的周期性變化進(jìn)行波特率檢測(cè)。通過(guò)分析信號(hào)的頻率和周期性特征,可以推算出波特率。

MCU硬件串口自動(dòng)識(shí)別波特率

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

1UART1配置

UART1的配置只需要按照應(yīng)用要求來(lái)做就可以,但必須留意所選的RXD腳必須跟IRQ是復(fù)用的,以便做軟件切換。由于是做波特率自適應(yīng),屬性頁(yè)面中關(guān)于Baud的配置可以忽略。

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

2GPT配置

由于需要通過(guò)定時(shí)器來(lái)做start bit的時(shí)間間隔測(cè)量,可以選用GPT/AGT使用one-shot/Periodic模式并留足夠Period值余量來(lái)確保start bit在低速下不會(huì)溢出。

3P402管腳配置為IRQ4

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

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

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

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

4波特率計(jì)算和相關(guān)寄存器配置

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    6030

    文章

    44486

    瀏覽量

    631847
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16865

    瀏覽量

    349853
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1540

    瀏覽量

    76040
  • 波特率
    +關(guān)注

    關(guān)注

    2

    文章

    293

    瀏覽量

    34032

原文標(biāo)題:MCU串口自動(dòng)識(shí)別波特率底層的原理

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開(kāi)發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是串口波特率?串口波特率的分類(lèi)及應(yīng)用詳解

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

    基于stm32的自動(dòng)識(shí)別波特率的設(shè)計(jì)

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

    【個(gè)人經(jīng)驗(yàn)分享】STM32ISP與STM32波特率自動(dòng)識(shí)別技術(shù)理解

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

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

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

    關(guān)于UART串口自動(dòng)識(shí)別波特率的問(wèn)題匯總,錯(cuò)過(guò)絕對(duì)后悔

    關(guān)于UART串口自動(dòng)識(shí)別波特率的問(wèn)題匯總,錯(cuò)過(guò)絕對(duì)后悔
    發(fā)表于 12-15 06:19

    單片機(jī)有沒(méi)有串口波特率自動(dòng)識(shí)別算法?

    單片機(jī)有沒(méi)有串口波特率自動(dòng)識(shí)別算法
    發(fā)表于 09-21 07:09

    串口波特率計(jì)算工具下載

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

    STM32的串口自動(dòng)識(shí)別波特率

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

    串口通訊實(shí)際的波特率測(cè)量

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

    串口波特率計(jì)算詳解

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

    什么是波特率?為什么要設(shè)置波特率?

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

    STM32F0的USART波特率自動(dòng)識(shí)別問(wèn)題

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

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

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

    什么是串口波特率?串口通信為什么要設(shè)置波特率?

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

    什么是串口波特率?串口通信為什么要設(shè)置波特率?

    什么是串口波特率串口通信為什么要設(shè)置波特率?波特率與比特的關(guān)系 如何選擇
    的頭像 發(fā)表于 01-22 16:10 ?1869次閱讀