簡介
MSP430FR2311是一款FRAM數字控制器,可以實現超低功耗,并且集成了豐富的外設模塊,可以滿足工業和消費等多種應用。MSP430FR2311中的eUSCI_A0支持UART通訊,本文對此UART模塊的寄存器配置進行了詳細的分析和計算,以幫助工程師對此UART模塊進行深入理解和靈活配置。
UART通訊模塊介紹
MSP430FR2311系統的eUSCI_A0模塊支持UART通訊。
UART屬于異步通信模式,MSP430FR2311通過UCA0RXD和UCA0TXD與其它芯片相連,芯片之間并沒有時鐘信號CLK連接。
在工程應用中,首先根據工程需要選擇合適的波特率(Baud Rate),在MSP430FR2311中成為BITCLK,然后選擇UART模塊的時鐘源BRCLK,根據選擇的波特率和時鐘源頻率,進行合適的寄存器配置,便可實現UART通訊。在MSP430FR2311中,UCA0CTLW0中的UCSSELx用來選擇時鐘源,波特率通過UCOS16, UCBRx, UCBRFx和 UCBRSx來設定。
低頻波特率配置
如果BRCLK是BITCLK的整數倍,即BRCLK/BITCLK=N,這時比較容易理解,在UART傳輸時,每個數據bit時長包含了N個BRCLK。
但往往BRCLK不是BITCLK的整數倍,這時要實現UART通訊就需要進行合適的調制(modulation),以避免累積誤差導致UART通訊失敗。在MSP430FR2311中,UCBRSx用來實現合理調制。
以傳輸一個8bit數據為例,在發送的bit位中包含start bit,8bit數據,parity bit和stop bit。
在SLAA049中,用圖標明了UCBRSx的modulation模式,它是以8bit為一個循環進行調制。
以時鐘源頻率BRCLK 32768Hz,波特率BITCLK 2400Hz為例,32768/2400=13.6533,所以UCOS16=0,UCBRx=13,modulation的作用主要是用來消除累積誤差,所以如下表所示,當累積誤差大于等于0.5時,UCBRSx對應的位置1,否則清零。經過計算,UCBRSx=0xB6.
表1 UCBRSx的生成說明
Start Bit | Data Bit0 (LSB) | Data Bit1 | Data Bit2 | Data Bit3 | Data Bit4 | Data Bit5 | Data Bit6 | |
UCBRSx |
m0 1 |
m1 0 |
m2 1 |
m3 1 |
m4 0 |
m5 1 |
m6 1 |
m7 0 |
Fractional |
0.6533*1 =0.6533 |
0.6533*2 =1.3066 |
0.6533*3 =1.9599 |
0.6533*4 =2.6132 |
0.6533*5 =3.2665 |
0.6533*6 =3.9198 |
0.6533*7 =4.5731 |
0.6533*8 =5.2264 |
再以時鐘源頻率BRCLK 1048576Hz,波特率BITCLK 115200為例,1048576/115200=9.1022,所以UCOS16=0,UCBRx=9,對于m5,雖然小數部分大于0.5,但是由于在m4的位置已經增加了1個BRCLK的時長,所以需要小數部分累積到大于1.5后,UCBRSx的位才會設置為1。經過計算,UCBRSx=0x08.
表2 UCBRSx的生成說明
Start Bit | Data Bit0 (LSB) | Data Bit1 | Data Bit2 | Data Bit3 | Data Bit4 | Data Bit5 | Data Bit6 | |
UCBRSx |
m0 0 |
m1 0 |
m2 0 |
m3 0 |
m4 1 |
m5 0 |
m6 0 |
m7 0 |
Fractional |
0.1022*1 =0.1022 |
0.1022*2 =0.2044 |
0.1022*3 =0.3066 |
0.1022*4 =0.4088 |
0.1022*5 =0.5110 |
0.1022*6 =0.6132 |
0.1022*7 =0.7154 |
0.1022*8 =0.8176 |
MSP430FR2311 User’s Guide中提供了UCBRSx的調制數據,方便快速獲得正確的UCBRSx值。
高頻波特率配置
MSP430FR2311中包含了一個過采樣波特率模式(oversampling baud-rate mode),用來支持高頻時鐘源。UCA0MCTLW中UCOS16用來使能過采樣波特率模式。當UCOS16=1時,過采樣波特率模式使能,此時UCBRx中1對應16個BRCLK時長,UCBRFx中1對應1個BRCLK時長。
以時鐘源頻率BRCLK 4000000Hz,波特率BITCLK 57600為例,4000000/57600=69.4444,再將69除以16,商為4,余數為5,所以UCOS16=1,UCBRx=4,UCBRFx=5. UCBRSx的設置如前面的討論,不再贅述,UCBRSx=0x55.
在過采樣波特率模式中,數值判定(majority votes)時,總是以1/16的數據bit時長(1/BITCLK)來分段。
審核編輯:郭婷
-
控制器
+關注
關注
112文章
16336瀏覽量
177826 -
寄存器
+關注
關注
31文章
5336瀏覽量
120238 -
uart
+關注
關注
22文章
1235瀏覽量
101355
發布評論請先 登錄
相關推薦
評論