TI中文支持网
TI专业的中文技术问题搜集分享网站

请教关于msp430F5438 串口波特率设置的问题

我想得到57600的波特率。

我的 BRCLK frequency  设置为UCSSEL__SMCLK,而SMCLK选择的是默认的DCOCLKDIV,即1048576Hz。

查表可知,在 BRCLK frequency  = 1048576Hz,Baud Rate = 57600,且UCOS16为0情况下:UCBRx = 18,UCBRSx=1。

于是有以下设置:

UCA3CTL1 |= UCSSEL__SMCLK; UCA3BR0 = 0x12 ; //即十进制的18
UCA3BR1 = 0x00 ; UCA3MCTL =UCBRS_1;

经测试正常。

然后,按照公式计算,过程如下:

N=f_BRCLK /Baudrate = 1048576/57600=18.2044

因为N大于16,所以使用过采样模式,即需要设置 UCOS16=1,
UCBRx = INT(N/16) = INT(N/16) = INT(18.2044/16) = INT(1.137775) = 1,

UCBRFx=round(((N/16) – INT(N/16)) × 16 )=round(0.137775*16)=round(2.2044)=2

因此,有以下设置:

UCA3CTL1 |= UCSSEL__SMCLK; UCA3BR0 = 0x01 ; UCA3BR1 = 0x00 ; UCA3MCTL =UCBRF_2+ UCOS16;

但,结果是:乱码。

以为是UCBRS没有设置的原因,于是把UCBRS从UCBRS_0到UCBRS_7挨个试,但,都是乱码。

不知道原因所在。请给予帮助。谢谢!

灰小子:

波特率计算工具

http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html

tao gao:

回复 灰小子:

谢谢您如此快的回复!

通过这个波特率计算工具计算出来的结果和查表的结果是一致的。

但,我还是有些疑问。

如前面的提问所述:

N=f_BRCLK /Baudrate = 1048576/57600=18.2044

因为N大于16,所以使用过采样模式,即需要设置 UCOS16=1。

为什么不能用过采样模式呢?

赞(0)
未经允许不得转载:TI中文支持网 » 请教关于msp430F5438 串口波特率设置的问题
分享到: 更多 (0)