DWM3000 Crystal Oscillator Won't Start - ESP32 5.3 ESP-IDF

Hello,

question 1: does this model have an oscillator integrated?

this is what I did without success:

Hardware Setup:

  • MCU: ESP32 (ESP-IDF v5.3)
  • UWB Module: DWM3000 v1.4
  • Connection: SPI (2MHz, verified working)
  • Application: Mobile tag for UWB ranging
  • Code: GitHub Repository

Problem:

The 38.4 MHz crystal oscillator on the DWM3000 refuses to start, preventing all UWB functionality. SPI communication is working (confirmed by reading DEV_ID), but the crystal remains dead.

Diagnostic Output:

  • PMSC_CTRL0: 0x00000000 - Power management not initialized
  • AON: 0x344324E9 - Random data (not actual register values)
  • FS_CTRL: 0x344324AD - Random data (chip not operating)
I (452) DWM3000_DEEP: DEV_ID: 0xDECA0302   (SPI working, chip responding)
I (501) DWM3000_DEEP: === AGGRESSIVE CRYSTAL STARTUP ATTEMPT ===
I (504) DWM3000_DEEP: Method 1: Direct PMSC control...
I (520) DWM3000_DEEP: Method 2: AON control with retries...
I (596) DWM3000_DEEP: Method 3: LDO tune and PLL force...
I (617) DWM3000_DEEP: Method 4: Power cycle via AON...
E (727) DWM3000_DEEP: ❌ All crystal startup methods failed!

SYS_TIME readings: 0x00000003 -> 0x00000003 -> 0x00000003 (frozen)
SYS_STATE: 0x00000000 (all subsystems inactive)
PMSC_CTRL0: 0x00000000 (power management not initialized)

What I’ve Tried:

  1. Multiple initialization sequences:
  • Force crystal via AON register (0x2C)
  • Direct PMSC_CTRL0 control
  • Load LDO tune from OTP
  • Complete power cycling via AON
  1. Hardware checks:
  • Verified 3.3V power supply is stable
  • Added 100µF + 0.1µF bypass capacitors
  • Confirmed all SPI connections (MISO, MOSI, CLK, CS)
  • Proper hardware reset sequence with adequate delays
  1. Different approaches:
  • Soft reset vs hard reset
  • Various clock forcing methods
  • PLL enable with different configurations

Key Observations:

  • SPI communication is perfect - no errors, DEV_ID reads correctly
  • System time register stuck at 0x00000003 - crystal not oscillating
  • All registers remain at 0x00000000 after initialization attempts
  • No PLL lock achieved (depends on crystal)

Questions:

  1. Has anyone successfully recovered a DWM3000 with a non-starting crystal?
  2. Are there any undocumented register sequences to force crystal startup?
  3. Could this be related to the DWM3000 v1.4 hardware revision specifically?
  4. Is there a way to use an external clock source to bypass the internal crystal?

Additional Info:

  • Using proper reset sequence (push-pull GPIO, not open-drain)
  • Tried both Qorvo’s application notes and various community solutions
  • The module appears to be genuine (correct DEV_ID: 0xDECA0302)

Any insights would be greatly appreciated. Starting to suspect hardware defect, but wanted to check if anyone has encountered and solved this issue before declaring the module dead.

Environment: ESP-IDF v5.3, ESP32, SPI @ 2MHz

thank you in advance,
regards

So you connect a push-pull driver to the pin that is described as:

Reset pin. Active Low Output.
May be pulled low by external open drain driver to reset the DW3000.

You may be preventing the internal reset process from operating correctly.

Try disconnecting the reset pin from your circuit, that pin can be left no connect and the device will correctly perform a power up reset.

If that doesn’t work try a second board with the reset pin disconnected or connected correctly.

OK, I have overseen that and will try disconnecting it, thanks a lot,
regards