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.

[参考译文] MSP430FR6047:HSPLL 解锁错误问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1514464/msp430fr6047-issue-with-hspll-unlock-error

器件型号:MSP430FR6047

工具/软件:

大家好

我们将根据定制电路板的示例代码开发流量计。 直到昨天、主机 PC 突然报告了以下错误、代码一直运行正常:

错误:  HSPLL|24|HSPLL detected that the PLL has unlocked.

  1. 我们怀疑存在问题  USSXTAL  (超声波晶体振荡器)。  示波器在晶体上显示无活动。已更换晶体、但问题仍然存在。

  2. 与 EVM 板的比较: 我们检查了  EVM430FR6047  (工作正常)并观察到相同的行为 在 USSXTAL 上未检测到振荡 —但 EVM 板却有  不会  报告任何与 PLL 相关的错误。这种不一致令人困惑。

  3. 根据论坛建议、https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/934436/evm430-fr6047-error-hspll-detected-that-the-pll-has-unlocked/3458382?tisearch=e2e-sitesearch&keymatch=HSPLL%252525252520detected%252525252520that%252525252520the%252525252520PLL%252525252520has%252525252520unlocked#3458382 。我们加载了  HSPLL 模块示例代码  为了测试 PLL 锁定功能。LED 正常闪烁、且 PLL 成功锁定而没有错误。但是、在运行时  水演示 PLL 解锁错误再次出现。

可能的原因有哪些? 我感到非常困惑。

我们非常感谢为解决这一问题提供任何见解或建议。

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

    您好、

    参数设置不当可能会导致 USS 库报告此问题。 运行水演示时、您能否在不进行任何修改的情况下尝试使用原始水表演示工程?  

    您应该在电路板上观察到 USSXTAL 振荡、USSXT 应该会在激励脉冲生成时振荡。  

    此致、

    现金好  

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

    您好、

    很高兴再次听到您的声音。 关于我们的定制电路板、USSXTAL 使用晶体振荡器而非陶瓷谐振器。 为此、我已在 USS_userconfig.h 中修改了以下设置:

    #define USS_HSPLL_USSXTAL_SETTLING_USEC 4000
    #define USS_HSPLL_TOLERANCE_PERCENT 5
    #define USS_HSPLL_INPUT_CLK_TYPE USS_HSPLL_input_clock_type_crystal

    我有两个问题:

    1. 根据用户手册、如果使用晶体振荡器、则 HSPLLUSSXTCTL.OSCTYPE  HSPLLUSSXTCTL 寄存器中的位应设置为 0。 上述代码是会自动实现此更改、还是需要手动修改寄存器值?

    2. USSXTAL 是否仅在传输波形时工作? 如果是、我在示波器上观察到了一个短暂的高频信号。 这是否表明 USSXTAL 正常工作?

    .e2e.ti.com/.../23b13b393d1e4daf968d6093b40d770e.mp4

    期待您的澄清。

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

    您好、

    1.无需对寄存器值进行额外的手动修改。  

    2.是的, USSXT 不是一直工作以节省电力。 它仅 在 USS 模块工作时运行。 您可以放大以检查示波器上的高频信号。 您应该会在那里得到一个8MHz 信号。

    此致、

    现金好

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

    "我想与您分享最新进展。 我已经用陶瓷谐振器(型号 AWSCR-8.00CV-T)替换了晶体振荡器、以便 USSXT 与 EVM 板配置保持一致。 主机现在没有报告错误。

    但是、我感到困惑的是一项发现:虽然数据表显示 HSPLL 支持晶体振荡器作为时钟源、但为什么晶体振荡器在 wate_demo 应用中无法使用? 即使修改了配置文件、它仍然无法正常工作。"

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

    您好、

    实际上、MCU 支持使用晶体振荡器。 我假设它可能与晶体本身和负载电容值有关、从而导致一些意外问题。  

    此致、

    现金好

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

    您好、

    我相信这个问题已经确定。 我从以下链接刷写了 HSPLL 示例代码:
    https://dev.ti.com/tirex/explore/node?node=A__ACQ2..dUrB7EMaOXgN0m8Q__msp430ware__IOGqZri__LATEST

    如前所述、代码正常运行。 我检查了晶体振荡器的输出引脚并观察到8MHz 波形、从而确认振荡器电路正常工作。

    但是、在刷写正式代码并修改之后  USSXT  输入  userconfig.h 、振荡器输出引脚不再显示8MHz 波形。

    我怀疑是中的 HSPLL 初始化配置  Water_Demo  与示例代码不同。 这可能是一个错误吗? 看来是这样  Water_Demo  不支持如所示使用晶体振荡器  USSXT 、即使在修改后也是如此  USSXT  输入  userconfig.h

    这是 hspll 示例代码中的 initialization 语句

    void HSPLL_init(void)
    {
        // Configure USSXT Oscillator
        HSPLLUSSXTLCTL = OSCTYPE__CRYSTAL |  USSXTEN;
    
        // Set up timer to wait in LPM for crystal stabilization time = 4096 clocks for crystal resonator.
        // For 8MHz XTAL, 4096 clocks = 512us. Using VLO = 9.4kHz, wait 5 timer clock cycles = 532us.
    
        TA4CCR0 = 5;
        TA4CCTL0 = CCIE;                        // Enable Interrupt
        TA4CTL = TASSEL__ACLK | TACLR | MC__UP; // Timer sourced from ACLK (VLO), clear timer
        __bis_SR_register(LPM3_bits | GIE);     // Enter LPM3 w/interrupt
        __no_operation();                       // For debug
    
        // Check if oscillator is stable
        while((HSPLLUSSXTLCTL & OSCSTATE) == 0);
    
        // Output oscillator on pin
        HSPLLUSSXTLCTL &= ~XTOUTOFF;
    
        // Init PLL
        // Use the PLLM setting to get 80MHz output from our 8MHz input
        // Equation: PLL output clock frequency x 2 = input clock frequency x (PLLM+1)
        // Input clock frequency = 8MHz
        // Desired PLL output clock frequency = 80MHz
        // PLLM = 19
        HSPLLCTL = PLLM4 | PLLM1 | PLLM0 | PLLINFREQ; //PLLM = 19, PLL input frequency > 6MHz
    
        // Power up the UUPS to start the PLL
        UUPSCTL |= USSPWRUP;
    
        // Wait for UUPS to power up
        while((UUPSCTL & UPSTATE_3) != UPSTATE_3);
    
        // Wait for PLL to lock
        while(!(HSPLLCTL & PLL_LOCK));
    }

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

    您好、

    我建议在调试模式下、在 HSPLL  示例代码和水演示代码之间比较 HSPLLCTL 寄存器值和其他相关寄存器。 它应该会告诉我们配置是否有任何差异。  

    此致、

    现金好