[Kw36] When exiting low power mode, RAM changes abnormally Low probability

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[Kw36] When exiting low power mode, RAM changes abnormally Low probability

664 Views
UAES_ZhangBin
Contributor I

We use low power mode 1,and find

static void PWR_HandleDeepSleepMode_1(void)

{

........

if(gpfPWR_LowPowerEnterCb != NULL)
{
    gpfPWR_LowPowerEnterCb();
}

    BOARD_BLPEtoBLPI();
    rfOscEn = RSIM_CONTROL_READ_FIELD(RSIM_CONTROL_RF_OSC_EN);
   RSIM->CONTROL = RSIM_CONTROL_MODIFY_FIELD(RSIM_CONTROL_RF_OSC_EN, 0);
   PWRLib_MCU_Enter_LLS3();
   RSIM->CONTROL = RSIM_CONTROL_MODIFY_FIELD(RSIM_CONTROL_RF_OSC_EN, rfOscEn);

  // RAM Variable keep , NO change

  BOARD_BLPItoBLPE();

  // RAM Variable happen change . It's  unable to explain this phenomenon

    if(gpfPWR_LowPowerExitCb != NULL)
    {
        gpfPWR_LowPowerExitCb();
    }

........

}

 

0 Kudos
3 Replies

638 Views
nxf56274
NXP Employee
NXP Employee

Hi,

I do the test in the application, not in the function PWR_HandleDeepSleepMode_1(void). This function will go to sleep. then recover from the sleep. May be in some time, we can't access the variable in this function. I add code in function BleApp_AdvertisingCallback.

if(A == 3)
{
AppPrintString("yes");
}

Here is the result.

 

At first , print yes. Then mcu go to sleep. I press button to wake. Print yes again. It means the variable doesn't change.

2.PNG

Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

- We are following threads for 7 days after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos

644 Views
UAES_ZhangBin
Contributor I

This failure does not necessarily occur, the probability is extremely low.

uint8 A = 3;   //global variable

void A_FaultTest(void)

{

    if(A != 3)

    {

        while(1){};

    }

}

 

A_FaultTest ();

BOARD_BLPItoBLPE();

A_FaultTest ();// when  fault come, enter while (1).  Varible A change cannot be detected by data write breakpoint.

 

 

 

0 Kudos

648 Views
nxf56274
NXP Employee
NXP Employee

Hi,

How did you test the variable?  Please describe it in detail. I made a simple test. Ram didn't change.

Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

- We are following threads for 7 days after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos