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.

[参考译文] 编译器/MSP430FR5729:代码滞留在晶体DO While循环中

Guru**** 2587345 points
Other Parts Discussed in Thread: MSP430FR5729

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/617384/compiler-msp430fr5729-code-get-stuck-in-crystal-do-while-loop

部件号:MSP430FR5729

工具/软件:TI C/C++编译器

您好,先生,

       请帮我解决这个问题,我的PCB我使用msp430fr5729控制器,因为我使用了8 MHz时钟,因此我在 CSCTL寄存器中进行了如下所示的更改。 我的问题是,在我的某些PCB中,我的代码卡在 下面 给出的"做...时"循环中,但在某些PCB中,它不会卡在那里,并且工作正常。 解决不工作问题的比率是7/10工作和3/10失败。我只想知道问题是什么?所有10个PCB中都加载了相同的代码,其中3个PCB中的代码卡在回路中, 晶体或控制器是否会出现问题,请帮我解决这个问题。

CSCTL0_H = 0xA5;//时钟8MHZ
CSCTL1 |= DCOFSEL0 + DCOFSEL1;//设置最大值 DCO设置
CSCTL2 =拉美经济体系3 + SELS_3 + SELM_3;//设置ACLK = XT1;MCLK = DCO
CSCTL3 = DIVA_0 + DIVS_0 + DIVM_0;//设置所有分隔线
CSCTL4 |= XT1DRIVE_0;
CSCTL4 &=~Ω XT1OFF;



CSCTL5 &=~XT1OFFG;
//清除XT1故障标志
SFRIFG1 &=~OFIFG;
} While (SFRIFG1&OFIFG);//测试振荡器故障标志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是如何准确连接水晶的? 展示原理图和电路板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请检查此示意图,如果有任何更改,请向我提出建议。

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

    有关正确的32 kHz晶体振荡器PCB设计,请参阅SLAA322。 根据数据表第5.3 节中的推荐操作条件,VCORE电容必须为470 nF,VCC引脚的电容必须超过4.7 UF。

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

    您好,先生,

           感谢您的建议,我将尝试一下, 但我还有一个问题,就是如果我在代码中删除这个晶体 “做...做...做循环” ,那么我的代码不会被任何地方卡住,所以如果我从代码中删除这个循环,它会影响我的控制器的输出吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您移除回路,则根本不会使用晶体。

    您必须解决阻止晶体启动的实际问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,先生,
    我同意这一点,但我感到困惑的是,当我删除这个晶体时,我的代码的其他功能工作正常,所以为什么会出现这种情况, 我的另一个问题是我的10个硬件(PCB)中的这种问题,我只在3个硬件(PCB)中遇到这种问题,在其余的7个PCB中,我的代码不会卡在这个循环中,所以对于这种行为,原因是什么。

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

    Kinjal,

    您使用ACLK的目的是什么?

    如果您删除DO....while loop,振荡器故障标志将被清除,这意味着ACLK不是从XT1运行,而是从VLO运行,如用户指南中的“CS Module fail-safe Operation”(CS模块故障安全操作)一章所述。 在这种情况下,ALCK的频率不同,这可能不会对您的系统产生重大影响。 因此,如果您不需要32 kHz晶体的精度,请使用VLO精确度来保护电源和外部组件。

    如果您需要32 kHz的晶体累积,则必须找出XT1故障的来源。 这可能是由于晶体损坏,LFO布局受污染,盖子设置错误,...

    我建议使用示波器检查ALCK,以查看信号的外观。