- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
We are testing a CYW43439 to integrate it in our next product. I am using WHD with our RTOS to perform periodic scans of nearby access points. This is working almost as expected, but there is an unexpected behaviour that I wanted to check with you.
My environment:
- MCU is a STM32L496 (NUCLEO-L496ZG)
- CYW43439 module is a development kit based on Laird LWB+, but we are planning to use a Murata 1YN in our product
- gSPI interface is used (SDIO_D2 is tied to GND)
- Using the latest version of WHD (2.5.0.15307)
- Firmware / NVRAM / CLM blob from the WHD repository
- We wrote the glue layer to work with our RTOS (Zephyr)
- The test firmware performs a scan every 30 seconds using whd_wifi_scan()
In brief (see details below):
- If I am using the SPI IRQ line as the OOB interrupt, the module generates an IRQ every 10ms even when scan is off. This prevents the module from reaching a low-power state. The average current is around 12mA in that case.
- If I am using the HOST_WAKE line as the OOB interrupt, it seems to work as expected and the average current is 430uA between scans.
My questions:
- Am I doing something wrong with the SPI IRQ that would explain this behaviour ?
- I had to change the NVRAM config in order to enable the HOST_WAKE interrupt. I would like to confirm that the changes (see below) are correct for both Laird and Murata CYW43439 modules since these parameters are not documented.
- If we use the HOST_WAKE line instead of the SPI interrupt line, would it be safe to not route the SPI IRQ on the PCB to save some real estate ? Or would the SPI IRQ be of any use in the future ?
DETAILS
After writing the glue layer, I resorted to use the SPI interrupt line for the OOB interrupt, because whd_wifi_on() was failing if I tried to use the HOST_WAKE line instead. The logic analyser confirmed no activity on HOST_WAKE.
But after doing a scan, the power consumption was too high. I noticed that whd_kso_enable() was constantly called, which was due to the SPI IRQ line firing every 10ms as it can be seen in the captures:
For each interrupt, WHD performs whd_kso_enable(WHD_TRUE) and reads the SPI interrupt register. Strangely, the interrupt register reads 0x0000 (confirmed by logging + logic analyser, see below). As a result, nothing is done and the module is put back to sleep with whd_kso_enable(WHD_FALSE). This repeats every 10ms forever.
By searching on the forum, I found (HERE ) that the HOST_WAKE interrupt can be enabled by modifying the NVRAM as follow:
muxenab=0x10
sd_gpout=0
sd_gpval=1
sd_oobonly=1
By applying these changes to the Laird LWB+ NVRAM, I was able to get a working HOST_WAKE (but changing only muxenab does not seem enough as I already tried this earlier during testing). I was not able to find any documentation on the sd_xxx parameters.
To conclude, a comparison image of the power consumption around a scan for the 2 configurations
- green: SPI IRQ used as OOB
- red: NVRAM change + HOST_WAKE used as OOB
We can clearly see the ripple at 100Hz on the green line due to the SPI IRQ which keeps firing after the scan.
Best regards,
Florian
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I raised the query to the internal team and the internal team confirms the setting of the NVRAM to set the HOST_WAKE GPIO pin as OOB interrupt. The settings are not documented currently in any document. I'll take this as a feedback to provide proper documentation on this.
The internal team said that it's required to use the HOST_WAKE GPIO pin as an OOB interrupt to enter the low power mode. Otherwise, it won't enter the low power mode, not sure why SPI interrupt is getting triggered every 10ms even though there is no activity.
You can go ahead and remove the SPI IRQ pin if it's not used at all in your project, but this totally depends on your application. You can analyze and see if the pin finds a use in your application or in future additions, then you can keep it.
Thanks
Aditi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'll check with the internal team and will revert back.
Thanks
Aditi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I raised the query to the internal team and the internal team confirms the setting of the NVRAM to set the HOST_WAKE GPIO pin as OOB interrupt. The settings are not documented currently in any document. I'll take this as a feedback to provide proper documentation on this.
The internal team said that it's required to use the HOST_WAKE GPIO pin as an OOB interrupt to enter the low power mode. Otherwise, it won't enter the low power mode, not sure why SPI interrupt is getting triggered every 10ms even though there is no activity.
You can go ahead and remove the SPI IRQ pin if it's not used at all in your project, but this totally depends on your application. You can analyze and see if the pin finds a use in your application or in future additions, then you can keep it.
Thanks
Aditi