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