MSP430FR2311 中UART模块寄存器配置的分析和计算

作者: TI 工程师 Max Han

简介

MSP430FR2311是一款FRAM数字控制器,可以实现超低功耗,并且集成了丰富的外设模块,可以满足工业和消费等多种应用。MSP430FR2311中的eUSCI_A0支持UART通讯,本文对此UART模块的寄存器配置进行了详细的分析和计算,以帮助工程师对此UART模块进行深入理解和灵活配置。

UART通讯模块介绍

图1是MSP430FR2311的系统架构图,eUSCI_A0模块如红框所示,它支持UART通讯。

图 1 MSP430FR2311系统架构图

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为一个循环进行调制。

图2 UCBRSx的modulation模式

以时钟源频率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

 

所以调制后的Timing如图3所示,图中13代表13个BRCLK时长,14代表14个BRCLK时长。

图3 Modulated Timing

再以时钟源频率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值。如图4所示。

图 4 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)来分段。MSP430FR2311 User Guide中提供了UCBRFx的调制表格,如表3所示。

表3 UCBRFx调制模式

所以在这个例子中,一个数据bit时长如图5所示。

图5 UCBRFx调制

参考文献

  1. MSP430FR231x Mixed-Signal Microcontrollers, datasheet, SLASE58C
  2. MSP430 Universal Synchronous Asynchronous Receive/Transmit Communication Interface, SLAA049
  3. MSP430FR4xx and MSP430FR2xx Family User's Guide, SLAU445H

 

  • 请问您F28335有没有这个调制的功能,我目前能使用的最高波特率57600,而且还存在比较大的误码率,一旦提升至115200输出完全是乱码。

    万分感谢您!!