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.

CC1352R: standby entry problem

Part Number: CC1352R


Hi.

I have a problem with the low consumption mode on my сс1352. I want to put 1352 into standby mode for this I use the following construction:

Clock_scheduleNextTick(100,ticks);//set time to slep
 Power_registerNotify(&PWR_noti, PowerCC26XX_AWAKE_STANDBY, (Power_NotifyFxn) PwrMgmt_ExitSleepNotification, NULL);

Power_releaseConstraint(PowerCC26XX_DISALLOW_STANDBY);
PowerCC26XX_standbyPolicy();

In PowerCC26XX_standbyPolicy(); when debugging I tntry :

ticks = Clock_getTicksUntilInterrupt();

            /* convert ticks to usec */
            time = ticks * Clock_tickPeriod;

            /* check if can go to STANDBY */
            if (time > Power_getTransitionLatency(PowerCC26XX_STANDBY,
                Power_TOTAL)) {

/* schedule the wakeup event */
                ticks -= PowerCC26X2_WAKEDELAYSTANDBY / Clock_tickPeriod;
                Clock_setTimeout(Clock_handle((Clock_Struct *)&PowerCC26X2_module.clockObj), ticks);
                Clock_start(Clock_handle((Clock_Struct *)&PowerCC26X2_module.clockObj));
here I have the first question----- why the time that I set through Clock_scheduleNextTick was not passed here Clock_getTicksUntilInterrupt (); .       

Further the code executes

/* go to standby mode */
                Power_sleep(PowerCC26XX_STANDBY);

This function call :

SysCtrlStandby(retainCache,
                           VIMS_ON_CPU_ON_MODE,
                           SYSCTRL_PREFERRED_RECHARGE_MODE);

which essentially transfers to the desired mode,however upon returning to  Power_sleep , it turns on power again:

/* 4. If didn't retain VIMS in standby, re-enable retention now */
            if (retainCache == false) {

                /* 5.1 If previously in a cache mode, restore the mode now */
                if (modeVIMS == VIMS_MODE_ENABLED) {
                    VIMSModeSet(VIMS_BASE, modeVIMS);
                }

                /* 5.2 Re-enable retention */
                PRCMCacheRetentionEnable();
            }

            /* 6. Start re-powering power domains */
            PRCMPowerDomainOn(poweredDomains);
Here I have a second question --- how to make ss1352 fall asleep at the right time for me?

 

  • Why SysCtrlStandby does not stop the processor and continues to execute code further.

  • Hi Konstantis,

    I would assume it does. Note that the fact that this function returns at all means that something in the system caused it to wake up (most likely a interrupt of some sort). 

    I do not understand what you are trying to do here, this is not the way the device should be put into standby. In fact, you should not try to force a standby at all. The system will go into standby at anytime when it possible to do so. With possible, I mean that there is no application constraints and activity that would prevent it from going into standby.

    This means that there is no point for you to try to force it into standby. Either it goes into standby because it can, or your software says it should not (for example, the UART driver is currently receiving/sending). 

    Basically, trust the power driver to put your device into standby. Many hours of testing has gone into this, very vital part, of the device software. Almost all TI provided software depend on it and trying to bypass it will most likely just mean you break something else.

  • In addition: If you have the the debugger attached, the JTAG power domain will be on and hence the chip will not be able to go fully down.