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.

[参考译文] MSP430F6775A:DCO

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1453033/msp430f6775a-dco

器件型号:MSP430F6775A

工具与软件:

您好!

  1. 我想问的是 XT1晶体振荡器标志能否立即复位、还是需要等待。 我已经调试了我的程序、一切都很顺利、就像在调试期间、所有标志都被重置、但当我重新启动器件时、为该晶体设置了标志。 我注意到在示例中、在检查 DCO 标志时就像清除了一样。 因此我有点困惑、我还使用了 DCO 稳定时间。 之后我重置了标志、但正如我所说的、它仍然开启、直到我不会设置更高的稳定时间。 我缺少什么吗? 或者、在擦除 X1标志时、我应该设置延迟、是否有任何常数?
  2. 是否有任何其他更好在运行时检查的标志?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    清除挂起中断是一种确保器件在开始时处于已知状态的方法、如果标志的原因仍然存在、则将再次设置该标志。 如果您的稳定时间太短、那么您可以再次发出标记。

    等待时间用于确保 DCO 在继续 MCU 操作之前保持稳定。 您还需要外部晶体上的稳定时间、因为您需要在其通电后使用外部晶体稳定(在为 XT1打开 USCTL6位后、为晶体供电)。  

    故障标志应该是您检查以验证晶振是否已正确启动的标志。

    此致、
    Luke

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

    尊敬的 Luke:

    因此我应设置 XCAP 和 XDRIVE、然后使用  UCSCTL6 &=~μ H XT1OFF 打开外部晶体;而且要比我要等待晶体通过持续检查和复位稳定还要好

     是否设置 DCO 和 FLL 来检查并复位 DCO 故障标志和 XT1故障标志? 设备是这样的吗? 我应等待的时间也未针对 XT1进行牢固设置、就像 DCO 一样。我的意思是 DCO 稳定时间= n x 32 x 32 x f_MCLK / f_FLL_reference? 我可以使用任意数量的周期吗?
    感谢您的回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    您的晶体应该有启动时间、您也可以等待几微秒然后执行二进制搜索以找到最佳时间。 虽然 while 循环检查可以正常运行、但您正在执行比较操作并跳转、而不是_NOP。 但是、设置 XT1、DCO 的过程流程仍然可以工作。

    此致、
    Luke

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

    因此、处理等待晶体开始运行的最好方法是使用_delay_cycle()设置一些时间;? 我的意思是比较和跳跃虽然不是最好的方式,我猜? 或?

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

    尊敬的 Peter:

    您可以使用 delay_cycles、周期延迟将基于 MCLK、在这部分、稳定调整不会导致任何错误的跳转。 如果您等到 Xft 稳定后再调整 DCO、这是更好的方法、以便实现稳定的晶体、并且可以将 DELAY_CYCLES 映射到实际时间。

    如果调整 DCO、则使用延迟周期等待 DCO 稳定、时间将不是 CYCLES*CLK 频率、因为时钟频率将随着时间的推移而调整、以满足您的目标设置。

    此致、
    Luke

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

    您好!

    感谢您的回答。 由于时间可能会因温度条件等原因而异、因此我一直在等待晶体开始运行 for loop、并通过在循环中使用整数计数器来降低循环速率。 是不是更好的解决方案? 我是说 XT1可能迟早会稳定。 或者是否有任何副作用。

    INT count = 50000;

    应执行的操作


    UCSCTL7 &=~μ H XT1LFOFFG;
    SFRIFG1 &=~OFIFG;

    _delay_cycles (50);

    } while ((UCSCTL7 & XT1LFOFFG)&&--计数);

    }

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

    尊敬的 Peter:

    这里还有更多的处理工作、我最初的想法是可以、但我建议用您的晶体进行测试以进行验证。 在您的项目中、您是否能够等待温度范围内的最坏情况并等待最长时间? 或者它是否会针对您的晶体发生显著变化?

    此致、
    Luke

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

    您好!

    我在晶体数据表中找不到任何温度漂移详细信息。

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

    尊敬的 Peter:

    如果您希望格外小心、可以输入晶体最大时间、如果晶体未列出任何启动  时间、则可以根据 ESR 和负载电容作为基准时进行计算、但您可能必须对启动时间进行实验才能找到适合系统的方法。

    我们也有一个晶体振荡器文档、我建议阅读- MSP430晶体振荡器

    此致、
    Luke