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.

关于MSP432进入低功耗问题



各位您们好,最近用msp432做了关于432的工作电流测试,板子是自己画的,然后很简单基本就是个核心板,电路图付下面。

按照官方的 msp432_driverlib_3_21_00_05\examples\MSP432P4xx\pcm 中 pcm go to lpm3,的例程,通过JTAG把程序下载进去之后,发现可调电源的

输出电流没有任何变化,

供电用的3.3V,然后下载程序之后就拔掉了JTAG,电流依然有7mA,根据技术手册上说的LPM3 都是在uA级别。

之前没有接触过MSP低功耗系列,还请各位指教一下怎样才能从 HFXT 48Mhz进入到低功耗模式,然后通过外部中断唤醒呢。

虽然看了一些关于MSP432和430的一些介绍,但是还是没有掌握透,低功耗的使用方法,希望能够给些指导。谢谢,各位了。

  • 你用的哪个例程?

    不太清楚你的可调电源的电流显示精度,推荐用电流表,测量更准确

  • 您好,谢谢您的回复。我用的下面这一段程序例程。我用的那个可调电源精度是1mA的,

    因为这个432的开发版通电之后,有8mA所以我就有点不清楚是哪里的问题,我会用电流表调试看看,谢谢您

    int main(void)
    {
    /* Halting the Watchdog */
    MAP_WDT_A_holdTimer();

    /* Configuring P1.0 as output and P1.1 (switch) as input */
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);

    /* Configuring P1.1 as an input and enabling interrupts */
    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
    MAP_Interrupt_enableInterrupt(INT_PORT1);
    MAP_Interrupt_enableSleepOnIsrExit();

    /* Terminating all remaining pins to minimize power consumption. This is
    done by register accesses for simplicity and to minimize branching API
    calls */
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, PIN_ALL8);
    MAP_GPIO_setAsOutputPin(GPIO_PORT_PB, PIN_ALL16);
    MAP_GPIO_setAsOutputPin(GPIO_PORT_PC, PIN_ALL16);
    MAP_GPIO_setAsOutputPin(GPIO_PORT_PD, PIN_ALL16);
    MAP_GPIO_setAsOutputPin(GPIO_PORT_PE, PIN_ALL16);
    MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2, PIN_ALL8);
    MAP_GPIO_setOutputLowOnPin(GPIO_PORT_PB, PIN_ALL16);
    MAP_GPIO_setOutputLowOnPin(GPIO_PORT_PC, PIN_ALL16);
    MAP_GPIO_setOutputLowOnPin(GPIO_PORT_PD, PIN_ALL16);
    MAP_GPIO_setOutputLowOnPin(GPIO_PORT_PE, PIN_ALL16);

    /* Starting LFXT and sourcing ACLK and BCLK from it */
    MAP_CS_setExternalClockSourceFrequency(32000,48000000);
    MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ,
    GPIO_PIN0 | GPIO_PIN1, GPIO_PRIMARY_MODULE_FUNCTION);
    MAP_CS_startLFXT(false);
    MAP_CS_initClockSignal(CS_ACLK, CS_LFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);
    MAP_CS_initClockSignal(CS_BCLK, CS_LFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);

    /* Disabling high side voltage monitor/supervisor */
    MAP_PSS_disableHighSide();

    /* Enabling "rude" mode which forces device to go to sleep regardless of
    * outstanding clock requests
    */
    MAP_PCM_enableRudeMode();

    /* Enabling MASTER interrupts */
    MAP_Interrupt_enableMaster();

    /* Going to LPM3 */
    while (1)
    {
    /* Note that while this examples just goes to LPM3, LPM4 is essentially
    just LPM3 with WDT_A/RTC_C disabled. For convenience, the user can
    use the MAP_PCM_gotoLPM4() function if they want the API to handle
    the disabling of these components */
    MAP_PCM_gotoLPM3();
    }
    }

    /* GPIO ISR */
    void PORT1_IRQHandler(void)
    {
    uint32_t status;

    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);

    /* Toggling the output on the LED */
    if(status & GPIO_PIN1)
    {
    MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
    }

    }

  • 不用的io管脚配成输出低电平试一下

  • 先用TI的官方例程试一试