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.

[参考译文] EVM430-F6736:DCOFFG 正在持续设置。

Guru**** 2602215 points
Other Parts Discussed in Thread: EVM430-F6736

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/646974/evm430-f6736-dcoffg-is-setting-continuously

器件型号:EVM430-F6736

您好!

我们最近购买了 EVM、在通电后、LCD 中未显示任何内容。 我们怀疑 EVM 未编程、因此加载了项目(如 SLAA517E 中所示)。 电路板已编程、LCD 未出现、但程序的其他部分正常工作(通过调试器进行检查)。 我们怀疑液晶屏、并编写了一个简单的程序来检查液晶屏是否正常工作(液晶屏出现)。 我们在 SLAU517e 中提到的应用程序代码中调试了一个位、并观察到以下情况:
1.如果我们在 system_setup()函数中注释调用的 LFXT_Start(),则一切看起来都正常(包括 LCD)。
2.即使我们清除了 DCO 故障标志、当程序运行时、DCO 故障标志也始终置1。(通过调试器进行验证)
如果有人能提供一些见解、那将会很有帮助。
谢谢、此致
Shahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Shahul、

    LFXT 晶振(Q1)可能有缺陷且振荡不正确、从而导致故障标志环路失败。 您能否在调试器中确认 XT1LFOFFG 位是否被置位? 您还可以尝试探测 XIN/XOUT 引脚或更换晶体。

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

    尊敬的 Ryan Brown:

    感谢您的回答。 我刚刚重新检查了它、 XT1LFOFFG 没有被置位。 由于我们使用全新的 EVM430-F6736、这似乎不是一个晶体问题。 那么、设置 DCOFFG 的原因可能是什么?

    谢谢、此致

    Shahul

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

    当 DCO 抽头移至最低位置(DCO 被清零)或 N 倍频器值在所选 DCO 频率范围内设置得过高(导致 DCO 抽头移至最高位置)时、DCO 故障标志被置位。 总之、如果 UCSCTL0寄存器中的 IF DCO 位值等于{0}或{31}。 DCOFFG 保持置位直到被用户清零、但是如果故障状态保持、DCOFFG 将自动置位。 MSP430器件是否已充分供电? 必须为 PMMCOREVx 电平3提供至少2.4V 的电压。 您是否有其他要测试的 EVM430-F6736板?

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

    您好、Ryan、

    感谢您的意见。 正如您在调试器输出 UCSCTL0值不等于 {0}或{31}中看到的那样。 我们还验证了 DVCC 正在获得足够的(3.3V)电压。 到目前为止、我们没有 其他 EVM430-6736电路板、但我们不确定使用另一个 EVM430有何帮助、因为问题似乎是 DCO、而不是外部晶体。

    谢谢、此致

    Shahul

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

    您好、Shahul、

    您好像在使用 SLAA517中的代码 (我可以找到 SLAA517E、但很遗憾、不是 SLAU517E)。 我想我之前已经看到过这个问题、它基本上是由 DCO 设置时间延迟结束前看门狗计时器(WDT)超时引起的。

    为了进行快速测试、您可以禁用 WDT、它应该可以正常工作。 如果您希望在应用程序代码中保持 WDT 运行、则可以尝试对 WDT 进行踢脚(或重置)。 在'emeter-setup.c'文件中,是否可以在"system_setup()函数内的"SetVCore (3)"函数之前添加以下代码行?

    KICK 看门狗();//将看门狗计时器精确设置为1 * 

    请告诉我这是否能解决您的问题。 作为一般反馈、请确保在 EVM430-F6736上组装了 AUX1、AUX2和 AUX3跳线。

    此致、

    James

    MSP 客户应用

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

    您好 James、

    感谢您的宝贵意见。 连接完所有 AUX 跳线后、LCD 在不注释 LFXT_Start (XT1DRIVE_3)的情况下即可正常工作;在 带有 slaa517e 代码的 system_setup (void)函数中、添加 KICK 看门狗()后 DCOFFG 仍不会清除;如您所建议的那样。

    谢谢、此致

    Shahul

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

    您好、Shahul、

    很高兴跳线解决了 LCD 问题。

    关于 DCOFFG 问题、我想我把它与另一个问题混淆、因为 WDT 复位器件、DCO 设置从未发生。 在 SLAA517E 代码的'emeter-setup.c'文件中、我看不到在配置 DCO 之前和之后、DCOFFG 被轮询和清除的位置。 这是您要添加的代码。

    while (SFRIFG1和 OFIFG)
    {
    /*检查 OFIFG 故障标志*/
    UCSCTL7 &=~(DCOFFG | XT1LFOFFG | XT2OFFG);/*清除 OSC 故障标志*
    SFRIFG1 &=~OFIFG; /*清除 OFIFG 故障标志*/
    } 

    为了知道应该在哪里添加这个代码、下面是一个类似项目中的更多代码、在这个项目中、我在设置 DCO 之前、然后在 DCO 稳定之后、轮询并清除了 DCOFFG (和其他代码)。

    SetVCore (3);
    UCSCTL5 |= DIVS__1;
    UCSCTL4 = SELM__DCOCLK | SELESS__DCOCLK | SELA_XT1CLK; /* 25MHz MCLK、25MHz SMCLK、32KHz ACLK */
    
    _bis_SR_register (SCG0); /*禁用 FLL 控制环路*/
    UCSCTL6 =(UCSCTL6 | XT1DRIVE_3); /* XT1启动的最高驱动器设置*/
    while (SFRIFG1和 OFIFG)
    {
    /*检查 OFIFG 故障标志*/
    UCSCTL7 &=~(DCOFFG | XT1LFOFFG | XT2OFFG);/*清除 OSC 故障标志*
    SFRIFG1 &=~OFIFG; /*清除 OFIFG 故障标志*/
    }
    UCSCTL6 =(UCSCTL6 &~(XT1DRIVE_3)); /*将驱动降低至较弱的程度*/
    
    UCSCTL0 = 0;
    UCSCTL1 = DCORSEL_6; //将 RSELx 设置为 DCO = 25MHz */
    UCSCTL2 = FLLD_2 |(192 - 1); //将 DCO 乘法器设置为25MHz */
    /*将 FLL 设置为4*192*32768 => 25165824Hz */
    _BIC_SR_register (SCG0); /*启用 FLL 控制环路*/
    
    // DCO 范围位已经存在时、DCO 的最坏情况稳定时间
    //已更改 n x 32 x 32 x f_MCLK / f_FLL_reference。 请参阅5xx 中的 UCS 一章
    // UG 进行优化。 这里、n = 1、因为 FLLREFDIV 为1。
    // 32 x 32 x 25 MHz/32、768Hz ~ 780k MCLK 周期、DCO 才能稳定
    _DELAY_CYCLES (782000);
    
    //循环、直到 XT1、XT2和 DCO 稳定
    while (SFRIFG1和 OFIFG)
    {
    /*检查 OFIFG 故障标志*/
    UCSCTL7 &=~(DCOFFG | XT1LFOFFG | XT2OFFG);/*清除 OSC 故障标志*
    SFRIFG1 &=~OFIFG; /*清除 OFIFG 故障标志*/
    } 

    我确认在设置 DCO 后 DCOFFG 被清除。 我希望这对您有所帮助!

    此致、

    James

    MSP 客户应用

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

    您好 James、

    感谢您的意见、解决了我们的问题。

    谢谢、此致

    Shahul