stm32-dw3000-spi

Diagnose DW3000 SPI communication failures on STM32 HAL.

1|Updated Apr 14, 2026
One-click install
npx skills add https://github.com/51hhh/BU03 --skill stm32-dw3000-spi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: stm32-dw3000-spi
Source: https://github.com/51hhh/BU03/tree/main/.github/skills/stm32-dw3000-spi
Command: npx skills add https://github.com/51hhh/BU03 --skill stm32-dw3000-spi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps diagnose and fix DW3000 SPI communication failures on STM32, especially cases where device ID reads fail, chip select timing is wrong, or the radio does not respond during bring-up.

Core Features & Use Cases

  • SPI Failure Diagnosis: Pinpoints common causes of 0x00000000, 0xFFFFFFFF, and random DW3000 reads.
  • STM32 HAL Guidance: Explains how to use full-duplex SPI transfers correctly with proper chip select handling.
  • Timing and Concurrency Checks: Covers mutex protection, interrupt contention, and SPI speed limits during initialization and normal operation.
  • Use Case: A firmware engineer can use this Skill to troubleshoot a board that boots but cannot read DEV_ID from the DW3000 and quickly isolate wiring, mode, timing, or driver issues.

Quick Start

Use this skill to analyze a DW3000 SPI read failure on STM32 and identify the most likely cause from the observed DEV_ID value and transfer behavior.

Frequently Asked Questions about stm32-dw3000-spi

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does DW3000 read 0x00000000 or 0xFFFFFFFF during STM32 SPI bring-up?

Failed DW3000 SPI reads on STM32 typically indicate incorrect SPI mode 0 configuration, chip-select timing violations, or missing mutex protection around SPI access. Diagnosing DEV_ID read failures requires verifying full-duplex transfers and staged clock rates.

How do I configure STM32 HAL SPI for DW3000 device ID reads?

To configure STM32 HAL SPI for DW3000 reads, use single-call full-duplex transfers, ensure strict chip-select hold timing, and apply SPI mode 0. Staged SPI clock rates during initialization prevent communication errors when reading DEV_ID.

What causes random data when reading the DW3000 DEV_ID over SPI?

Random DW3000 DEV_ID reads often stem from interrupt contention, incorrect SPI mode, or unstable chip-select timing. Analyzing EAMRW-related transfer issues and applying mutex protection around SPI access isolates the driver or wiring fault.

Do I need mutex protection for DW3000 SPI transfers on STM32?

Yes, mutex protection around SPI access is required for DW3000 transfers on STM32. It prevents interrupt contention and ensures strict chip-select hold timing during single-call full-duplex transfers, avoiding corrupted EAMRW data.

What SPI clock rate should I use for DW3000 initialization on STM32?

DW3000 initialization on STM32 requires staged SPI clock rates, starting slow before increasing speed. This ensures reliable chip-select timing and full-duplex transfer stability during the critical DEV_ID read phase of bring-up.

Can I use standard STM32 HAL SPI functions for DW3000 EAMRW transfers?

Standard STM32 HAL SPI functions work for DW3000 EAMRW transfers if configured for single-call full-duplex mode with strict chip-select hold timing. Proper SPI mode 0 and mutex protection must be maintained to prevent data corruption.