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.

[参考译文] MSP430F5151:16MHz晶体作为24MHz时钟参考

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/581569/msp430f5151-16mhz-crystal-as-24mhz-clock-reference

部件号:MSP430F5151

是否可以使用16MHz外部晶体(连接到Xin/XOUT)作为F5151上24MHz CPU时钟的参考?

谢谢!

Skyler

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

    是的,XT1CLK可选择用于高频16 MHz操作(XTS = 1,XT1DRIVE = 2,OSCOFF = XT1BYPASS = XT1OFF = 0),可选择作为FLL参考时钟源(SELREF = 0),然后除以16 (FLLREFDIV = 5),再乘以24 (FLLN = 23)将DCO频率稳定在24 MHz。 确保PMMCOREV逐级提升至3级。

    此致,
    Ryan

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

    谢谢Ryan。 我现在要做的是以24MHz运行MCLK (引用自XT1),并以16MHz直接从XT1运行SMCLK。

    下面是我当前使用的代码:

    bspMcuSetVCore(1);
    bspMcuSetVCore(2);
    bspMcuSetVCore(3);
    
    UCSCTL6 &=~(XT1OFF | XT1BYPASS); // XT1开
    UCSCTL6 ||(XTS + XT1DRIVE_2); //内部负载盖
    UCSCTL3 = FLLREFIV2 + FLLREFIV0; // FLL参考时钟= XT1
    UCSCTL4 |= SELM_0; // MCLK = X1 (默认)
    UCSCTL2 = 23 + FLLD_1;
    
    //循环直到XT2和DCO稳定-在这种情况下循环直到XT1和DCO稳定
    做
    {
    UCSCTL7 &=~(XT1LFOFFG + XT1HFOFFG + DCOFFG);
    //清除XT1,DCO故障标志
    SFRIFG1 &=~OFIFG; //清除故障标志
    }同时(SFRIFG1&OFIFG); //测试振荡器故障标志
    

    从这里,我看到了一个16 MHz MCLK和SMCLK。 您能帮我让MCLK以24MHz运行吗?

    谢谢!

    Skyler

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Skyler:
    您需要通过在UCSCTL6寄存器的XT2OFF中写入0来打开XT2,并检查振荡器故障,设置驱动器,然后在UCSCTL4寄存器中正确选择SMCLK和MCLK源。 您可以参考以下代码示例:


    UCSCTL6 &=~XT2OFF; //将XT2设置为打开
    UCSCTL6 |= XCAP_3; //内部负载盖

    //默认情况下,XT1是打开的,因为它是FLL -内部负载上限的默认参考?
    //循环直到XT1,XT2和DCO稳定


    UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
    //清除XT2,XT1,DCO故障标志
    SFRIFG1 &=~OFIFG; //清除故障标志
    }同时(SFRIFG1&OFIFG); //测试振荡器故障标志

    UCSCTL6 &=~XT2DRIVE0; //根据减小XT2驱动器
    //预期频率
    UCSCTL4 |=拉美经济体系0 + SLS_5; //选择SMCLK,ACLK源和DCO源

    但这是为ACLK = LFXT1 = 3.2768万Hz,MCLK =默认DCO = 32 x ACLK = 104.8576万Hz和SMCLK = HF XTAL编写的。 您需要更改VCORE并为DCO设置适当的乘数。

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

    如果显示的代码为MCLK和SMCLK的16 MHz,我会感到惊讶。 默认情况下,Sils和SELM值设置为4,因此UCSCTL4 |= SELM_0不起作用,您仍在引用DCOCLKDIV。 我不确定为什么要使用FLLD_1将DCOCLK除以2,但这也是默认设置。 对于24 MHz操作,DCORSEL应设置为6或7。 由于您必须以任何速率使用FLL控制回路,为什么不使用MSP430F51x2_UCS_10.c和内部FO将MCLK设置为24 MHz并运行XT1以源SMCLK 16 MHz?

    Vikas,

    MSP430F5151没有XT2模块。

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

    感谢Vikas和Ryan。

    从XT1采购MCLK的原因是,我们需要在24 MHz的温度条件下,它比100 ppm更好。 目前,客户使用的是16 MHz晶体,因此我们可以用24 MHz晶体替换它,以使事情更顺利。

    Skyler

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

    通过由FLL控制的DCO提供MCLK的任何解决方案(由REFO或XT1提供)都将包括频率温度漂移0.1 %/°C 只有MCLK直接来自XT1上安装的24 MHz晶体,才能产生高于100 ppm的温度。 为什么客户在MCLK和SMCLK上需要如此精确但不同的频率? 他们能否使用24 MHz晶体直接获取MCLK,然后用2除以12 MHz SMCLK?

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

    Ryan,

    这适用于Sigfox应用程序,它要求MCLK和8 MHz SPI时钟(我们从SMCLK采购)的计时极其精确。 我们发现,使用内部参考导致了SPI写入之间的延迟问题,并影响BPSK计时和频谱掩码。

    在我们的原始设计中,我们将32kHz晶体乘以24 MHz MCLK和SMCLK,然后将SPI时钟除以3,但我们希望与客户已在其电路板上设计的晶体配合使用。 MCLK和SMCLK将切换到24 MHz XT1,SMCLK除以3以SPI时钟。 感谢您的帮助!


    Skyler