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.

MSP432P401R: Power consumption

Part Number: MSP432P401R
Other Parts Discussed in Thread: CC1200, CC1190

Hello,

If I have code:

void main(void)
{
	
    WDTCTL = WDTPW | WDTHOLD;           // Stop watchdog timer
    MAP_Interrupt_disableMaster(); 

    while(1){

        PCM_gotoLPM3();
    }
}

what current consumption should I expect? 

I've seen in data sheet that in  LPM3 current consumption is 660nA (is it 660nA/Mhz ? ) but I'am not getting that result (I'am getting like 80uA) so I want to see if I'am missing something in initialization.

Regards,

Ugljesa Popovic.

  • Hello Ugljesa,

    Simply calling LPM3 function is not sufficient. There are certain other actions that need to be done, like driving the IO's to a known state of 0, shutting down the PSS High Side Monitor. Please have a look at the following example in the SDK

    C:\ti\simplelink_msp432p4_sdk_1_60_00_12\examples\nortos\MSP_EXP432P401R\driverlib\pcm_go_to_lpm3
  • Thanks Amit for answer.

    I'am configuring pins to known state.
    But what about MCLK?
    When device is active I'am using external HFXT (48MHz). I configured device to work on that frequency but I don't change it before I go to LPM3. What happens to MCLK when I call gotoLPM3? What is source for MCLK in LPM3, given that HFXT is disabled in this power mode and given that DCO is also disabled which is default MCLK source (as far as I understand)?. 

    Regards,

    Ugljesa.

  • Hello Ugljesa

    The MCLK shall be gated if no peripheral requests it. Did you run the example and then make the current measurements?
  • Yes I have .. It was the same but I don't want to talk about that example I'am not using dev kit, I'am interested in these clocks now :D I think that I'am not using them very well :D
    "The MCLK shall be gated.."
    I'am not sure if I understand.. So when in LPM3 proccessor don't use any clock source (which makes sens given that its not doing anything but I thought it was on some very low freqency clock) and clocks that can run when in LPM3 are ON only ih some peripheral is using them?
  • Hello Ugljesa

    Can you please post the updated code so that we can try out the code on our side to confirm the observations you are seeing regarding the current consumption?
  • Ok, I will post you code tomorow on work hours
  • Hello,

    Here is code.



    //***************************************************************************** // // MSP432 main.c template - Empty main // //**************************************************************************** #include "driverlib.h" void main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer MAP_Interrupt_disableMaster(); /* Declare all GPIOs as outputs */ MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P3, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P4, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P5, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P6, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P7, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P8, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P9, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setAsOutputPin(GPIO_PORT_P10, GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); /* Set all outputs low */ MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P3, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P4, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P5, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P6, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P7, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P8, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P9, GPIO_PIN7 | GPIO_PIN6 | GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P10, GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1 | GPIO_PIN0); while(1){ MAP_PCM_gotoLPM3(); } }

    Regards,

    Ugljesa.

  • Hello Ugljesa

    I ran your code on my LaunchPad and measured the current consumption using Energy Trace.

    Your Code: 20.7 uA
    LPM3 Code in SDK: 1.5 uA

    Now there is a part to part variation when the datasheet numbers are made available, so a variance from the same is not unexpected. I would again suggest that you start with the KPM3 example in the SDK and use it as a template to customize your application.
  • Hello Amit,

    Now that I'am satisfied with my consumption in LPM3 I've found another problem. So when I configure SPI to your cc1200 chip and asigne dma channels to MISO and MOSI  I've consumption of 800uA but when I comment two lines that asigne channels for dma I've 60uA. Whats that about? .. I checked and there is no interrupt on dma. I thought it was awakeing my device but DMA shouldn't eaven work in LPM3. Also I tried to disable channels after asigneing them but it didn't work. Only when I don't asigne them

    Regards,

    Ugljesa.

  • Hello Ugljesa,

    I am not very clear about what you are trying to do in your last post. If there is a source code that you can attach to the forum post and then w.r.t to the source code explain the same, it would be more useful.
  • Hello,

    I could understand that you need code if I'am asking you to find me an syntax error, but I'am asking you why do I have higher current consumption when I call MAP_DMA_assignChannel() function. I don't have time to make another code and simulate to you my problem.

    I can't post you my code because I'am under NDA contract. I'am working for Neuron DOO, Novi Sad Serbia and you can check that we have bought from you (TI) few developer kits and 10 MSP432 processors and also don't now how many CC1200 and CC1190 chips and in future we are looking forward to buy thousands more when we have devices that have low power consumption because we are very satisfied with these products.

    So I'am asking again hoping that I won't have another day wasted waiting on answer "post me your code". There is big time difference.

    I'am having higher current consumption when I call MAP_DMA_assignChannel(). I'am assigning two channels : DMA_CH0_EUSCIB0TX0 and DMA_CH1_EUSCIB0RX0 and that EUSCIB0 base is used for SPI communication with CC1200 chip. When CC1200 is in SNIFF mode these two DMA channels are disabled and not used. When CC1200 sens packet, DMA channels are enabled and data from FIFO buffer is transfered with DMA to MSP432. Do you have any idea why this is happening. I tried to disable DMA module, to not use that DMA control table but only when I don't assign those two channels I have lower current consumption. Also I have one more DMA channel enabled and that channel is used for software triggered DMA transfer and I don't have any problems with that. There is something between DMA and EUSCI that is causing this I guess. Is it possible that DMA module is working in LPM3 when "combined" with EUSCI?

    Regards,

    Ugljesa Popovic.

  • Hello Ugljesa,

    Respectfully, from the first code you had posted to the point mentioning that the current consumption is higher than spec and me asking you to refer to the example which actually puts the device in LPM3 to meet up with specifications, you have not been co-operative. Finally when I do send the same code back to you, which i referred to, it seems that the code that you had used was not sufficient to get to the lowest power state correctly. Hence keeping it in mind, I asked you for the code.
    Now I do understand that you are under NDA to not release a code which is avery valid reason. But to help you, I cannot simply put assumptions on how the code is executing based on a singular description. I need the code to be able to reproduce the issue and then see why the device is behaving the way it is. To augment that I do not have every single device that customers may interface the MSP432 with, and most of my other customers do agree and seem to reasonably agree with it. That makes it more constructive to reach a quick resolution.
    My best guess would be that the peripheral is generating a never ending dma request to the DMA causing the DMA to always be in a state of continuous fetch. This may be the possible cause for the high current.
  • Hello Amit,

    I understand, I should have let you know that I can't post code but I expected answer like this one. It resolved my problem :D
    I've disabled SPI on corresponding base before going to LPM3 and it lowered my consumption.

    Thanks,

    Ugljesa.

**Attention** This is a public forum