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.

[参考译文] MSP430F5328:建议振荡器稳定延迟

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430F5328, MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/580280/msp430f5328-advised-oscillator-stable-delay

部件号:MSP430F5328
主题中讨论的其他部件: MSP430F5438A

您好,

我正在项目中使用MSP430F5438A和MSP430F5328。  

在 MSP430F5328的项目中,我必须在通电后以尽可能快的速度运行代码。 该项目使用XT2作为20 MHz的时钟源。

在项目初始化过程中,等待时钟稳定。 因为我们希望使用稳定的时钟运行程序。

采用与TI示例相同的方法:"MSP430F532x_of_LFFT1_NMI":

执行
{
UCSCTL7 &=~(XT1LFOFFG + DCOFFG); //清除XT1和DCO故障标志
SFRIFG1 &=~OFIFG; //清除OSC故障标志
(i = 0x0FFF;i > 0;i --); //设置标志的时间???? 
P1OUT ^= BIT0; //切换粮食方案1.0
}同时((SFRIFG1 & OFIFG)); 

当我查看MSP430F5438A (msp430x54xA_of_LFFT1_NMI)的示例时 ,我发现for环路要大得多:  

执行
{
UCSCTL7 &=~(XT1LFOFFG + DCOFFG); //清除XT1和DCO故障标志
SFRIFG1 &=~OFIFG; //清除OSC故障标志
(i = 0xFFFF;i > 0;i -); //设置标志的时间 
P1OUT ^= BIT0; //使用1.0 excluse-or
切换WFP } While ((SFRIFG1 & OFIFG)); 

1.为何这些轮候时间不同?  

2.等待时钟稳定的首选方法是什么?

3.如何在稳定时钟下尽可能快地运行程序?

4.我可否缩短轮候时间(或完全消除延误),届时会有甚么风险?  

提前感谢您的参与,

Jeroen  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现在代码中设置颜色不起作用。 代码应为:

    采用与TI示例相同的方法:"MSP430F532x_of_LFFT1_NMI":



    UCSCTL7 &=~(XT1LFOFFG + DCOFFG); //清除XT1和DCO故障标志
    SFRIFG1 &=~OFIFG; //清除OSC故障标志
    (i = 0x0FFF;i > 0;i --); //设置标志的时间????
    P1OUT ^= BIT0; //切换WFP 1.0
    ((SFRIFG1 & OFIFG));

    当我查看MSP430F5438A (msp430x54xA_of_LFFT1_NMI)的示例时,我发现for环路要大得多:



    UCSCTL7 &=~(XT1LFOFFG + DCOFFG); //清除XT1和DCO故障标志
    SFRIFG1 &=~OFIFG; //清除OSC故障标志
    (i = 0xFFFF;i > 0;i -); //设置标志的时间
    P1OUT ^= BIT0; //使用excluse-or切换WFP 1.0
    ((SFRIFG1 & OFIFG));
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    While ()循环中的延迟是错误指示器的一部分,与OSC故障清除或正时无关。 如果无法清除OSC故障,则While ()回路将永远不会结束,连接到WFP 1.0 的LED将持续闪烁。 为什么延迟不同? -一个编程器希望比另一个编程器更快的闪烁速率:)

    您可以轻松删除此示波器故障错误指示器:

    执行{
    UCSCTL7 &=~(XT1LFOFFG + DCOFFG);//清除XT1和DCO故障标志
    SFRIFG1 &=~OFIFG;//清除OSC故障标志
    }同时((SFRIFG1 & OFIFG));

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    硬件需要1024个有效的时钟周期才能清除故障标志并允许使用时钟。 因此,删除for ()循环不会使外部DO-while循环完成得更快。

    如果要执行某项操作,可以改为使用DCO,稍后执行清除/检查循环。 但你没有一个20 MHz的时钟,而是你的DCO运行的时候。 ("稳定"是指"准确"吗?)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亲爱的Ilmars和Clemens:

    感谢双方的回复。
    现在已经清楚了它是如何运作的。

    此致,
    Jeroen