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.

[参考译文] MSP430F5359:使用外部时钟时的功耗

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/630561/msp430f5359-power-consumption-using-external-clock

部件号:MSP430F5359
主题中讨论的其他部件:MSP430F5436

我遇到了一个问题,我似乎不能过去:一旦启用了外部晶体,我在LPM4模式下燃烧大约230mW (在3.3V时约70mA)。 我在同一主板上有一个类似的处理器(MSP430F5436),它在LPM4中的功耗约为2mW。  

详情如下:

1)该板只有几个旁路盖,两个CPU和两个7.37MHz晶体(每个一个)。  

2)处理器的代码基本相同:

int main (void){
易失性无符号int I;

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

USE_XT2();

__bis_sr_register(LPM4_bits);//输入LPM4,中断已禁用......... 温度!!!!!!!!!

...但是,“use_XT2”例程是不同的,因为它们特定于每种处理器类型。  

对于MSP430F5359 (耗电量过大的设备),“USE_XT2”代码为:

void use_XT2 (void)

易失性无符号int I;

PDSEL_L = 0x0C;

//在XT2上使用7.3728mhz xtal设置时钟
UCSCTL0 = 0x0000;//使用FLL时由硬件设置的DCO

UCSCTL1 = 0x0060;// DCORSEL = 6,选择DCO频率范围4.6 - 10.7 MHz

UCSCTL2 = 0x0001;// FLLD = 0,FLLN = 1,

UCSCTL3 = 0x0050;// FLREFCLK = 5 (选择XT2CLK)
// FLLREFDIV = 0 (参考/1)

UCSCTL4 = 0x0555;// ACLK = MCLK = SMCLK = XT2CLK


UCSCTL5 = 0x00;// ACLK,MCLK,SMCLK当前所有DIV为1

//__bis_sr_register(LPM4_bits);//输入LPM4,禁用中断......... 温度!!!!!!!!!

UCSCTL6 = 0x002D;// XT2DRIVE = 0,4至8MHz
                  // XT2BYPASS = 0,用于XT2操作
                  // XT2OFF = 0,XT2已打开
                 // XT1DRIVE = 0
                 // XTS = 1,不使用高频率上限
                  // XT1BYPASS = 0
                 // XCAP = 3,最小值
                 // SMCLKOFF =0,SMCLK打开
                 // XT1OFF = 1,xt1关闭

__bis_sr_register(LPM4_bits);//输入LPM4,中断已禁用......... 温度!!!!!!!!!


}// use_xt2()

注意LPM4模式语句。 在当前配置中,功耗为240mW。 如果我从上面的UCSCTL6设置中删除注释,则功率将下降到2mW。 基本上,我是在启用XT2晶体之前停止CPU的。  

3)我看了两个CPU的晶体针脚,它们看起来是一样的。

我缺少什么?

提前感谢!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您不使用旁路模式时,为什么要提到"外部时钟"?

    无论如何,这不是初始化晶体振荡器的正确方法。 您必须等待其启动完成;有关详细信息,请参见示例程序。

    如果未正确初始化未连接的针脚,将会浪费随机的电量(请参阅《用户指南》中的1.6 部分)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢你们的快速响应!

    我很抱歉-我使用的是时钟而不是水晶。 我使用的是外部晶体,所以我认为我已经正确设置了它。 xt1处于旁路模式,因为UCSCTL6的位为零,而XT2是打开的,因为位8为0。 第12位已清除,因此我选择了外部晶体。

    实际上,我有一个"initDiscarteIO"例程,它在调用"use_XT2"例程之前,为每个端口设置所有方向,函数和输出设置。 我刚刚把它取出来试图缩小问题的范围。 将其移回过去没有任何影响-权力仍然相当大。 不错的地方

    我还应该提到,我确实完成了检查OSC故障标志的例行程序。 这是您所指的吗? 下面是代码:

    while (SFRIFG1 & OFIFG){//检查OFIFG故障标记
      同时(((SFRIFG1 & OFIFG))//检查OFIFG故障标记
      {
       //清除OSC故障标志
       UCSCTL7 &=~(DCOFFG + XT1LFOFFG + XT1HFOFFG + XT2OFFG);
       SFRIFG1 &=~OFIFG;//清除OFIFG故障标志
      }
    }

    我把它放回"use_XT2"例程中。 它可以清除该例行程序-我可以在例行程序之后设置一个LED,然后它将打开。 我猜既然没有故障,那么振荡器工作正常吗?

    我还应该注意,我从主板上拔下仿真器,然后每次检查时重新启动。 让它保持插入状态会产生不可预测的结果,因为我不确定仿真器上的什么是在消耗电源。

    在恢复振荡器检查循环和"initDiscreteIO"例程后,我仍在提取240mW。

    再次感谢您的帮助。

    丰富

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

    为什么要清除XT2OFF?

    XT2引脚的配置是什么?

    是否有任何连接到任何针脚?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的回复。 好问题。

    也许我读的数据表不正确,但我认为我将XT1置于旁路模式。 SLAU2080 (第181和182页的MSP430x5xx和MSP430x6xx系列用户指南显示,当UCSCTL6寄存器中设置了位零时,XT1关闭。 我正在将寄存器设置为0x002D,因此应该设置该寄存器。 同样,通常设置位8,从而关闭XT2。 我正在清除它以打开XT2。 或者至少我认为这是我需要做的。 我错了吗?

    该处理器上的XT2针脚位于WFP 7.2 和WFP 7.3 针脚上,因此将P7SEL寄存器设置为0x0C,这些针脚将被置于‘外设功能’模式。 这是在'use_XT2'例程的第一行中完成的。

    至于其余的插针,我已经确定主板上没有其它硬件,甚至没有任何上拉。 它只是CPU,它们的晶体,一组旁通盖和一个5.0 到3.3V稳压器(该稳压器没有任何一个CPU的I/O连接)。 唯一连接的I/O是CPU之间UCA1连接的两个引脚(8.2 和8.3)。 我已经将这些引脚设置为输入或输出(高或低),并且没有看到功率变化。

    谢谢!

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

    位0称为XT1OFF。 XT1BYPASS将是位4。

    XT2OFF位(如XT1OFF)仅在实际不需要时关闭XT2。 清除它将强制XT2在LP04中运行。

    XT2DRIVE位在启动期间应保留其最大值;仅当晶体运行时才应减少这些值。

    XTS启用XT1的高频模式,而您的硬件没有该模式。 切勿设置。

    尝试将UCSCTL6设置为XT1OFF + XCAP_3+XT1DRIVE_3+XT2OFF + XT2DRIVE_3。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    耶!! 就是这样。 使用该设置时,它仍然很高,但是当我将XT2驱动器设置为0 (4至8 MHz的rec.)时,它是有效的。 现在悬停在3mW左右。 我错过了XTxOFF比特-很棒的通话。

    非常感谢!

    丰富