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.

[参考译文] CCS/MSP430FR5739:MCLK和SMCLK以错误的频率运行

Guru**** 2613795 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/664552/ccs-msp430fr5739-mclk-and-smclk-running-at-the-wrong-frequency

部件号:MSP430FR5739

工具/软件:Code Composer Studio

我已将时钟设置为MCLK = SMCLK = DCO @ 8MHz和ACLK = VLO @ 10kHz,如下函数所示:

void clock_init(void)
{
//解锁CS寄存器。
CSCTL0_H = 0xA5;
///@错误DCO应为8MHz,但出于某种原因应为1MHz。
CSCTL1 &=~(DCORSEL);
CSCTL1 || DCOFSEL0 | DCOFSEL1;
// ACLK VLOCLK,SMCLK = MCLK = DCOCLK
CSCTL2 |=拉美_ VLOCLK | SESS__DCOCLK | SELM__DCOCLK;
//不预分时钟。
CSCTL3 || DIVA__1 | DIVs__1 | DIVM__1;
//关闭未使用的时钟。
CSCTL4 |= XT1OFF | XT2OFF;
//锁定寄存器。
CSCTL0_H = 0;
} 

但是,出于某种原因,MCLK和SMCLK均以1MHz运行,而ACLK的运行频率为~8kHz。

我似乎无法理解我做错了什么。

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

    您好,

    您可以使用官方示例代码测试并查看其是否正确。 只需使用以下代码,不包括任何其他自有软件。 期待您的反馈。

    //************************************************************************************************
    // MSP430FR57xx演示-为MCLK配置8MHz操作
    ////
    说明:配置ACLK = SMCLK = MCLK = 8MHz
    ////
    MSP430FR57x
    // --------
    ///|\| |//
    || |//--|RST
    |//
    | |//
    | |//
    | 4.0 2.0 |--> ACLK = 8兆赫
    ////
    Priya Thanigai
    //德州仪器(TI)
    // 2010年8月
    //使用IAR嵌入式工作台构建版本:5.10 & Code Composer Studio MC781/****************************************************************************************
    
    
    #include <MSP40.0.h>
    
    int main(void)
    {
    WDTCTL = WDTPW + WDTHOLD;//停止WDT
    
    CSCTL0_H = 0xA5;
    CSCTL1 |= DCOFSEL0 + DCOFSEL1;//设置最大值 DCO设置
    CSCTL2 =拉美3 + SELTS_3 + SELM_3;//设置ACLK = MCLK = DCO
    CSCTL3 = DIVA_0 + DIVS_0 + DIVM_0;//设置所有分隔器
    
    P2OUT = 0;//输出ACLK
    P2DIR || BIT0;
    P2SEL1 ||;
    PIT0;而
    
    
    
    <1 = 

    如果我的帖子有助于解决您的问题,请单击  验证答案    按钮 

    冬季,

    搜索 E2E! 您的问题可能已得到解答!  

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

    您好,Winter,

    该代码似乎正在正确设置时钟,但是有一个定期功能,即时钟停止时间仅超过1 us? 请参阅随附的Saleae屏幕截图。 此代码与我的代码有何不同?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是提高了Saleae的采样率,这肯定是一个采样问题。 是的,这似乎是以8MHz运行时钟,但我仍然不理解为什么我的版本不能执行同样的操作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可能是因为您的最后一行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经运行了一些测试,我的clock_init()函数与示例类似;它运行了一段时间。 然后,我在其他地方更改了SPI_init()函数的一些设置,时钟再次变得奇怪。 值得注意的是,MCLK更改为1MHz,SMCLK更改为~72kHz。

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

    您好,

    clock_init()似乎没有问题。 还有其它影响时钟设置的代码。 是否可以发布SPI_INIT()代码?

     

    如果我的帖子有助于解决您的问题,请单击  验证答案    按钮 

    冬季,

    搜索 E2E! 您的问题可能已得到解答!  

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

    您好,Winter,

    很明显,我以前做了一些错误的事情,但使用示例代码重置时钟已修复了它。 我学到的另一件事是尼奎斯特频率的重要性! 在24MHz频率下检查MCLK时,它看起来非常慢,但saleae的采样速度仅为24MSamples/s -我实际上需要>=48MSamples/s才能看到正确的信号! 这将解释MCLK显示不正常和缓慢的原因。

    谢谢。

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

    您好,

    感谢您分享您的发现。 我们拥有丰富的资源,包括TI.com和CCS Resource Explore中许多应用程序的示例代码,硬件设计指南和参考设计。 希望这些能帮助您的未来发展。

    如果我的帖子有助于解决您的问题,请单击  验证答案    按钮 

    冬季,

    搜索 E2E! 您的问题可能已得到解答!