This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR58671:波特率问题

Guru**** 2379070 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1489135/msp430fr58671-baud-rate-issue

器件型号:MSP430FR58671

工具与软件:

波特率已关闭。 我在一个电路板上完成了所有设置和测试、并按照用户指南中的说明将波特率设置为9600波特。 它工作出色、没有问题。 我再构建了2个板并上传了相同的代码、波特率关闭了。 我运行的速度大约为10500、而不是9600。 对可能导致这种差异的原因有任何想法。 我知道该代码在再次上传到工作板时没有变化、运行得很好。 我已经完成了时钟设置。

// Clock System Setup
	  CSCTL0_H = CSKEY >> 8;                    // Unlock CS registers
	  //CSCTL1 =  DCOFSEL_4;             // Set DCO to 16MHz
	  CSCTL1 = DCOFSEL_6;                       // Set DCO to 8MHz
	  CSCTL1 &= ~DCORSEL;
	  //CSCTL1 |= DCORSEL;                // Set DCO to 16MHz
	  CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK;
	  CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;     // Set all dividers
	  CSCTL4 &= ~LFXTOFF;                       // Enable LFXT1
	  CSCTL0_H = 0;                             // Lock CS registers

	  // Configure USCI_A1 for UART mode
	    UCA1CTLW0 = UCSWRST;                      // Put eUSCI in reset
	    UCA1CTLW0 |= UCSSEL__ACLK;                // CLK = ACLK
	    UCA1BR1 = 3;                              // 9600 baud
	    UCA1MCTLW |= 0x92;                      // 32768/9600 - INT(32768/9600)=0.41
	                                              // UCBRSx value = 0x92 From Table 30-5 
	    UCA1BR1 = 0;
	    UCA1CTL1 &= ~UCSWRST;                     // Initialize eUSCI

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    > CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK;

    > UCA1CTLW0 |= UCSSEL__ACLK;// CLK = ACLK

    > UCA1BR1= 0;

    这会将 UART BRCLK 设置为 VLO、以~10kHz 的频率运行、但会有+/-50%的变化。 除以/1 (UCA1BR=0)、您会得到类似10kbps 的信号(距离9.6kbps 不太远)。 VLO 频率因器件而异(以及温度/电压)、因此我想您很快就能找到第一个器件。

    示例 msp430fr59xx_euscia0_uart_02.c 将 UART 配置为9600bps、假设采用32kHz 晶体;由于您启用 LFXT、我假设您拥有其中一个:

    https://dev.ti.com/tirex/explore/node?node=A__AK5Xil4JGgeLwhF4rpGqvQ__msp430ware__IOGqZri__LATEST