Set Recharge values before entering Power Down.
This function shall be called just before entering Power Down. It calculates an optimal and safe recharge setting of the adaptive recharge controller. The results of previous setting are also taken into account.
96 int32_t deltaVddrSleepTrim ;
97 int32_t vddrTrimSleep ;
98 int32_t vddrTrimActve ;
99 int32_t diffVddrActiveSleep ;
100 uint32_t ccfg_ModeConfReg ;
102 uint32_t prcmRamRetention ;
111 uint32_t newRechargePeriod ;
114 const uint32_t * pLookupTable ;
133 deltaVddrSleepTrim = ((((int32_t) ccfg_ModeConfReg )
138 int32_t tcDelta = ( 62 - curTemp ) >> 3;
139 if ( tcDelta > 8 ) tcDelta = 8;
140 if ( tcDelta > deltaVddrSleepTrim ) deltaVddrSleepTrim = tcDelta;
152 vddrTrimSleep += deltaVddrSleepTrim;
153 if ( vddrTrimSleep > 21 ) vddrTrimSleep = 21;
154 if ( vddrTrimSleep < -10 ) vddrTrimSleep = -10;
173 shiftedTemp = curTemp - 15;
186 if ( shiftedTemp >= 0 ) {
188 shiftedTemp += ( shiftedTemp << 4 );
191 ti = ( shiftedTemp >> 8 );
201 cd = pLookupTable[ dii + 1 ] - pLookupTable[ dii ];
208 di += (( cd >> 8 ) & 0xFF );
211 di += (( cd >> 16 ) & 0xFF );
214 di += (( cd >> 24 ) & 0xFF );
222 cl = pLookupTable[ ti ];
228 if ( curState & PD_STATE_XOSC_LPM ) {
229 load += (( cl >> 8 ) & 0xFF );
231 if ( curState & PD_STATE_RFMEM_RET ) {
232 load += (( cl >> 16 ) & 0xFF );
235 load += (( cl >> 24 ) & 0xFF );
239 load += ((( di * ( shiftedTemp - ( ti << 8 ))) + 128 ) >> 8 );
246 diffVddrActiveSleep = ( vddrTrimActve - vddrTrimSleep );
247 if ( diffVddrActiveSleep < 1 ) diffVddrActiveSleep = 1;
248 k = ( diffVddrActiveSleep * 52 );
254 newRechargePeriod = ( vddrCap * k ) / load;
255 if ( newRechargePeriod > 0xFFFF ) {
256 newRechargePeriod = 0xFFFF;
261 if ( curTemp > 127 ) curTemp = 127;
262 if ( curTemp < -128 ) curTemp = -128;
278 while ( perM > 511 ) {
282 perM = ( perM - 15 ) >> 4;
#define XOSC_IN_HIGH_POWER_MODE
Definition: sys_ctrl.h:134
static int32_t SetupSignExtendVddrTrimValue(uint32_t ui32VddrTrimVal)
Sign extend the VDDR_TRIM setting (special format ranging from -10 to +21)
Definition: setup_rom.h:316
int8_t pdTemp
Definition: sys_ctrl.c:80
int32_t AONBatMonTemperatureGetDegC(void)
Get the current temperature measurement as a signed value in Deg Celsius.
Definition: aon_batmon.c:60
uint8_t pdState
Definition: sys_ctrl.c:79
#define PD_STATE_XOSC_LPM
Definition: sys_ctrl.c:73
#define PD_STATE_CACHE_RET
Definition: sys_ctrl.c:71
#define PD_STATE_EXT_REG_MODE
Definition: sys_ctrl.c:74
static PowerQualGlobals_t powerQualGlobals
Definition: sys_ctrl.c:83
#define PD_STATE_RFMEM_RET
Definition: sys_ctrl.c:72
uint32_t pdTime
Definition: sys_ctrl.c:77
uint16_t pdRechargePeriod
Definition: sys_ctrl.c:78