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 initializedAON: 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:
- Multiple initialization sequences:
- Force crystal via AON register (0x2C)
- Direct PMSC_CTRL0 control
- Load LDO tune from OTP
- Complete power cycling via AON
- 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
- 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:
- Has anyone successfully recovered a DWM3000 with a non-starting crystal?
- Are there any undocumented register sequences to force crystal startup?
- Could this be related to the DWM3000 v1.4 hardware revision specifically?
- 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