Why the value of SYS_STATUS_ID is 0x00C00001

Who encounter the situation where the value of system event status register(address is 0x0F, SYS_STATUS_ID) is 0x00C00001.
I rewrote the UWB range code it can work normally before rewriting. The rewrote code can range too, but it does not range no longer after about 10 successful ranging. The code can go into the function of instance_rxcallback, but the value of system event status register is 0x00C00001. It will be back to range again when i reinitialize the DW1000.
I try to call the function of dwt_forcetrxoff() and dwt_rxreset(), but it does not seem to be working.
The value of 0x00C00001 corresponds to the bit0(IRQS) \ bit22(GPIOIRQ) and bit23(SLP2INIT), i try to clear the GPIO_ICLR register using the cmd dwt_write16bitoffsetreg(GPIO_CTRL_ID, 0, 0x1F), it is no useful too.

Who can tell me how to solve this problem?

Thank you in advance!

Hi @rainDecaWave
First of all, can you please share your source code ? It will help me to analyze your issue better.

For value 0x00C00001 in SYS_STATUS_ID, I think that you need to clear SLP2INIT bit instead of clearing GPIO_ICLR register. Besides, bit SLP2INIT is set when dwm1000 wakes up from sleep. So, please make sure to do correct wakeup steps in order to get receiver back to work.

Note that SLP2INIT is set if LDE is not configured to automatically download on wakeup. So, it may cause issue in receiver. You can check it detail in section in DWM1001 User Manual.


Thank you for your reply!

It is already working normally. Because the underlying driver library of MCU is incorrect during code migration, it mean the migrated code is base on model MCU A, but the dirver is for B MCU B.

I made a low-level mistake.