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.

求助:关于MSP430 6723波特率小数的问题,debug的寄存器和手册明显不一样

如图,左边是 6723 的 技术参考手册,左下角页码916页。 右边是debug时候出来的寄存器内容------MCTL这个寄存器明显对不上啊。

我现在在32768hz下设置9600波特率,  整数部分是 3 ,小数部分必须是5300才可以(不过采样  ucos == 0),为什么最高4位必须害的有5啊      不是round((32768/9600-3)) = 3吗,那个5是干嘛的。

还有4800波特率 怎么还是0x5300(实践)才准,0x5600(理论推测)不准。

望官方给出答复!

  • 不是ti官方。建议楼主提供下代码。

    不知道楼主用的什么开发软件?UCAxMCTL是一个字节的长度,这里确显示两个字节0x0000

  •   P1SEL |= (BIT4 + BIT5);                                                       // P1.4,P1.5 = USCI_A1 RXD,TXD  
     // PMAP_CONTROL->PMAPKEYID = PMAPKEY;;                       
      P1MAP->P1MAP45 |=  ( PM_UCA1RXD| ((u16)PM_UCA1TXD <<8));
     // P1MAP->P1MAP45 |=  ( PM_UCA1TXD| ((u16)PM_UCA1RXD <<8));
    //  PMAP_CONTROL->PMAPKEYID = 0;                                                  //用完记得Lock上
      
      P1DIR &= ~BIT4;P1REN |= BIT4;P1OUT |= BIT4;
      P1DIR |=  BIT5;P1DS  |= BIT5;P1OUT |= BIT5;
     // P1DS  |= (BIT4 + BIT5);
      UART1->CTLW0 |= UCSWRST;
      UART1->CTLW0 |= UCSSEL_1 ;
     // UART1->CTLW0 |= UCSSEL_1 |UCMODE0 |UCPEN | UCPAR ;                          //Dormant、ACLK、IDLE,,带偶检验
      UART1->BRW   = 32768/2400;                                                     //鸟玩意不能9600,4800也不稳定
      UART1->MCTLW  = 0x5300;
      UART1->CTLW0 &= ~UCSWRST;                                                     //关闭复位
      UART1->IE   |= UCRXIE;                                                        // Enable USCI_A1 RX interrupt

  • 关于在32.768khz下来配置UART好还是采用高频的内部时钟好。不是不可以,而是官方给出的参考误码率,已经可以说明一些问题。即使是在2400这么低的频率下,采用32.768k所可能产生的误码率也是大大高于高频时钟的。采用内部高频时钟,虽然可能由于电压的变化和温湿度环境不同可能也会有误差。但即使将所有这些DCO的频率变化因素考虑进去,其实误码率也是要大大小于采用低频时钟时所造成的误码的。

    对于计算值不准,实践值准的问题,这个是基于你的实验测试板来说。并不能cover所有的问题。

  • 我是问问,那个小数怎么算啊。手册给的和Debug明显不一样啊

  • 例如,用32768的晶振频率,配置9600波特率

    32768/9600=3.41

    取整就是3,所以UCBRx=3

    (3.41-3)*8=3.31

    取整是3,所以UCBRSx=3

  • 是的。但是还是不对。必须是0x5300. 没有5还是乱码。


    我用的6723.
    不止这个,其他6723的设备也是

  • 你用的什么开发软件?
  • 另外,建议上传下代码
  • 32.768K时钟,根本不适合做9600波特率通讯的时钟

    20% 40%的误码率。。。

    这应该是为什么你按照理论值收不准的原因。