【问题标题】:MSP430 clock problems after reset复位后的 MSP430 时钟问题
【发布时间】:2011-11-10 14:27:53
【问题描述】:

我使用以下例程来配置我的 MSP430 (msp430g2231) 微控制器的时钟:

void configure_clock(void) {
if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) { // Checks the clock constants
        while(TRUE); // If callibration constants are erased, TRAP!
    }

    BCSCTL1 |= CALBC1_1MHZ; // Sets DCO range
    DCOCTL |= CALDCO_1MHZ; // Set DCO step and modulation

    BCSCTL1 &= ~(XTS | XT2OFF); // Disables XT2 and sets low frequency mode
    BCSCTL3 |= (LFXT1S_0 | XCAP_3); // Selects LFXT1 crystal with 12,5pF

    do {
        IFG1 &= ~OFIFG;
        __delay_cycles(1000);
    } while (IFG1 & OFIFG); // Waits until crystal stabilizes

    BCSCTL2 |= (SELM_2 | SELS); // Selects SMCLK and MCLK from LFXT1CLK
}

问题是代码第一次运行时(刚刚启动微控制器后)一切都按预期工作,我得到了 32768 kHz 时钟。但是,如果我按下板上的复位按钮(MSP430 Launchpad),时钟似乎无法正常工作,代码执行速度很慢(比如 10 次左右)。关于时钟配置的任何想法?

谢谢!

佩雷

【问题讨论】:

    标签: real-time reset clock msp430


    【解决方案1】:

    首先您可以查看电源电压。如果在启动过程中出现一些峰值,则 DCO 将无法工作。在这种情况下,请尝试在值与 BCSCTL1 对齐之前使用延迟。

       __delay_cycles(10000);
       BCSCTL1 = CALBC1_1MHZ; // Sets DCO range
    

    这将确保抑制启动峰值。

    下一个嫌疑人将在您的目标板上解耦。我的意思是 VCC 上的电容器以及复位中使用的电容器。 TI 推荐 1nF-2nF 用于复位线,0.1uF 用于 VCC。但是,如果您将 LaunchPad 用作平台,那么这应该不是问题。

    对于校准值分配也使用赋值运算符而不是逻辑运算符。因为其他值为 0 是默认值。

      BCSCTL1 = CALBC1_1MHZ;               // Set DCO
      DCOCTL = CALDCO_1MHZ;
    

    如果您计划运行 XT2,它在 G2231 中不可用。它的LFXT1 直接。 您不需要显式初始化 32.768KHz 晶振即可工作。 它只是在你通电时工作。所以不需要额外的初始化步骤。

    为了获得更好的帮助,请查看slac463a 获取与时钟设置相关的软件示例。

    【讨论】:

      【解决方案2】:

      我可以对您的代码提出的唯一建议如下。他们是否解决了你的问题我不知道,因为第一次运行似乎很奇怪,但重置后就不行了。您是否在其他任何地方访问时钟配置?重置时调用什么代码?

      您总是使用位操作将值包含或排除到寄存器中。您应该从已知值开始,然后从那里调整位,否则您可能会合并来自先前状态的位。例如,而不是:

      BCSCTL1 |= CALBC1_1MHZ;
      BCSCTL1 &= ~(XTS | XT2OFF);
      

      您可以通过执行以下操作将其设置为确定值:

      BCSCTL1 = XT2OFF | (CALBC1_1MHZ & 0x0F);
      

      另一个建议是必须设置 XT2OFF 才能关闭 XT2。您正在清除该位,因此将其保持打开状态。这与您的评论有冲突,因此可能是一个错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2016-10-05
        相关资源
        最近更新 更多