DWM1000 Data Rate in practice

I’ve been doing some tests on the data rate of the DWM1000, I’ve been getting results of a maximum data rate of 0.14Mb/s (which seems low) under the following conditions:

Channel number : 4 Pulse repetition frequency : DWT_PRF_64M Preamble length : DWT_PLEN_64 Preamble acquisition chunk size : DWT_PAC16 TX preamble code : 17 RX preamble code : 17 non-standard SFD : true Data rate : DWT_BR_6M8 PHY header mode : DWT_PHRMODE_EXT SFD timeout : (65 + 8 - 8)
Is this data rate what I should expect with these parameters or should it be higher?

I am not sure what kind of test you are performing. Can you please describe the test?
Note you are using PAC16 for 64 length preamble, in the UM the suggested PAC is 8.
The SFD TO should be preamble length + 1 + SFD - PAC.

The test is sending frames of 1024 bytes as fast as possible using polled mode. A timer is started on the first received message until it has received 10000 bytes, then the time it took to receive those 10000 bytes is measured and the data rate is calculated from that.

I have 2 UWB1000 modules laying close to each other on my desk, increasing the distance doesn’t seem to effect the data rate until connection is lost.
I’m using the STM32F412ZG microcontroller.

I hope I’ve provided enough information.

Well … this is how I would do it… (Note using the fastest possible SPI rate of 20 MHz… and making sure that the inter byte times are as short as possible so that the actual rate is as close to 20 MHz as possible). Use interrupts for the minimal delay in event processing. Use fast host MCU.

Write 510 bytes (the IC appends 2 for CRC) into TX buffer offset 0, then start transmission. Then when TX is done, while waiting for ACK would write next 510 bytes into offset 512. If the ACK is received transmit next chunk from offset 512, else re-transmit from 0. Etc.

Receiver sensitivity is published in the DS or UM… so the distance will affect the link. But as long as you get CRC good, the data is correct.

Please review the 3.5 High Speed Transmission chapter in UM which gives example of how the fastest data transfer can be employed. However, note, there is a conflict which occurs when the DW1000 is reading from TX buffer when frame is being prepared to be transmitted and if the host MCU tries to write to another part of the buffer at the same time, the buffer corruption may occur as the internal buffer pointer is reset. Thus host should wait to get TXFRB event and then write the next chunk, as after TXFRB is set the DW1000 has finished reading from TX buffer.

Thanks for your reply, I will try this!