Dw1000 extended data issue

i am trying to utilise the extended data frame by sending 1000 bytes from one dw1000 to another one, but i only get 121 bytes in receiving side, my configuration in both ends are

static dwt_config_t config = {
5, /* Channel number. /
DWT_PRF_64M, /
Pulse repetition frequency. /
DWT_PLEN_1024, /
Preamble length. Used in TX only. /
DWT_PAC32, /
Preamble acquisition chunk size. Used in RX only. /
10, /
TX preamble code. Used in TX only. /
10, /
RX preamble code. Used in RX only. /
0, /
0 to use standard SFD, 1 to use non-standard SFD. /
DWT_BR_6M8, /
Data rate. /
PHY header mode. /
(1025 + 64 - 32) /
SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */

but it doesnt sent/receive the complete packet.
kindly help me to sort this out.


The information does say that much , other then your RF config. ie. nothing about your extended frame configuration.

See section 3.4 Extended Length Data Frames in the User manual for what is involved for sending 1023 bytes of data.


Hi DecaLeo,
Thank you for your response…

the below buffer is the thing wich we are going to send…

uint8_t one_kb[2000] = {“Here the message which the decawave going to send.
Here the message which the decawave going to send.
Here the message which the decawave going to send.
Here the message which the decawave going to send.”};

the below code is for configuring the DW1000

/* Reset DW1000 */

/* Set SPI clock to 2MHz */

/* Init the DW1000 */
if (dwt_initialise(DWT_LOADUCODE) == DWT_ERROR)
//Init of DW1000 Failed
while (1) {};

// Set SPI to 8MHz clock

/* Configure DW1000. */

then finallly the i send the message here by using the below commands…

dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);
dwt_writetxdata(strlen(one_kb), one_kb, 0); /* Zero offset in TX buffer. /
dwt_writetxfctrl(strlen(one_kb), 0, 1); /
Zero offset in TX buffer, ranging. /
Start transmission, indicating that a response is expected so that reception is enabled automatically after the frame is sent and the delay

  • set by dwt_setrxaftertxdelay() has elapsed. */

but i got only 124 bytes in my receiving side…

in the receving side the configuration are the same, i enable the receive option by entering the below function.

/* Activate reception immediately. */

/* Poll for reception of a frame or error/timeout. See NOTE 5 below. */
while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_TO | SYS_STATUS_ALL_RX_ERR)))

if (status_reg & SYS_STATUS_RXFCG)
uint32 frame_len;

/* Clear good RX frame event in the DW1000 status register. */
dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);

/* A frame has been received, read it into the local buffer. */
frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;

if (frame_len <= RX_BUF_LEN)
  dwt_readrxdata(Receive_Buf, frame_len, 0);

is that clear to you, if not i ll send the programming file for your reference…

Thanks and regards

Hi ,
No point sending us your code. We’re not in a position to review programs designed by customers.
Instead we have made a huge effort to have required information in teh user manual, datat sheet and various application notes.
So, Please read the user manual on extended frame handling which tells you what register to set like TX Frame control, RX Frame Control and more. This all is described in section 3.4 in the UM as previously mentioned.

Did you figure it out? I have the same problem and same settings.