本文直接來源:strongerHuang
現在的單片機資源越來越豐富了,其中我們常用的串口也是內部集成了多個,關鍵功能也越來越強了。 我們有些應用可能會用到串口自動識別波特率,今天就來講講MCU串口自動識別波特率底層的常見的原理,以及MCU的案例。
自動識別波特率常見原理
串口自動識別波特率(Auto Baud Rate Detection,簡稱ABR)的底層原理主要基于串口通信中數據的傳輸特性和設備間的交互機制。以下是幾種常見的自動波特率識別原理。
起始位和停止位檢測法:
原理:串口通信中,每個數據包的開始都會有一個起始位(通常為0),結束有一個或多個停止位(通常為1)。通過檢測這兩個位的時間間隔,可以計算出波特率。
特定模式檢測法:
原理:發送設備發送一系列具有特定模式的字節(如固定的字節序列或模式),接收設備嘗試以不同的波特率接收并檢測這些模式。當檢測到與發送模式匹配的數據時,即可確定當前的波特率。
波特率掃描法:
原理:發送設備在初始化階段發送一個包含多個不同波特率的掃描命令。接收設備在接收到這些命令后,會自動檢測并匹配最接近的波特率。
周期性信號檢測法: 原理:利用信號的周期性變化進行波特率檢測。通過分析信號的頻率和周期性特征,可以推算出波特率。
MCU硬件串口自動識別波特率
現在市面上很多新推出的MCU都有波特率自動識別的功能,這里以瑞薩RA系列單片機為例,配合e2 studio給大家講講串口自動識別波特率的配置,
1UART1配置
UART1的配置只需要按照應用要求來做就可以,但必須留意所選的RXD腳必須跟IRQ是復用的,以便做軟件切換。由于是做波特率自適應,屬性頁面中關于Baud的配置可以忽略。
2GPT配置
由于需要通過定時器來做start bit的時間間隔測量,可以選用GPT/AGT使用one-shot/Periodic模式并留足夠Period值余量來確保start bit在低速下不會溢出。
3P402管腳配置為IRQ4
將SCI1串口默認的(RXD)P402管腳改為IRQ4,并添加中斷入口函數。
中斷入口函數里面首先判斷是否發生了下降沿觸發,然后啟動定時器,等再次中斷進入后,停止定時器,并取得定時器計數值,通過跟默認已知的系統時鐘參數相除,就能得到確切的波特率數值。
4波特率計算和相關寄存器配置
取得波特率實際值后,通過硬件手冊上的相關的方程式就能夠反推出幾個控制波特率的寄存器的配置需要值 (brr, semr , cks等),并將相關計算出的數值修改到FSP SCI1的全局變量結構體內 (g_uart1_baud_setting)。
5修改P402管腳配置為UART-RXD
然后將P402管腳修改為UART功能,并啟動 UART_Open() 函數,設置波特率已配置標志。
6這樣主函數就能夠直接通過已偵測到的波特率直接發送數據和開始接收數據。
上述方法只需通過底層寄存器配置就能使簡單快速做波特率偵測、計算和配置。通過這種方式,只要芯片系統時鐘符合范圍要求,任何非通用或者極高速/超低速的波特率也是能使實現偵測并配置使用。
-
單片機
+關注
關注
6058文章
44815瀏覽量
644418 -
mcu
+關注
關注
146文章
17699瀏覽量
357885 -
串口
+關注
關注
14文章
1580瀏覽量
78308 -
波特率
+關注
關注
2文章
310瀏覽量
34617
原文標題:MCU串口自動識別波特率底層的原理
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
【個人經驗分享】STM32ISP與STM32波特率自動識別技術理解
29035串口刷寫程序波特率的自動識別DSP是怎么實現的
串口波特率計算詳解

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

評論