hi3531串口波特率計算
波特率配置通過配置寄存器UART_IBRD 和UART_FBRD 可以設置UART 工作的波特率,波特率
計算公式為:
當前波特率=UART 參考時鍾頻率(1/2 總線時鍾頻率)/(16 x 分頻係數)
分頻係數有整數和小數兩部分組成,分別對應寄存器UART_IBRD 和UART_FBRD。
例如:UART 參考時鍾頻率為60MHz,如果配置UART_IBRD 為0x1E,UART_FBRD
為0x00,按照波特率計算公式,則當前的波特率為60/(16 x 30)=0.125Mbit/s。
UART 波特率配置的典型值為:9,600bit/s、14,400bit/s、19,200bit/s、38,400bit/s、
57,600bit/s、76,800bit/s、115,200bit/s、230,400bit/s、460,800bit/s。
分頻係數值的計算以及分頻係數寄存器的配置舉例如下:
如果要求波特率為230400bit/s,並且UART 參考時鍾頻率為100MHz,那麼分頻係數
為(100 x 106)/(16 x 230400)=27.1267,因此IBRD(整數部分)為27,FBRD(小
數部分)為0.1267。
計算6bit UART_FBRD 寄存器中的數值:根據m=integer(FBRDx2n+0.5)
(n=UART_FBRD 寄存器的寬度),計算出m=integer(0.1267x26+0.5)=8,在
UART_IBRD 寄存器中配置0x001B,UART_FBRD 寄存器中配置0x08。
當分頻係數小數部分配置成8 時,波特率除數的實際數值為27+8/64=27.125,產生的
波特率為(100 x 106)/(16 x 27.125)=230414.75,誤差率為(230414.75–230400)
/230400x100=0.006%。
使用6bit UART_FBRD 寄存器最大的誤差率為1/64 x 100=1.56%,當m=1 時會出現,
誤差率累計超過64 個時鍾周期。
最後更新:2017-04-03 12:53:45