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.

[参考译文] MSP430FR5869:UART 配置

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/916367/msp430fr5869-uart-configuration

器件型号:MSP430FR5869

您好!

我想配置 MSP430FR5869 UCA0端口、以便与其他 MCU 进行 UART 通信。 波特率为115200、我使用 SMCLK 作为频率。 我的配置如下、但当我使用振荡器测量时、我不会在 MCU 的 TXD 上发送任何内容。 配置不正确。 谢谢你。

void CONFIG_UART (void)
{
//配置 GPIO
P2SEL1 |= BIT0 | BIT1;// USCI_A1 UART 操作
P2SEL0 &=~(BIT0 | BIT1);

UCA0CTLW0 = UCSWRST;//将 eUSCI 置于复位状态
UCA0CTL1 |= UCSSEL_SMCLK;// CLK = SMCLK
UCA0BR0 = 69;// 1000000/115200 = 8.68
UCA0MCTLW = 0x5500;// 1000000/115200 - INT (1000000/115200)=0.68
// UCBRSx 值= 0xD6 (请参阅 UG)
UCA0BR1=0;
UCA0CTL1 &=~Ω UCSWRST;//从复位中释放
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断
} 

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

    您好!

    请添加以下代码以激活端口设置、否则 GPIO 处于高阻抗状态。

    //禁用 GPIO 上电默认高阻抗模式
    //激活先前配置的端口设置
    PM5CTL0 &=~LOCKLPM5;

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

    您好!

    我已禁用高阻抗状态设置。 我的完整代码如下:

    void CONFIG_UART (void)
    {
    //配置 GPIO
    P2SEL1 |= BIT0 | BIT1; // USCI_A1 UART 操作
    P2SEL0 &=~(BIT0 | BIT1);
    
    UCA0CTLW0 = UCSWRST; //将 eUSCI 置于复位状态
    UCA0CTL1 |= UCSSEL_SMCLK; // CLK = SMCLK
    UCA0BR0 = 8; // 1000000/115200 = 8.68
    UCA0MCTLW = 0xD600; // 1000000/115200 - INT (1000000/115200)=0.68
    // UCBRSx 值= 0xD6 (请参阅 UG)
    UCA0BR1=0;
    UCA0CTL1 &=~UCSWRST; //解除复位
    UCA0IE |= UCRXIE; //启用 USCI_A0 RX 中断
    }
    
    int main (void)
    {
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    PM5CTL0 &=~LOCKLPM5;
    
    CONFIG_UART();
    _bis_SR_register (GIE);
    
    while (1)
    {
    while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX 缓冲器就绪?
    UCA0TXBUF = 0;
    LPM0;
    }
    返回0;
    }
    

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

    请参阅代码示例。

    https://dev.ti.com/tirex/explore/node?node=AJr9qX-CKoMI9Io-uCLayw__IOGqZri__LATEST

    应该是这样   

    UCA0CTLW0 |= UCSSEL_SMCLK;         // CLK = SMCLK

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

    您好!

    我将遵循以下示例代码:

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

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

    您好!

    另一个问题是、如果我使用示波器测量 MCU 上 TXD 端口的输出、我应该观察与我从 MCU 发送的数据位相对应的位模式。 根据我的理解、如果我持续发送数据、观察到的数据应重复与数据值匹配的位模式。 是这样吗? 谢谢你。

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

    是的、正确。 您是否在运行示例代码时捕获了波形?

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

    您好、冬季、

    我在运行代码时未在 UART TXD 上看到任何输出。 因为我使用相同的 UART 端口 RXD 在 BSL 模式下下载固件。 您认为这可能会导致 UART 传输问题吗? 谢谢你

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

    我认为这可能不是问题。 但您可以尝试另一个 UART 端口。