Hello everyone
I’m currently migrating a TWR (two-way ranging) application that works perfectly on an STM32 + DW1000 setup to a new hardware platform using a DWM1001C module.
However, I’m encountering a frustrating issue: the device can transmit, but fails to receive, and the receiver reports an error status of 0x2840302
.
From the status register, this includes LDEERR, but I cannot figure out how to resolve it despite many attempts.
Here’s the confusing part:
- When I initialize using
dwt_initialise(DWT_LOADUCODE)
, I get LDEERR during receive, and the TWR process breaks. - When I initialize using
dwt_initialise(DWT_LOADNONE)
, everything works fine — I can transmit, receive, and complete the TWR exchange — but the receive timestamp fromdwt_readrxtimestamp()
is always zero. - I understand that the LDE microcode is required for proper timestamping, but loading it seems to break the receive path.
I’ve already tried:
- Matching configuration parameters (channel, PRF, preamble, etc.) exactly between TX and RX
- Using different
sfdTO
values - Verifying antenna delay settings from OTP
- Using slower SPI during init
- Resetting and reinitializing DW1000 as per documentation
But none of these helped.
I’m attaching my initialization code and log output below. I would really appreciate any insight — this issue has been driving me crazy, anyone can help me?
Thank you in advance!