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.

[参考译文] MSP430F5529:MSP-EXP430F5529LP UART 问题

Guru**** 2595770 points
Other Parts Discussed in Thread: MSP-EXP430F5529LP

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1048203/msp430f5529-msp-exp430f5529lp-uart-problem

器件型号:MSP430F5529
主题中讨论的其他器件:MSP-EXP430F5529LP

大家好、我正在尝试在 MSP-EXP430F5529LP (MSP5529 LaunchPad)上使用 UART。 我已将 SMCLK 配置为4MHz、 并尝试将 UART 配置为以115200kbps 的速率运行。 我通过仅发送一个字符'A'(0x41)开始简单。 我将示波器连接到 PIN3.3并触发以查看波形、以确认我的 UART 正在执行它应该执行的操作

下面是我对其进行配置的代码:

#include <msp430f5529.h>

void ConfigUCS (void)
//Configure SMCLK to 4MHz
{
  P5SEL |= BIT2 | BIT3;//Configure IO as XT2 function
  UCSCTL6 &= ~XT2OFF;//Enable XT2

  UCSCTL4 |= SELA_2;//first configure ACLK source as REFCLK
  UCSCTL3 |= SELREF_2;//Configure FLLCLK source as REFCLK

  while (SFRIFG1 & OFIFG) {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);//Clear the three types of clock flags
                             //There are three flag bits that need to be cleared because any
                             //The flag bit will set OFIFG
    SFRIFG1 &= ~OFIFG;//Clear clock error flag
  }
  UCSCTL4 = UCSCTL4 & (~(SELS_7 | SELM_7)) | SELS_5 | SELM_5;//Configure SMCLK and MCLK clock sources as XT2
//P2SEL |= BIT2;
//P2DIR |= BIT2;//For measuring SMCLK
  return;
}

void ConfigURART (void)
{
    UCA0CTL1 |= UCSWRST; // Software reset of UCA0 module
    UCA0CTL0 |= UCMSB;   // Initialize control register UCA0XTL0
                         // default is no Parity / MSB first / 8bit / One stop bit / UART / Asynchrnoous mode

    UCA0CTL1 |= 0x00;    // Initialize control register UCA0CTL1
    UCA0CTL1 |= UCSSEL_2;// Set SMCLK (SMCLK is at 4MHz) to BRCLK.

    UCA0MCTL |= UCOS16;  // Oversampling mode
                         // N = 4,000,000/115,200 = 34.722
    UCA0BR1 |= 0x00;
    UCA0BR0 |= 0x02;     // UCBR0 = INT (N/16) = 2
    UCA0MCTL|= UCBRF1;   // UCBRF0 = 2
    UCA0MCTL|= UCBRS1 + UCBRS0; // UCBRS0 = 3

    P3SEL |= BIT3 + BIT4;// Port Configuration
    UCA0CTL1 &= ~UCSWRST; // Software reset of UCA0 module cleared
}

/**
 * main.c
 */
int main(void)
{
    ConfigUCS();
    ConfigURART();
    UCA0TXBUF = 'A';
}

SMCLK 配置正确、因为我可以在 P2.2上测量4MHz 时钟。 但是、当我将示波器放在 P3.3 (UCA0TXD)上时、我得到了非常奇怪的波形。 波形几乎表明硬件方面有问题。 我是否在配置中出错、或者我的硬件有某种程度的损坏?

以下是示波器捕获:

C1是 P3.3处的 x10探针。 据我了解、当不传输时、UART 总线应该为3.3V、但在这里、我看到一些低于200mV 的无用信号...有什么想法吗? 谢谢。  

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

    出于某种原因、P3.3似乎已被吸入低电平。 即使我手动将 IO P3.3配置为 IO 并将输出设置为高电平、我的示波器仍读取~0V...

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

    BTW、在您拥有的代码中、您只发送一个"A"。

    那么、SMCLK 从0V 变为3.3V?

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

    是的、我只发送'A'一次、我希望捕获示波器上的波形(C1上升/下降沿上的单次触发)

    是的、SMCLK 为0至3.3V

    正如我说过的、这个 IO P3.3似乎已经被吸入到低电平、因此即使我手动更改为 IO 并将其设置为高电平、它仍然是低电平...

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

    尊敬的 Yi Zhang:

    我建议从我们的 Echo UART 示例开始、可以在此处找到 UART Echo 示例。 该示例将有助于此器件的初始化和过程、因为它具有几个独特的功能。 此示例经过验证可正常工作、因此有助于验证 UART 并检查器件运行情况。

    此致、

    Luke

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

    好的、我终于明白了原因。 这是我的错。 我查看的是仿真器引脚分配、而不是 MCU 引脚分配

    重新强制混淆、T.I.网站上的演示代码不能在 MSP-EXP430F5529LP 上工作、因为它也使用 UCA0 (引脚3.3 /引脚3.4)

    经验教训:注意