DWM1000 delayed transmit issue

Hello after 2 weeks trying solving the problem myself ,I hope someone will have an answer

in the folowing piece of code I have various issue



dwt_writetxdata(sizeof(tx_msg), tx_msg, 0);
dwt_writetxfctrl(sizeof(tx_msg), 0, 1);

while (!(status_reg =dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))
{ };

if value is different than 0, the the code is blocking

if I use ret=dwt_starttx(DWT_START_TX_DELAYED);
ret allway return an error

I have used this code with various st cpus (stm32lxx ,stm32Fxx,stm32Hxx,and ti Msp32 cpu I still have the same issue

I’ve verifyed that SPI is working properly, at least I suppose ,I have use various DWM1000 module, and I am still facing the same problem

any ideas ?


Hi ,

You quote “I’ve verified that SPI is working properly, at least I suppose”, how would you have verified this?

Have you encountered any error indications, like TXPUTE or warnings like Half Period Delay Warning (HPDWARN)

Anyways, I recommend you have a look at the IC user manual and section 3.3 on Delayed Transmission in particular.

For further trouble shooting please consult APS022 our trouble shooting application note (attached).

LeoAPS022_Debugging_DW1000_based_products_systems.pdf (999.6 KB)

Hi Leo
When I say “at least I suppose” ,is because ,examples 1a 1b work properly
example 03a 03b is also working properly when I write and read in register 0x21
all results are correct,I also read APS022 hundred times,I have even scope the miso and mosi signals, and yes I do encountered the TXPUTE, and the HPDWARN sometimes,but the problem arise only when I use transmit with delay, and block when I put a value different than zero in the dwt_setrxtimeout function,I use all the example without any modification in the code above ,but for sure example 5a 5b doen’t work, cause of the famous transmit with delay .

Thanks for you prompt replay

after weeks of investigation on what is going wrong with the DWM1000 or DW1000
its sounds the problem come from the way things are done.
communication with the chipset is done through SPI,but in he API there are two many commands using the SPI,and that slowdown the process,and because timing is very tight ,when we use process involving delayed instructions,there are no many time left,unless we use big delay too leave the system enough time to cope with that.
in fact depending on each system api ,if the execution of SPI take too many cpu cycles,you are in big trouble,no matter are fast is your spi bus speed,your are stuck with the cpu execution time,because generally that involve too many instructions to execute the SPI writing or reading instruction

1 Like