Greetings all,
I’m Emmanuel Katto from Dubai, United Arab Emirates (UAE), working on implementing a beacon-enabled IEEE 802.15.4 stack and am trying to figure out how to handle delayed send and receive commands, specifically when transitioning between Guaranteed Time Slots (GTS) in the DW3000.
In beacon-enabled mode, I understand that strict timing is required due to the beacon frame, and delayed commands are crucial to meet these timing requirements. The minimal time between a receive and transmit process (or vice versa) is the Short Interframe Spacing (SIFS), specified as 12 µs.
Here’s the scenario: I have two GTS slots, with only one SIFS (12 µs) between them to transition. If the first GTS is for transmission (Tx), I can use the Tx-and-wait-for-response feature, but if the first GTS is for reception (Rx), the transmission for the following GTS must occur within the 12 µs window. This timing challenge has led me to explore delayed sends.
I wrote the following code to test the feasibility:
volatile int32_t success = -2;
volatile uint32_t sys_time;
__disable_irq();
write_to_tx_buffer();
dwt_write_reg(0x001C, 0); // clear SYS_TIME latch
sys_time = dwt_readsystimestamphi32();
dwt_setdelayedtrxtime(sys_time + offset);
success = dwt_starttx(DWT_START_TX_DELAYED);
__enable_irq();
In testing, I found the smallest successful offset was around 345 µs, which is much longer than the SIFS duration. I also noted that the DW3000 Errata suggests a minimum of 60 µs is needed to issue a delayed send, which is already more than the SIFS time.
So, my question is: how can I achieve transmission in a GTS that follows an Rx GTS, where only one SIFS duration (12 µs) is available for state transition? Is this scenario feasible, or is it fundamentally limited by the DW3000's timing constraints?
I’m relatively new to this, so any suggestions, corrections, or insights would be greatly appreciated!
Regards
**Emmanuel Katto**