如何實現(xiàn)RA UART實現(xiàn)串口波特率自適應?含詳細代碼!
在下述的內(nèi)容中,小編將會對手把手教大家如何去實現(xiàn)RA UART實現(xiàn)串口波特率自適應,如果串口波特率自適應內(nèi)容是您想要了解的焦點之一,不妨和小編共同閱讀這篇文章哦。
一、什么是串口波特率
串口波特率是指串行通信中每秒傳輸?shù)拇a元(符號)的個數(shù),它是對信號傳輸速率的一種度量。波特率與比特率的關系在于,如果數(shù)據(jù)不壓縮,波特率等于單位時間內(nèi)傳輸?shù)臄?shù)據(jù)位數(shù)。然而,如果數(shù)據(jù)進行了壓縮,單位時間內(nèi)傳輸?shù)臄?shù)據(jù)位數(shù)通常大于調(diào)制速率,使得交換使用波特和比特/秒偶爾會產(chǎn)生錯誤。波特率一般指的是調(diào)制解調(diào)器的通信速度,即線路狀態(tài)更改的次數(shù)。在計算機網(wǎng)絡通信中,波特率指單片機或計算機在串口通信時的速率,指的是信號被調(diào)制以后在單位時間內(nèi)的變化,即單位時間內(nèi)載波參數(shù)變化的次數(shù)模擬線路信號的速率。
以波特率為9600bit/s為例,這意味著每秒傳輸9600位數(shù)據(jù)。這包括了起始位、校驗位和停止位在內(nèi)的所有數(shù)據(jù)位,因此實際有效數(shù)據(jù)傳輸量會少于這個數(shù)值。當使用該波特率時,每個電平持續(xù)時間就是1/9600秒。計算發(fā)送一位數(shù)據(jù)所需系統(tǒng)時鐘數(shù)的方法是:系統(tǒng)時鐘數(shù)(BPS_CNT)等于系統(tǒng)時鐘頻率(FLCK)除以波特率(BPS)。例如,如果系統(tǒng)時鐘頻率為50MHz,每個時鐘周期為20ns,那么每個電平持續(xù)時間(1/9600秒)除以每個時鐘周期(20ns)就等于發(fā)送一位數(shù)據(jù)所需系統(tǒng)時鐘數(shù)(BPS_CNT)。
選擇串口波特率時,需要考慮通信雙方設備的兼容性。如果將調(diào)制解調(diào)器的波特率設置為高于其他設備的波特率,較快的設備通常需要改變其波特率以匹配速度較慢的設備。因此,通信雙方需要設置相同的波特率以確保數(shù)據(jù)傳輸?shù)耐胶驼_性。
二、如何實現(xiàn)RA UART實現(xiàn)串口波特率自適應(含代碼)
RA系列的開發(fā)環(huán)境中的FSP能夠以最簡單的GUI的方式來配置外設并生成封裝好的底層驅動代碼。但如果外設需要做動態(tài)功能上的切換,例如串口IRQ接收等功能,就需要手動通過寄存器配置來做動態(tài)修改。下面的例子是一個簡單的通過RXD管腳首先通過IRQ中斷觸發(fā)來偵測接收數(shù)據(jù)的start Bits時間,計算出實際波特率,然后做動態(tài)波特率配置。這樣就能夠實現(xiàn)波特率自適應(偵測)的功能。
演示的例程采用EK-RA2E1評估板,UART1 (P401, P402) 分別配置為TXD1 & RXD1。
具體配置
1、UART1配置
UART1的配置只需要按照應用要求來做就可以,但必須留意所選的RXD腳必須跟IRQ是復用的,以便做軟件切換。由于是做波特率自適應,屬性頁面中關于Baud的配置可以忽略。
2、GPT配置
由于需要通過定時器來做start bit的時間間隔測量,可以選用GPT/AGT使用one-shot/Periodic模式并留足夠Period值余量來確保start bit在低速下不會溢出。
3、P402管腳配置為IRQ4
將SCI1串口默認的(RXD)P402管腳改為IRQ4,并添加中斷入口函數(shù)。
中斷入口函數(shù)里面首先判斷是否發(fā)生了下降沿觸發(fā),然后啟動定時器,等再次中斷進入后,停止定時器,并取得定時器計數(shù)值,通過跟默認已知的系統(tǒng)時鐘參數(shù)相除,就能得到確切的波特率數(shù)值。
4、波特率計算和相關寄存器配置
取得波特率實際值后,通過硬件手冊上的相關的方程式就能夠反推出幾個控制波特率的寄存器的配置需要值 (brr, semr , cks等),并將相關計算出的數(shù)值修改到FSP SCI1的全局變量結構體內(nèi) (g_uart1_baud_setting)。
5、修改P402管腳配置為UART-RXD
然后將P402管腳修改為UART功能,并啟動 UART_Open() 函數(shù),設置波特率已配置標志。
6
這樣主函數(shù)就能夠直接通過已偵測到的波特率直接發(fā)送數(shù)據(jù)和開始接收數(shù)據(jù)。
以上便是小編此次帶來的全部內(nèi)容,十分感謝大家的耐心閱讀,想要了解更多相關內(nèi)容,或者更多精彩內(nèi)容,請一定關注我們網(wǎng)站哦。