dw1000 Reception error (cbRxErr callback) is called and I cannot figure out what is causing it. After debugging, I found out the dwt_cb_data_t->status values are either “04 80 01 03”, “20 80 0b 03” or “20 80 0f 03” when the rx err callback is called. I cannot figure out what this status values mean. Where can I find descriptions about this status thing?
Also, it is strange that some evb1000’s work fine not calling rx err callbacks (rx ok callbacks are called) while some other evb1000s call rx err callbacks like I said above. Has anyone else faced the same problem?
The values in the status register are described in the DW1000 user manual. See section 7.2.17 - Register file: 0x0F – System Event Status Register.
The penultimate byte of the value (01, 0b and 0f in your 3 values above) contains various receive flags.
01 is preamble detected, 0b is preamble, SDF and PHY header detected, 0f is all of those plus leading edge detect done.
For the first byte in the value 20 indicates automatic frame filtering rejected a packet and 04 indicates a receive SFD timeout.
So a value of “04 nn 01 nn” makes sense. It detected a preamble but then failed to detect the SFD.
And values of “20 nn 0b nn” and “20 nn 0f nn” indicate that the packet was received but then rejected due to the rejection filter settings.
To “Dwacky” : how to get from your findings to what Andy is describing is described in the API guide. See section 5.46 dwt_setcallbacks on page 49 . (file attached)
DW1000_Software_API_Guide_rev2p7.pdf (1.5 MB)
I looked into the register and frame filter parts and solved the problem easily. Thanks very much for the help!