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.

[参考译文] MSP430FR2153:当 XT1不用于系统内的任何功能时激活它

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1170418/msp430fr2153-activate-xt1-when-it-is-not-used-for-any-function-inside-the-system

器件型号:MSP430FR2153

各位专家、您好!

我的客户正在使用 MSP430FR2153构建产品。

他们正在考虑通过以下方式使用 XT1。
1.加电后立即激活 XT1时钟(启动振荡)
2.使用 REFO 作为 ACLK、MCLK 和 SCLK 的源、直到 XT1时钟振荡稳定。
3.当输出的 XT1时钟稳定时、将 ACLK、MCLK 和 SCLK 源切换到 XT1。

请在这里向我介绍以下问题。

Q1:我是否正确理解了在激活模式下可以启用 XT1、通过清除 XT1AUTOOFF、LPM0~4?

Q2:换句话说、我是否正确理解了清除 XT1AUTOOFF 将启动 XT1振荡、即使它未用于任何内部系统功能?

Q3:是否有一个寄存器来检查 XT1当前是否振荡(换句话说、有效)?

Q4:如果在清零 OFIFG 后没有置1 (通过下面代码的第88行)、这是否意味着 XT1绝对稳定?
它们在程序中增加了一个1.5秒的等待时间、以等待 XT1稳定振荡。 原因是退出下面代码的第88行需要80ms、而示波器需要大约1.2s 来稳定振荡。

#include <msp430.h>

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;               // Stop watchdog timer

    CSCTL3 |= SELREF__REFOCLK;               // Set REFO as FLL reference source
    CSCTL4 |= SELA__REFOCLK;  // Set ACLK = REFO = 32768Hz
    CSCTL7 &= ~(XT1AUTOOFF);      // Clear XT1 and DCO fault flag

    P2SEL1 |= BIT6 | BIT7;                  // P2.6~P2.7: crystal pins
    do
    {
        CSCTL7 &= ~(XT1OFFG | DCOFFG);      // Clear XT1 and DCO fault flag
        SFRIFG1 &= ~OFIFG;
    } while (SFRIFG1 & OFIFG);              // Test oscillator fault flag

    // Port Configuration all un-used pins to output low
     P1OUT = 0x00; P2OUT = 0x00;
     P3OUT = 0x00; P4OUT = 0x00;
     P5OUT = 0x00; P6OUT = 0x00;
     P1DIR = 0xff; P2DIR = 0xff;
     P3DIR = 0xff; P4DIR = 0xff;
     P5DIR = 0xff; P6DIR = 0xff;

    PM5CTL0 &= ~LOCKLPM5;                   // Disable the GPIO power-on default high-impedance mode
                                            // to activate previously configured port settings
    while(1)
    {
//        P1OUT ^= BIT0;                      // Toggle P1.2 using exclusive-OR
        __delay_cycles(1000000);           // Delay for 10000000*(1/MCLK)=1.25s
    }
}

基本软件已经完成、开发接近高潮。 很抱歉,但如果能在2015年11月之前回答我的问题,我将不胜感激。

此致、
还不错

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

    您好、O.H、  

    我认为 用户指南第103页 回答了您的大多数问题:

    Q1和 Q2: 是的、没错。 这是将启用 XT1的条件之一、如下所述:

    Q3: 从用户指南的第3.2.4节中—您可以检查与 XT1IN 端口相关的 Px.SEL 位。 如果 XT1处于活动状态、则应将其置位。

    问题4: 我只看到您在此处提供的代码片段中有33行代码。 代码是否还有其他内容、以便我可以查看第88行?

    最棒的
    Amruta

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

    您好、 Amruta、

    感谢您的快速回复。

    我了解 Q1、Q2。

    [引用 userid="489746" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1170418/msp430fr2153-activate-xt1-when-it-is-not-used-for-any-function-inside-the-system/4404046 #4404046"]Q3: 从用户指南的第3.2.4节中,可以检查与 XT1IN 端口关联的 Px.SEL 位。 如果 XT1处于活动状态、则应将其置1。

    顺便说一下、如果 CPU 处于激活模式并且 XT1AUTOOFF=1、是否有任何寄存器或方法来确定 XT1是否激活?
    在上述情况下、我认为 活动/非活动不能由 Px.SEL 位确定、而只能由 REF 位确定、例如 MCLK、SMCLK、ALCK、CLK、PLL、 WDT 等。XT1未设置。

    [引用 userid="489746" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1170418/msp430fr2153-activate-xt1-when-it-is-not-used-for-any-function-inside-the-system/4404046 #4404046"]Q4: 我只看到您在此处提供的代码段中的33行代码。 代码是否还有更多内容、以便我可以查看第88行?

    抱歉。 我留下了不必要的代码。 8~12线的退出时间为80ms。

    此致、
    还不错

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

    您好!

    对于 Q3:查看 用户指南第3.2.13节的屏幕截图

    由于您看起来是在 LF 模式下使用 XT1、因此如果发生晶体故障、XT1OFFG 会被置位。 您可以检查此位以查看 XT1是否处于活动状态。

    对于 Q4:我仍然不确定我是否理解您的问题- 数据表的表5-3或表5-4 描述了晶体振荡器的启动时间。 您是否说他们设置了1.5秒的延迟来等待振荡稳定、因为目前需要1.2秒才能稳定? 我不确定80ms 的程序执行时间与您的问题有何关系。 您是否在问是否有办法检查 XT1何时稳定?

    最棒的
    Amruta  

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

    尊敬的  Amruta:

    感谢你的答复。

    我了解第三季度。

    [引用 userid="489746" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1170418/msp430fr2153-activate-xt1-when-it-is-not-used-for-any-function-inside-the-system/4406631 #4406631"]您是否说他们设置了1.5秒的延迟来等待振荡稳定、因为目前需要1.2秒才能稳定? 我不确定80ms 的程序执行时间与您的问题有何关系。 您是否询问是否有方法检查 XT1何时稳定?

    是、如上所述。

    为了详细说明背景、客户希望尽可能缩短器件复位和上电后 XT1稳定的时间。
    目前、微控制器作为静电测试的对策被复位。
    它们需要在复位后立即接收 UART 数据。
    波特率为4800、因此它们使用的是具有低错误率的38.4kHz 晶体。
    它们使用 REFO 来接收数据、直到晶体稳定、但错误率很高。
    它们实际上会丢失数据、并且希望能够尽快使用 XT1。
    他们正在进行1.5秒的延迟、以便为我们提供一些回旋余地、但他们希望找到一种方法来确保它在更短的时间内保持稳定。

    此致、
    还不错

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

    您好!

    XT1需要一些时间才能稳定。 当电源关闭时、它们是否处于 LPM 模式?

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

    尊敬的  Amruta:

    那么、我是否正确地理解了放置1.5秒延迟是一种安全措施?
    (使用 DO~while ()监视 OFIFG 的方法是根据实际运行条件确定。)

    它不应进入 LPM 模式。

    此致、
    还不错

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

    是的、是的。 您 可能会缩短此时间、正如您之前提到的、在示波器上稳定只需1.2秒、但您至少需要1000 ms。