本文直接來(lái)源:strongerHuang
現(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)稱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的配置可以忽略。
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ù)。
中斷入口函數(shù)里面首先判斷是否發(fā)生了下降沿觸發(fā),然后啟動(dòng)定時(shí)器,等再次中斷進(jìn)入后,停止定時(shí)器,并取得定時(shí)器計(jì)數(shù)值,通過(guò)跟默認(rèn)已知的系統(tǒng)時(shí)鐘參數(shù)相除,就能得到確切的波特率數(shù)值。
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)。
5修改P402管腳配置為UART-RXD
然后將P402管腳修改為UART功能,并啟動(dòng) UART_Open() 函數(shù),設(shè)置波特率已配置標(biāo)志。
6這樣主函數(shù)就能夠直接通過(guò)已偵測(cè)到的波特率直接發(fā)送數(shù)據(jù)和開(kāi)始接收數(shù)據(jù)。
上述方法只需通過(guò)底層寄存器配置就能使簡(jiǎn)單快速做波特率偵測(cè)、計(jì)算和配置。通過(guò)這種方式,只要芯片系統(tǒng)時(shí)鐘符合范圍要求,任何非通用或者極高速/超低速的波特率也是能使實(shí)現(xiàn)偵測(cè)并配置使用。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635212 -
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351181 -
串口
+關(guān)注
關(guān)注
14文章
1554瀏覽量
76509 -
波特率
+關(guān)注
關(guān)注
2文章
307瀏覽量
34141
原文標(biāo)題:MCU串口自動(dòng)識(shí)別波特率底層的原理
文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開(kāi)發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論