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.

[参考译文] CCS/MSP430F6736:EVM430F6736上的 UART 接收器问题

Guru**** 665180 points
Other Parts Discussed in Thread: MSP430F67491, MSP430F6736, MSP430F6749, MSP430F6779, MSP430F67791, MSP430F47197, MSP430F4794, MSP430AFE252, MSP430AFE253, MSP430AFE251
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/820094/ccs-msp430f6736-uart-receiver-problem-on-evm430f6736

器件型号:MSP430F6736
主题中讨论的其他器件:MSP430F6779MSP430F6749MSP430F67491MSP430F67791MSP430F47197MSP430F4794MSP430AFE252MSP430AFE253MSP430AFE251

工具/软件:Code Composer Studio

尊敬的 TI 团队:

我们已经使用了 EVM430F6736能量计。 在 UART 通信中、将数据发送到其他器件工作正常。 但在接收器部分、仍然无法正常工作。 接收器中断标志未启用。

其中、下面提到了我们的串行初始化(波特率= 115200或9600、8位数据、模式= 1)。


   /*我们在迄今为止所做的工作中只需要两种串行字符模式。
      目前仅支持这些功能*/
   如果(MODE = 0)
   {
       /* 7位字符、偶校验*/
#if defined (__MSP430_has _UART0__)
       ctl0 = Pena | PEV | SWRST;
其他
       ctl0 = UC7BIT | UCPEN;
#endif
   }
   其他
   {
       /* 8位字符、无奇偶校验*/
#if defined (__MSP430_has _UART0__)
       ctl0 = char | SWRST;
其他
       ctl0 = 0;
#endif
   }
   /*使用 ACLK 以实现慢速比特率。 对于更高的比特率、请使用 SMCLK *
   if (bit_rate <= 4800L)
   {
       bitrate 分频器=(32768L*16L)/bit_rate;
#if defined (__MSP430_has _UART0__)
       ctl1 = SSEL0;              /* ACLK */
其他
       ctl1 = UCSSEL_1 | UCSWRST; // ACLK *
#endif
   }
   其他
   {
#if defined (__MSP430F6736__) || defined (__MSP430F6749__) || defined (__MSP430F67791__) || defined (__MSP430F6779__) || defined (__MSP430F67491__)
       /* 24MHz 时钟*/
       bitrate 分频器=(32768L*768L*16L)/bit_rate;
#elif defined (__MSP430F4794__) || defineed (__MSP430F47197__)
       /* 16MHz 时钟*/
       bitrate 分频器=(32768L*512L*16L)/bit_rate;
#elif defined (__MSP430AFE251__) || define(__MSP430AFE252__) || define(__MSP430AFE253__)
       /*恰好为8MHz 的时钟*/
       bitrate 分频器=(8000000L*16L)/bit_rate;
其他
       /* 8MHz 时钟*
       bitrate 分频器=(32768L*256L*16L)/bit_rate;
#endif
#if defined (__MSP430_has _UART0__)
       ctl1 = SSEL1;              /* SMCLK */
其他
       ctl1 = UCSSEL_2 | UCSWRST; // SMCLK *
#endif
   }
   bitrate 分频器++;
#if defined (__MSP430_HART_EUSCI_A0__) || defined (__MSP430_HART_UART0__)
   mctl =(bitRATE_DEVIDER & 0x0E)>> 1;
   mctl = mod_patters[mctl];
其他
   mctl = bitRATE_DEVIDER & 0x0E;
#endif
   bitrate 分频器>=4;
#if!defined (_MSP430_has _EUSCI_A0__)
   BR1 = bitrate_divider >> 8;
   br0 = bitrate_divider;
#endif

   交换机(端口)
   {
如果已定义#if (UART_0_support)
   情况0:
   #if defined (__MSP430_has _USCI_AB0__) || defined (__MSP430_has _USCI_A0__) || defined (__MSP430_has _EUSCI_A0__)
       /*将端口配置为保持高电平的 RESET 位*/
       UCA0CTL1 |= UCSWRST;
       UCA0CTL0 = ctl0;
       UCA0CTL1 = ctl1;
       #if 已定义(_MSP430_has _EUSCI_A0__)
       UCA0BRW = bitrate_divider;
       UCA0MCTLW =((uint16_t) mctl << 8);
       其他
       UCA0BR1=BR1;
       UCA0BR0 = br0;
       UCA0MCTL = mctl;
       UCA0STAT = 0;
       #endif
       UCA0TXBUF = 0;
       UCA0CTL1 &=~UCSWRST;
       如果已定义#if (UART_0_DMA_support)
       //DMACTL0 |=(DMA1TSEL_3 | DMA2TSEL_4);
       #endif
       #if defined (__MSP430_has _USCI_AB0__)
       UC0IE |= UCA0RXIE;
       其他
       UCA0IE |= UCRXIE;
       #endif
   #Elif defined (_MSP430_has _UART0__)
       UCTL0 = ctl0;
       UTCTL0 = ctl1;
       UBR10 = BR1;
       UBR00 = br0;
       UMCTL0 = mctl;
       UCTL0 &=~SWRST;
       /*启用 USART0 TXD/RXD */
       U0ME |=(UTXE0 | URXE0);
       U0IE |= URXIE0;
       /*如果最初不启动 Tx 端口、TXEPT 位将不会置位。 *
       TXBUF0 = 0;
   #endif
       返回0;

请提出任何建议。

此致、

Anitha.L

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

    Anitha、您好!

    我将对此进行研究、并在下周回来听取一些反馈。

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

    很抱歉耽误你的时间。  您是否能够成功运行 UART 回波示例?  可以在下面的链接中找到。  

    http://www.ti.com/lit/zip/slac511

    MSP430F673X_USCIA0_UART_03.c

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

    您好、Eddie、

    感谢您的回复。 但上述演示代码运行正常。 在同一代码中、我在我们自己的代码中使用了它。 现在结果是相同的(前面提到)。

    谢谢、

    Anitha.L

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

    Anitha、

    如果你调试代码、你是否看到 UCAxIE 寄存器中的 UCRXIE 位被置位?