一、波特率介紹
波特率表示單位時間內傳送的碼元符號的個數,它是對符號傳輸速率的一種度量,它用單位時間內載波調制狀態改變的次數來表示,即指一個單位時間內傳輸符號的個數(Baud,單位符號:Bd)。
CW32L083 內部集成 6 個通用異步收發器 (UART),支持異步全雙工、同步半雙工和單線半雙工模式,支持硬件數據流控和多機通信;可編程數據幀結構,可以通過小數波特率發生器提供寬范圍的波特率選擇。UART 控制器工作在雙時鐘域下,允許在深度休眠模式下進行數據的接收,接收完成中斷可以喚醒 MCU 回到運行模式。
波特率發生器框圖如下:
二、波特率設置
1.同步半雙工模式下
波特率計算公式:BaudRate = UCLK / 12
其中,UCLK 是 UART 的傳輸時鐘,其來源可以是 PCLK、LSE 或 LSI,通過控制寄存器 UARTx_CR2 的 SOURCE 位域來選擇。
2.異步模式下
UART 的接收和發送波特率是相同的,由同一個波特率發生器產生。波特率發生器支持 16 倍采樣、8 倍采樣、4 倍采樣和專用采樣這 4 種采樣模式,具體的采樣模式通過控制寄存器 UARTx_CR1 的 OVER 位域來選擇。UCLK是 UART的傳輸時鐘,其來源可以是 PCLK、LSE或 LSI,具體來源通過 UARTx_CR2.SOURCE來選擇。BRRI(UARTx_BRRI[15:0]),是波特率計數器的整數部分,可設置范圍為 1 ~ 65535。BRRF(UARTx_BRRF[3:0]),是波特率計數器的小數部分,可設置范圍為 0 ~ 15。
OVER = 00,設置 16 倍采樣,波特率計算公式:BaudRate = UCLK / ( 16×BRRI + BRRF )
OVER = 01,設置 8 倍采樣,波特率計算公式:BaudRate = UCLK / ( 8×BRRI )
OVER = 10,設置 4 倍采樣,波特率計算公式:BaudRate = UCLK / ( 4×BRRI )
OVER = 11,設置專用采樣,波特率計算公式:BaudRate = ( 256×UCLK ) / BRRI
專用采樣僅適合傳輸時鐘源為 LSE 或者 LSI 時,進行 2400bps、4800bps 或 9600bps 波特率下的 UART 通信。
UCLK 為 24MHz 波特率設置示例(OVER = 00)
UCLK 為 32.768kHz 波特率設置示例(OVER = 11)
3.波特率自動檢測
CW32L083 使用 UART 作為從機進行通信時,可以通過自動波特率檢測的方法,自動適應 UART 主機的波特率。可將通用定時器(GTIM)的輸入捕獲來源配置為 UART 的 RXD 信號,或者將 GTIM 的門控信號配置為 UART 的 RXD 信號,配合使用相關軟件算法測量 UART 的波特率,以實現波特率自適應。
三、波特率計數器寄存器定義
1.UARTx_BRRI 波特率計數器整數部分寄存器
Address offset: 0x0C??Reset value: 0x0000 0000
2.UARTx_BRRF 波特率計數器小數部分寄存器
Address offset: 0x10??Reset value: 0x0000 0000
四、波特率設置舉例
當傳輸時鐘 UCLK 的頻率為 24MHz 時,要求配置 BaudRate = 115200 bps,計算 16×BRRI + BRRF = 24000000 / 115200 = 208.33 則:
BRRI = 208.33 / 16 = 13.02,最接近的整數是:13(0x0D)
BRRF = 0.02×16 = 0.32,最接近的整數是:0(0x00)
即需要設置 UARTx_BRRI 為 0x0D,UARTx_BRRF 為 0x00 此時,實際波特率 BaudRate = 115384.62 bps,誤差率為 0.16%。
來源:武漢芯源半導體
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理
審核編輯 黃宇
-
單片機
+關注
關注
6042文章
44617瀏覽量
637566 -
uart
+關注
關注
22文章
1243瀏覽量
101639 -
波特率
+關注
關注
2文章
308瀏覽量
34240
發布評論請先 登錄
相關推薦
評論