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.

[参考译文] MSP430FR2433:采用32KHz 晶振的 UART ACLK

Guru**** 2455560 points
Other Parts Discussed in Thread: MSP430FR2433

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1452916/msp430fr2433-uart-aclk-using-32khz-crystal

器件型号:MSP430FR2433

工具与软件:

工具:CCS 12.7.0

大家好!

是否可以将 ACLK 用作 UART 操作的时钟源? dev 区域中的示例不仅使用 ACLK。

如果这不可行、如何设置 UART 通信、使程序在时钟选择方面能够充分利用资源?

提前感谢!

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

    如果您查看有关典型波特率(22.3.13)的指南(slau445)、您会发现使用32KHz 时各种比特率的设置。

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

    您好! 感谢您的快速回复!

    我看着它,改变了设置,但不起作用...

    我不确定是否需要在 UCA0CTLW0寄存器中对 ACLK 的时钟源进行何种设置。

    我当前的 uart_init 函数如下所示:

    // Configure pins to UART mode
        P1SEL0 |= BIT4 | BIT5;                    // set 2-UART pin as second function
    
        // Configure UART
        UCA0CTLW0 |= UCSWRST;                     // Put eUSCI in reset
        UCA0CTLW0 |= UCSSEL__SMCLK;
    
        // Baud Rate calculation (infos in UG table 22-5)
        // Settings for baud rate of 1200 using 32768 Khz clock
        UCA0BRW = 1;
        UCA0MCTLW = 0x2500 | UCOS16 | UCBRF_11;
    
        UCA0CTLW0 &= ~UCSWRST;                    // Initialize eUSCI

    我的时钟设置如下所示:

    P2SEL0 |= BIT0 + BIT1;                  // P2.0: XOUT; P2.1: XI1
    
    CSCTL4 = SELMS__DCOCLKDIV | SELA__XT1CLK;  // MCLK=SMCLK=DCO; ACLK=XT1
    do
    {
        CSCTL7 &= ~(XT1OFFG | DCOFFG);      // Clear XT1 and DCO fault flag
        SFRIFG1 &= ~OFIFG;
    }while (SFRIFG1 & OFIFG);               // Test oscillator fault flag
    

    时钟源为 ACLK、而 ACLK 使用引脚 P2.0和 P2.1中连接的外部晶体振荡器

    我的想法是、当看门狗计时器触发中断时、通过 UART 定期传输字符串。 代码可能处于 LPM3模式。

    我使用 此 dev 区域片段 作为基础、并且希望包含 UART 函数。

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

    您说要使用 ACLK、但您的代码显示 SMCLK:

        UCA0CTLW0 |= UCSSEL__SMCLK;

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

    有。 我没有识别正确的位来设置 ACLK。

    在器件用户指南中的 UART 寄存器部分、位7和位6负责选择时钟源。

    00b 应指示使用了 ACLK (考虑到 UCLK 误导)、但通信不起作用。

    我还在 CCS msp430fr2433头文件中搜索、发现了这些位:

    UCSSEL_0应为设置值。 如果这是事实,那么我 是伪造的东西。

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

    UCLK 不是拼写错误。 在其他情况下、它指的是外部时钟源。 但器件数据表未显示 UART 模式的外部源。 确认头文件。

    因此您可以使用 MODCLK 或 SMCLK。 请记住、在低功耗模式下、当 UART 请求时、SMCLK 将被激活。 我们假设您尚未禁用该功能。

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

    那么、我可以在 LPM3中的 CPU 中使用 SMCLK 吗?

    关于通过 USCI 激活 SMCLK、我不知道这一特性存在。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于通过 USCI 激活 SMCLK、我不知道此功能是否存在。

    3.2.12的指南。

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

    我将在 UART 中以1MHz 的频率使用 SMCLK、但我可以访问 LPM3、甚至可以对 ACLK 时钟源使用 WDT 中断指令。 嗯、我猜就是这样!