One Shot Transmit Synchronization (OSTS) Problem

I’m attempting to send a message from one DW1000 to another and to initiate that transmission with the One Shot Transmit Synchronization process. When I manually transmit a packet by setting up the frame parameters and setting the TX_START bit it successfully transmits and I receive the packet on the other DW1000 (which I verify with both the SFD output pulse and the receive interrupt). When I try to initiate the transmission with OSTS via a pulse on the SYNC input, it seems like nothing happens. I get nothing on the receive side DW1000 and the transmit status bits in the SYS_STATUS register don’t get set.

To verify that my SYNC input is working correctly, I’ve changed the mode the OSTR and verified that the internal 40-bit counter is being reset every time I get a sync pulse. I’m assuming that the OSTS uses the same mechanism but I’m worried I’m missing something simple here. There’s no example code or forum posts on OSTS so the little information in the user manual is all I have to go on and I feel like I’m following all of the required steps.

Any guidance would be appreciated. Thanks.

1 Like

Well, obviously didn’t get much help here but I ended up working around the issue by using One Shot Timebase Reset (OSTR) and the delayed transmit feature to essentially do the same thing. The timebase is reset to 0 by the incoming Sync pulse and then the packet is transmitted at the timebase count that I specify in the delay register.

I am now seeing a weird issue where the SFD detection on the receive node is sliding relative to the Sync pulse on the transmit node, but that’s an issue for another post.

Have you checked EC_CTRL_OSTRM? I found that EC_CTRL_OSTRM is still 1, and then the system counter reset when sync. After I set EC_CTRL_OSTRM to 0, it worked well. When I set the sync pin, I can get a tx irq.

1 Like