Hardware Setup:
- MCU: Nordic nRF52840 (Custom Board & DK)
- UWB Chip: DW3120 (Dual Antenna / PDOA supported)
- Driver: DW3000 Driver in Nordic nRF Connect SDK (Zephyr)
- Comparison: Same code works perfectly on DW3110 custom board.
Problem Description:
I am trying to implement an SS-TWR Responder on a DW3120-based board. While the exact same code runs stable on a DW3110 board, the DW3120 setup is experiencing severe instability during reception.
Key Symptoms:
-
Persistent SPI CRC Error (SPICRCE):
- Bit 2 (
SPICRCE) inSYS_STATUSis almost always set. - We successfully read
Device ID: 0xDECA0314. - We attempted to disable SPI CRC using
dwt_enablespicrccheck(DWT_SPI_CRC_MODE_NO, NULL), and even used a brute-force loop to toggle it until the bit cleared.
- Bit 2 (
-
Sync Loss & Garbage Data:
- When the chip doesn’t reset, we see
RX Errorwith Preamble Detected and SFD Detected flags set, but Sync Loss (RXFSL) often occurring. - Forced reading of the RX buffer (
dwt_readrxdata) yields garbage/random bytes, not the expected poll message.
- When the chip doesn’t reset, we see
What We Have Tried:
-
SPI Interface:
- Lowered SPI frequency to 250kHz to rule out signal integrity issues.
- Verified
readfromspiimplementation (switched to single-buffer transaction to ensure CS timing). Device IDreads correctly.
-
Clock/Timing:
- Attempted XTAL Trim Sweeping (scanning trim values from
0x15to0x45). No improvement; Sync Loss persists. - Changed
PACsize from 8 to 32 to improve noise immunity.
- Attempted XTAL Trim Sweeping (scanning trim values from
Questions:
- Are there specific initialization steps or register settings mandatory for DW3120 (Dual Antenna) that differ from DW3110?
- Why would
SPICRCEpersist even after explicit disabling?