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/MSP430FR5994:使用 CCS EnergyTrace 技术测试 LPM3功耗

Guru**** 2589265 points
Other Parts Discussed in Thread: ENERGYTRACE, MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/785631/ccs-msp430fr5994-using-ccs-energytrace-technology-to-test-lpm3-power-consumption

器件型号:MSP430FR5994
主题中讨论的其他器件:ENERGYTRACE

工具/软件:Code Composer Studio

我使用的是 TI MSP430FR5994评估板。 我想测试 LPM3的功耗。 数据表显示 LPM3的电流消耗应为0.7uA。  EnergyTrace 文档指出、在不进行调试会话的情况下进行测试更准确。 我在没有调试会话的情况下测试了它。 但结果是大约50uA、远高于0.7uA。 有人知道原因吗? 谢谢。

我使用的代码为:

#include "driverlib.h"

void main (void){
WDT_A_HOLD (WDT_A_base);
_ bis_SR_register (LPM3_bits + GIE);
} 

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

    最可能的原因是您尚未将 IO 引脚配置为输出并将其全部设置为0。 在 POR 之后将引脚保留为输入将使其浮动并可能发生振荡、从而导致电流增加。 不要忘记在之后解锁 IO、如图所示。

    如下所示:
    P1OUT = 0x00;
    P1DIR = 0xFF;

    //
    //清除端口锁定
    //
    PM5CTL0 &=~LOCKLPM5;

    完成此操作后、如果您仍然看到高电流、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Dennis:

    我是否可以直接调用任何库函数来将所有未使用的 IO 引脚配置为输出并将其全部设置为0?

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

    尊敬的 Dennis:

    请忽略我上次的回复、询问库函数以配置 IO 引脚。 我找到了一些有用的命令来实现这一点。

    下面是我尝试配置引脚的方法。

    首先、我查看了 MSP430FR5994的数据表、并找到了功能方框图。 MSP430FR5994具有 PA (1x16)、PB (1x16)、PC (1x16)、PD (1x16)、PJ (1X8)。 因此、我使用以下代码将所有引脚设置为输出并使它们= 0:

    PADIR=0xFFFF;PAOUT=0x0000;//端口1和2
    PBDIR=0xFFFF;PBOUT=0x0000;//端口3和4
    PCDIR=0xFFFF;PCOUT=0x0000;//端口5和6
    PDDIR=0xFFFF;PDOUT=0x0000;//端口7和8
    PJDIR=0xff;PJOUT=0x00;//端口 JTAG 端口 

    但是、电流消耗仍然相同、大约为50uA。 我还尝试了您在第一次答复中提供的命令、以设置所有 pints 和 drivelibs.h 命令、如下所示  

    GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
    GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
    ... //表示所有引脚 

    我仍然得到相同的结果。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dennis 的建议总的来说很好、但对于任何特定的电路板、您都需要注意总线冲突。

    LaunchPad 具有几个您应该检查的器件:
    a)从 J101上拆下 RXD/TXD 跳线。 (我还移除了5V 跳线、尽管这可能无关紧要。)
    b)从插槽中取出 SD 卡
    c)从 J8 (超级电容器)上移除跳线
    d)从 J7 (P1.0 LED)上移除跳线(根据需要)

    示例程序 msp430fr599x_lpm3_02还有其他一些需要考虑的问题。 它
    1)设置 ACLK=VLOCLK (我不确定 LFMODCLK 的消耗量;FR2上的类似时钟消耗的电流约为20uA)
    2) 2)关闭晶体振荡器(HFXT/LFXT)

    当我在 Launchpad 上运行 lpm3_02 (J7已删除)时、EnergyTrace 报告大约为0.6uA。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bruce、

    我使用示例代码"msp430fr599x_lpm3_02"获得了 LPM3的0.7uA 功耗。 这可能是系统时钟设置问题。 我不太清楚该示例是如何设置时钟的。 您能更详细地解释一下以下代码:

    //时钟系统设置
    CSCTL0_H = CSKKEY_H; //解锁 CS 寄存器
    CSCTL1 = DCOFSEL_0; //将 DCO 设置为1MHz
    CSCTL2 = SELM__DCOCLK | SELESS__DCOCLK | SELA_VLOCLK;
    CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;//将所有分频器设置为1
    CSCTL4 = LFXTOFF | HFXTOFF;
    CSCTL0_H = 0; //锁定 CS 寄存器 

    谢谢、

    Yubo

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

    您好!

    来这里说、我已经弄清楚了该代码的含义。 示例代码 "msp430fr599x_lpm3_02"是我的保护程序。 如果有人希望使用 Driverlib.h 函数进行此时钟系统设置、 我 也将其翻译成了 Driverlib.h 函数(请参阅下面的代码)。 它们的功能完全相同。   

    //针对时钟设置的 DriverLib 版本的时钟系统
    CS_setDCOFreq (CS_DCORSEL_0、CS_DCOFSEL_0);//将 DCO 设置为1MHz
    CS_initClockSignal (CS_ACLK、CS_VLOCLK_select、CS_clock_divider);// ACLK 到 VLO (FR5994为9.4KHz),除以1
    CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_clock_divider _1);// MCLK 到 DCO,除以1
    CS_initClockSignal (CS_SMCLK、CS_DCOCLK_select、CS_clock_divider);// SMCLK 到 DCO,除以1
    CS_TurnOffLFXT ();//停止 LFXT 振荡器,节省功耗
    CS_TurnOffHFXT ();//停止 HFXT 振荡器,节省功耗