DWM1001C only transmit but cannot receive, LDEERR (0x2840302) when using DWT\_LOADUCODE

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 from dwt_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!


no OTP ant delay, just use follow:
#define TX_ANT_DLY 16463
#define RX_ANT_DLY 16463

my log


and my config:
static dwt_config_t config = {
2, /* Channel number. /
DWT_PRF_64M, /
Pulse repetition frequency. /
DWT_PLEN_1024, /
Preamble length. /
DWT_PAC32, /
Preamble acquisition chunk size. Used in RX only. /
10, /
TX preamble code. Used in TX only. /
10, /
RX preamble code. Used in RX only. /
0, /
Use non-standard SFD (Boolean) /
DWT_BR_850K, /
Data rate. /
DWT_PHRMODE_STD, /
PHY header mode. /
(1025 + 64 - 32) /
SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
};
I am going crazy! I just supply power to DWM1001C via a REGULATED DC POWER SUPPLY

The link below provides a TWR example for DWM1001C. Please verify if the example works properly on your board. If it works, then you can compare it with your application code.