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.

[参考译文] MSP430FR2676:外部振荡器检查失败

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/944833/msp430fr2676-failed-external-oscillator-check

器件型号:MSP430FR2676
主题中讨论的其他器件:MSP430WAREMSPWARE

我在启动时遇到外部振荡器检查问题。 对于外部振荡器、我使用的是 Sit1552 32.768kHz 晶体。 在我的某些电路板上、我得到了"外部晶体:良好"、但在大多数电路板上、我一直得到"外部晶体出现故障!" 消息。 当我检查"良好板"与"不良外部时钟板"的振荡器输出时、这些波形是相同的、在时钟出现前可能会有额外的20ms 延迟(即良好板在165ms 内启动振荡器、而不良板振荡器在180ms 以上启动)。 我们尝试在调用函数切换到 XT1源之前实现延迟、以防它检查过快、将 XT1_Good 标志设置为 false、然后在2s 超时后报告它、而不是在整个2秒内检查源、 但这并没有解决它。 我们仍会发现晶体出现故障。  

下面是我们使用的代码。 有什么想法、想法或问题需要澄清?

  //配置 FRAM 等待状态(设置为1以支持16MHz MCLK)
FRAMCTL_configureWaitStateControl (FRAMCTL_ACCESS_TIME_CYCESS_1);
 
  //
//尝试启动低频晶体振荡器
//
cs_setExternalClockSource (Xt1_OSC_FREQ);
if (CS_TurnOnXT1LFWithTimeout (CS_XT1_DRIVE_0、XT1_OSC_TIMEOUT)== STATUS_FAIL)

//
//如果晶体不存在或发生故障,请切换 LF
内部32kHz 基准振荡器的//时钟定义。
//
ui8LFOsc = CS_REFOCLK_SELECT;
xt1_Good = false;

其他

xt1_Good = true;
  CS_initClockSignal (CS_FLLREF、ui8LFOsc、CS_clock_divider);
CS_initClockSignal (CS_ACLK、ui8LFOsc、CS_clock_divider);
CS_initClockSignal (CS_MCLK、CS_DCOCLKDIV_SELECT、CS_CLOCK_DIVIDER_1);
CS_initClockSignal (CS_SMCLK、CS_DCOCLKDIV_SELECT、CS_CLOCK_DIVIDER_1);
//
//调整 DCO 参数
//
CS_initFLL (((DCO_FREQ/1000)、FLL_Ratio);
CS_clearAllOscFlagsWithTimeout (1000);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Luke、

    除了初始延迟之外、坏板上的时钟信号是否可能是间歇性的?

    当我将代码与 MSP430Ware 中的示例代码进行比较时、代码看起来可以。

    Srinivas

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

    您好 Srinivas、

    我是 Luke 的同事。 我们在调用函数'CS_TurnOnXT1LFWithTimeout'之前以及在退出函数时添加了 GPIO 切换。 我们在良好的电路板和不良电路板上进行了测试:

    BAD 板= 65ms 切换
    正常电路板= 30ms 切换
     
    此测试是可重复的、每次切换时间在1ms 内。
     
    在脉冲期间、时钟信号非常干净。
    您是否能够向我们发送 CS_TurnOnXT1LFWithTimeout 函数的源代码? 我们想用其源代码替换此函数调用、并在每个器件周围进行引脚切换以进一步缩小范围。
    感谢您的帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您使用"empty project with driverlib source"创建了项目、则您的项目中就有源代码。

    如果不是、它位于您的 MSPWare 树中、其名称如下:

    C:\ti\msp430ware_3_80_06_03\driverlib\driverlib\MSP430FR2xx_4xx\cs.c

    [编辑:太快地点击帖子:我已经看到了各个晶体之间启动变化的相当大--我认为30ms 的变化不会是那么异常。 如果您稍微延长超时、会发生什么情况?]

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

    我已深入了解 Sit1552数据表、它似乎是 TCXO、而不是晶体。 我怀疑您想调用 CS_BypassXT1WithTimeout()。