DW1000 Frame transmission problem

Hi,

I have issue in getting the IRQ for frame transmission complete event. I have configured DW1000 to generate interrupt when frame transmission completes.

I have the following implementation.

Our application send some data periodically(500ms) and listen to receive data transmitted from other remote device. So I have configured the DW1000 initially to be in receive mode with timeout disabled. Following function call I have used.

/* Disable the timeout */
dwt_setrxtimeout(0);
/* Activate reception immediately. */
dwt_rxenable(DWT_START_RX_IMMEDIATE);

After some time some data is transmitted using the function calls

dwt_writetxdata(sizeof(tx_msg), tx_msg, 0u);
   dwt_writetxfctrl(sizeof(tx_msg), 0u, 1);
    dwt_starttx(DWT_START_TX_IMMEDIATE );

But the interrupt is not getting generated for frame transmission complete event. What could be the reason for this.

I have noticed one thing. Interrupt is getting generated if I do not call the initial functions to enable the reception, dwt_setrxtimeout(0); and dwt_rxenable(DWT_START_RX_IMMEDIATE);

Why is this behavior. Transmission will not happen if receiver is enabled?? Receiver will not disable automatically when we issue transmission command???

Please Help,
Regards,
Shijo Thomas

Hi Shijo,

the behavior is right, when you call the initial function, the DW1000 will enter rx mode, DW1000 will exit from rx mode in three situation:

  1. rx timeout ,
    As you disabled

  2. a good frame is received
    I suspect your program block here, which means DW1000 are still in RX mode, you could verify this by reading the system status regester.

  3. bad frame is received, for examle : PHR / FCS …

so your program will not exsit from RX mode enter init mode, then you will not able to start tx mode.

you could change your code by just enble rx time out .

Jesen