QN9090 Not enough information to implement and use the deep sleep and power down modes

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

QN9090 Not enough information to implement and use the deep sleep and power down modes

408 Views
icefire
Contributor I

The deep sleep functionality in the power management API (fsl_power.c) of the QN9090 is unfinished, but I require this part of the API to work for a project. I have been in contact with NXP about this issue previously on this same board (https://community.nxp.com/t5/MCUXpresso-IDE/QN9090-deep-sleep-support-in-API-commented-out/m-p/17705...). I've asked if this API can be finished to which I have gotten no clear answer, so I presume the answer is no. I have decided to implement this myself, but I'm running into a couple of issues because I am lacking experience and/or documentation.

It's important to mention that I'm an intern, so it's quite possible I'm not understanding something vital or making a mistake.

To measure the energy consumption of the system I am using the QN9090-DK006. I'm measuring the voltage drop over a resistor on the board as advised by the datasheet.

Issue 1, deep sleep: When I compare the measured voltage before the system is put into deep sleep and after the system has been put into into deep sleep and woken up, the voltage measured is 15%~ lower (8.4mV -> 6.5mV), meaning that putting the system into deep sleep causes a significant change of state which is not being entirely reverted by waking up. I presume the cause of this is that when the system gets placed into deep sleep through a ROM-function, a single or multiple power domain(s) and/or peripheral(s) get shut down and remain that way when the system wakes up. I have no insight into what the exact cause for this change is because the ROM-function is hidden: One sets the desired sleep mode and configurations by passing a struct containing register values pertaining to the desired sleep mode and configurations to a function at address 0x0300404d (this happens in fsl_power.c and rom_lowpower.h in the QN9090 library). The function to which this address links is hidden and I'm not able to find anything about it. It's unclear what changed within the QN9090 but it's important to know. I could try running tests involving different functionalities and see which ones fail to get an idea of what changed, but even then there might be changes that aren't immediately apparent so it's necessary that I know what goes on behind the scenes.

Issue 2, power down: Power down mode normally resets the system upon wakeup. I have to write an implementation wherein the system regains it's context and memory after the system wakes up from power down. Now knowing that sleep modes alter the state of the system after waking up, I assume that for this mode the state of the system also changes, and code has to be written to revert the state back to what it was before the system entered power down mode. This assumption might be faulty because power down involves additional code for resetting the system, which might also involve changing the state of the system into something desired, so I'd greatly appreciate if someone told me if this assumption is faulty or not.

0 Kudos
Reply
2 Replies

400 Views
Ricardo_Zamora
NXP TechSupport
NXP TechSupport

Hello,

 

Hope you are doing well. How are you measuring the current?

I would recommend checking this Application Note: QN9090/QN9030 Power Consumption Analysis.

There you can find information about how the power consumption should be measured with our based DK6 board.

It also includes measured values for some test, so you can compare them with your results.

Also, I would recommend you the section "Low power library for QN9090/K32W061 MCU based platform" of the Connectivity Framework Reference Manual.pdf. (Path: SDK_QN9090DK6.zip\docs\wireless\Common).

Hope this helps.

 

Best Regards,

Ricardo

0 Kudos
Reply

362 Views
icefire
Contributor I

I hope you are doing well too. I'm using the QN9090-DK006 carrier board (https://www.verical.com/datasheet/nxp-semiconductors-misc-semi-qn9090-dk006-6926572.pdf)

I'm not measuring the current, but I'm measuring the voltage across jumper j14 which is connected to a resistor. This way of measuring energy consumption is recommended as per the datasheet linked above. When the qn9090 enters a lower power mode, the voltage across the resistor lowers in turn. It's across this jumper that I am measuring a different energy consumption as described in my earlier post. I highly doubt the problems I have have anything to do with the hardware configuration as everything I have described in my earlier post have to do with the software.

I have looked into Connectivity Framework Reference Manual.pdf and what is described in "Low power library for QN9090/K32W061 MCU based platform". The functions of this library are built on top of the power management API described in my earlier post (fsl_power.c). fsl_power.c does not contain support for deep sleep, so this library cant be used or be of help for the implementation of this mode.

As for power down, I think I was mistaken in assuming I'll have the same problems as with deep sleep because with power down a reset is applied after wakeup which I think is likely will revert the consumption to what it was before.

0 Kudos
Reply