DWM1001 can't read position through SPI in low power mode

Hello. I am testing the DWM1001 module in low power mode (responsive mode off in the app) and I only receive 1 position value through SPI. In the decawave app, I can see how the position of the tag is updated, but through SPI I’m not getting new values. I am using the ready pin of the module to know when a knew value is ready.

My code to read through SPI works with responsive mode on, but in low power mode it won’t receive new values even though the ready pin goes high. I check the ready pin, read the data and then set the dwm back to sleep using the the sleep command from the API. The ready pin is triggering correctly with the set update rate. I also added a 1ms delay after setting the SPI CS pin low before reading the data, since I read that the module wakes up after the CS pin is low for at least 500us, but it still won’t work.

Is there something that I need to do that I’m missing?

Checked with the developers and here is their response -

When the tag is in Low power mode and BLE is active (20 sec after power on or BLE wake up button is pressed) then the writing into dataflash (after configuration change, IRQ settings, label change) takes a long time ( up to 3sec). During this time the BLE stack is holding the MCU and there is nothing we can do here. So the final solution is to add note into API document that writing into dataflash when Tag is in low power mode and BLE is active can take up to 3 sec.

Thank you for the response Kenneth, but my problem wasn’t writing to data flash memory, but reading a new position value using the 0x02 command.

I have solved this issue by setting the CS line low for 500us then setting the line high. After doing this I wait 100us then set the line once again low to start the TLV transaction.