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.

LP-MSPM0L1306: about power saving for I2C controller in LP-MSPM0L1306

Part Number: LP-MSPM0L1306

Hi Team,

Here's an issue from the customer may need your help:

I want to know if it is possible for the following case.

1. set I2C be controller mode with 400k and do communication with a target device.

2. after finishing, do

DL_I2C_disablePower(I2C_INST)

DL_I2C_disableController(I2C_INST);

DL_SYSCTL_setPowerPolicySTANDBY0();

__WFI(); //wak up from GPIO

DL_SYSCTL_setPowerPolicyRUN0SLEEP0();

DL_I2C_ensablePower(I2C_INST)

DL_I2C_enableController(I2C_INST);

It seems that it doesn't work correctly. How can I reinit after wakeup?

--

Thanks & Regards

  • Hi Yale,

    Customer only needs to set the desired power policy once, before executing __WFI();

    For example, to use the STANDBY0 mode the customer will call DL_SYSCTL_setPowerPolicySTANDBY0();  Then to actually enter this mode, the __WFI() macro is called.  Provided there is an enable interrupt in the system, like a I2C_STARTBIT interrupt, the CPU remains in STANDBY0 until the timer interrupt occurs.  When the interrupt occurs the CPU enters RUN mode, jumps to the interrupt service routine, then returns when finished. At this point you have 2 options; one is to go back to STANDBY0 mode or continue executing the code that comes after the __WFI().  In this case you want to execute the code that comes after, so you don't need to do anything by default.

    After the __WFI() in your example, you don't change the power policy, so just remove line #9.