18.4
UART波特率計算
決定串口波特率的寄存器有BRR(Bite Rate Rigister),SEMR(Serial Extended Mode Rigister)和MDDR(Modulation Duty Register)。波特率與寄存器的值的公式如圖19_8 所示。N表示BRR寄存器的值,B是波特率,PCLK 是外設時鐘的頻率(單位:MHz)。BGDM(Baud Rate Generator Double-Speed Mode Select)在RA6M5中,SCI掛載在PHBIU(Peripheral High Speed Bus Interface Unit)總線上,使用時鐘PCLKA,該時鐘默認頻率為100MHz。
圖19-8 波特率和誤差的計算公式
表1:波特率計算的相關參數描述
由于N存放的是整數,故只能將公式計算出來的值進行四舍五入,這樣肯定會存在誤差(Error)。例如,我們要配置當前波特率為115200bps。當 PCLK=100MHz,BGDM=0,ABCS=0,ABCSE=0,n=1,按照圖19_8公式,當前N為:
則當前誤差Error為:
由于N是四舍五入取得的,故Error有可能是負數,因此這里取絕對值。
大多數時候會有多組參數符合波特率要求,由于誤差越大,收發(fā)出錯的可能性越大,雖然可以用奇偶校驗避免這個問題,但奇偶校驗無法解決丟包問題,因此我們一般會選擇誤差最小的那組參數。例如:同樣是要求波特率為115200bps,但此時BGDM=1,ABCS=0,ABCSE=0,n=0,則此時的N為:
當前誤差Error為:
很明顯這組參數的誤差0.47%要小于上一組參數的 3.12%,因此我們會選擇這一組參數。
因為可選參數有很多組,所以我們需要遍歷所有可選的參數組合來尋找誤差小的那組參數,毫無疑問的對用戶來說是相當繁瑣的。瑞薩官方當然也想到了這一點,因此讀者在實際開發(fā)的過程中,可以直接使用FSP庫的R_SCI_UART_BaudCalculate函數來計算出適當的參數組。在通過Smart Configuration配置串口的時候,Smart Configuration也會將適當的參數組計算出來,存放到hal_data.c當中,用戶可以直接調用。
如果我們需要更小的誤差,則需要在SEMR的BRME位(Bit Rate Modulation Enable)寫1,使能比特率調制功能。此時波特率和寄存器之間的公式見圖19_9。
圖19-9 使用比特率調制功能時的波特率和誤差的計算公式
該公式與未使用比特率調制功能時的公式大同小異,不管是BRR setting還是Error,都只是在分母添加了個系數(256/M),M是8位寄存器MDDR的值,取值范圍(128~256),這極大的降低了波特率的誤差。例如:
同樣是要求波特率為115200bps,但此時 BGDM=1,ABCS=0,ABCSE=0,n=0,M=184,則此時N為:
當前誤差Error為:
對比未使用波特率調制器時誤差為0.47%,使用后為0.014%,誤差降低到了原來的3%,效果可以說是相當的好,但是尋找效果最佳的M的值也是很繁瑣的。讀者只需調用FSP庫的R_SCI_UART_BaudCalculate函數,就能找到最適合的參數組。這個函數的源碼在r_sci_uart.c,如果讀者對其實現過程感興趣,可以翻看這個函數的源碼。
18.5
實驗1:UART收發(fā)回顯
UART只需兩根信號線即可完成雙向通信,對硬件要求低,使得很多模塊都預留UART接口來實現與其他模塊或者控制器進行數據傳輸,比如GSM模塊,WIFI模塊、藍牙模塊等等。在硬件設計時,注意還需要一根“共地線”。
我們經常使用UART來實現控制器與電腦之間的數據傳輸。這使得我們調試程序非常方便,比如我們可以把一些變量的值、函數的返回值、寄存器標志位等等通過UART發(fā)送到串口調試助手,這樣我們可以非常清楚程序的運行狀態(tài),當我們正式發(fā)布程序時再把這些調試信息去除即可。
我們不僅僅可以將數據發(fā)送到串口調試助手,我們還可以在串口調試助手發(fā)送數據給控制器,控制器程序根據接收到的數據進行下一步工作。
首先,我們來編寫一個程序實現開發(fā)板與電腦通信,在開發(fā)板上電時通過UART發(fā)送一串字符串給電腦,然后開發(fā)板進入中斷接收等待狀態(tài),如果電腦有發(fā)送數據過來,開發(fā)板就會產生中斷,我們在中斷服務函數接收數據,并馬上把數據返回發(fā)送給電腦。
18.5.1
硬件設計
為利用UART實現開發(fā)板與電腦通信,需要用到一個USB轉串口(UART)的芯片:CH340G。CH340G是一個USB總線的轉接芯片,實現USB轉 UART、USB轉lrDA紅外或者USB轉打印機接口,我們使用其USB轉UART功能。具體電路設計見圖19_10a、圖19_10b、圖19_10c。
在下面的三塊開發(fā)板的電路圖中,CH340G的TXD 引腳與MCU芯片UART的RXD引腳連接,CH340G 的RXD引腳與MCU芯片UART的TXD引腳連接。CH340G芯片集成在開發(fā)板上,其地線(GND)已與控制器的GND連通。
圖19-10a 啟明6M5開發(fā)板:USB轉串口硬件設計
圖19-10b 啟明4M2開發(fā)板:USB轉串口硬件設計
圖19-10c 啟明2L1開發(fā)板:USB轉串口硬件設計
表2:調試串口引腳分配
-
寄存器
+關注
關注
31文章
5495瀏覽量
127813 -
串口
+關注
關注
15文章
1597瀏覽量
81393 -
uart
+關注
關注
22文章
1288瀏覽量
105541 -
波特率
+關注
關注
2文章
319瀏覽量
35313
原文標題:UART波特率計算及實驗1:UART收發(fā)回顯————瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(46)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
RA UART實現串口波特率自適應

基于靈動微電子MM32F013x 系列的UART硬件自適應波特率

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

如何為單個uart配置不同的波特率?
基于FPGA的波特率連續(xù)可調UART接口
串口通訊波特率出現誤差的因素
MAX3108 UART的波特率編程

串口波特率誤差產生的原因

如何實現適用于多個標準波特率的全雙工UART接口

uart波特率和傳輸頻率的關系 UART串口的常用波特率為多少

評論