Can you please check on the ENA pin as well?
In order to bring the PMIC to sleep, keep no ENA and WAK = 0 and send SPI: Go to Sleep
We are testing on TC399 evalboard, as seen from the below schematic ENA is connected to Pushbutton,
Is it Normally open/normally closed type push button. if it is NC type ENA=1 else ENA=0, and we have tried to check the state with
1)Pushbutton closed and SPI: Go to Sleep
2) Pushbutton opened and SPI: Go to Sleep
in both case device is in wake state only.
Q. our understanding is that TLF device is updating wksf register only if it enters WAKE state from SLEEP state, is it correct?
is there any other way to get the status of ENA or WAK pin? if yes can you let us know the possibilities
If you are sure about ENA and WAK, the other suspect is the QUC current. If it is above the threshold, the state machine cannot remain in the sleep state. It will generate an interrupt and move to the wake state.
Can you please check if Interrupt is generated while reaching to wake state?
Please check the WKSF register for the reason for the wake-up.
If it is due to the QUC current monitoring, you should see WKSF_CMON is set to 1
Please make sure to check the status of WKSF in the normal state before sending the SPI command Go to Sleep. By default, it should be 00.
Coming to your question,
WKSF is updated normally while transitioning to the wake state. But some bits can be set in standby or failsafe states. For example, WKSF_ENA, WKSF_WAK, WKSF_WKTIM.
We are doing the transition as below, as you can see after calling SPI: Go to Sleep we are checking the DEVSTAT register, WKSF register, IF register.
We were checking the state in DEVSTATE and is it coming as WAKE state but in WKSF register everything is disabled, in DEVCTRL register COMEN bit is showing the transition to LOW power detection enabled so that IF flag is setting.
How can we overcome this issue?
Normally the WKSF is reset only in failsafe, standby, and POR. Not sure why it is not setting any register to high when you reach to wake state.
Your SW is overwriting it?
One more observation,
IF_SYS is set to 1
In this case, I checked SYSSF.
It shows SYSSF_TRFAIL is set to 1. One of the reasons is QUC current is more than the threshold.
Before transitioning to sleep, you need to make sure the QUC current is below the threshold.
Are you checking that?
Your SW is overwriting it?
No we are not overwriting WKSF register, as you can see we are reading at wksf address(0x1C) with dummy data(0x00) as WKSF register is "rw1c" type, and still the status of WKSF is 0 and DEVSTAT->STATE is Wake_mode.
2) How to monitor QUC current or put MCU(TC399 as in Evaluation Board) to low power state.
For 2) TC399 supports low power modes, you can refer to section 11.2.3 in AURIX™ TC3xx hardware user manual part1 for details.
Thanks for the reply, i have one doubt. after I put Micro(TC399) on sleep/Standby will i able to communicate with TLF35584 with SPI? As the aim here is to reduce the micro current consumption and then requesting SPI-Go to Sleep cmd for TLF35584
In sleep mode, CPU is not active, QSPI block can be still enabled. But I guess driver will still need the CPU's involvement for SPI communication. You may also refer to AP32465 for typical use-cases.