EFM32 LEUART波特率计算
一、說明
LEUART和EFM32單片機中的其他LE外圍設備一樣,可以由三個不同的時鐘源驅動,低頻射頻振蕩器(LFRCO)、低頻晶體振蕩器(LFXO)和除以2或4的高頻核心時鐘(HFCORECLK_LE/2,HFCORECLK_LE/4)。HFCORECLK_LE又可以由高頻RC振蕩器(HFRCO)、高頻晶體振蕩器(HFXO)甚至上述任何一種低頻振蕩器驅動。這種分配時鐘的靈活性,為系統設計人員提供了使用LEUART特性的廣泛可能性。這意味著在EM2的低功耗運行中,除了在LF時鐘源上運行外,當需要更多的UART通信通道時,LEUART也可以作為UART的補充。然而,要使LEUART的波特率達到9600 baud/s 以上,所選的時鐘源必須是僅在EM1-EM0中可用的高速時鐘。
注意:EFM32的HFCORECLKLE有上限,例如EFM32LG系列的HFCORECLKLE 的最大值為12MHz,如下如圖。
波特率計算公式:
fLEUARTn:時鐘頻率
LEUARTn_CLKDIV:分頻器數值(256-32760)
二、以下只計算2種時鐘頻率的波特率(br)
如果fLEUARTn使用LFXO(32768Hz)作為時鐘源,那么:
br = 32768/(1+Div/256)
Div = 256, br = 16384
Div = 32760,br = 255 (不能四舍五入,有小數必須進1)
所以:255 <= br <= 16384。
但還是建議使用官方建議值(300-9600)。
如果fLEUARTn使用HFCORECLK_LE/4(12MHz)作為時鐘源,那么:
br = 12000000/(1+Div/256)
Div = 256, br = 6000000
Div = 32760,br = 93046 (不能四舍五入,有小數必須進1)
所以:93046 <= br <= 6000000。
但還是建議使用官方建議值,最大230400。
三、使用RTOS的測試
以下測試使用FreeRTOS,并在接收中斷里使用了RTOS的Timer,致使中斷服務程序中代碼過于復雜,在波特率較大(1000000以上)的時候造成接收異常,丟包。
四、沒有使用RTOS的測試
相關文檔:
總結
以上是生活随笔為你收集整理的EFM32 LEUART波特率计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络系统设计过程中,物理网络设计阶段的任
- 下一篇: 苹果ipad怎么用计算机来唱歌,App