Getting messages from multiple UWB devices (probably) while following a TDMA schedule

Hello Everyone,

I have implemented a simple TDMA schedule with only one initiator and one responder. The slot duration is 10 ms. The first slot of the schedule is a beacon slot for synchronization purpose. In this slot, the initiator transmits a beacon message. Based on that the responder synchronizes itself. Then, in the next slot the initiator transmits a message to the responder and responder replies in the last slot of the schedule. This schedule continues.

It is working fine but sometimes the initiator receives message with error probably indication of receiving from multiple UWB devices (I am using interrupt to get notification of receiving good message or error message). But I am using only two UWB devices (i.e., initiator and responder). At first, I was using channel 5. Later, I changed it to channel 2 to observe whether the error still persists or not, found the error still happens.

I am not sure about the reason. Could anyone please help me regarding this issue.

Thanks
Auvi

Hi Auvi,

Could you be more specific. Eg “probably indicating of receiving from multiple UWB devices”.
What errors do you get? Time outs? SFD errors?
Have you tried different PRFs? and how do you change from channel 5 to 2? More then just channel change needs to be done , there are also registers which need to change.

Anyways, I’m curious to see why you think other UWB devices nearby could be the problem. Would you also have a TREK1000 or EVK1000 running?

Regards
Leo

Hello DecaLeo,

Thanks a lot for your reply. I am using a program template where if error occurs then it prints “Transmission Error : may receive package from different UWB device”. That’s why I wrote that. Later, I looked into “system event status register” and found the value is “0x00801303”. That means it can detect the preamble and SFD but Leading Edge Detection (LDE) and RXPHD are not set. Receiver PHY Header Error bit is also set. What could be the reason?

I have used the following configurations for channel 5:

static dwt_config_t config = {
5, /* Channel number. /
DWT_PRF_64M, /
Pulse repetition frequency. /
DWT_PLEN_128, /
Preamble length. Used in TX only. /
DWT_PAC8, /
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. /
DWT_PHRMODE_STD, /
PHY header mode. DWT_PHRMODE_STD or DWT_PHRMODE_EXT*/
(129 + 8 - 8) /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
};

For the channel 2, I have used:

static dwt_config_t config = {
2, /* Channel number. /
DWT_PRF_64M, /
Pulse repetition frequency. /
DWT_PLEN_64, /
Preamble length. Used in TX only. /
DWT_PAC8, /
Preamble acquisition chunk size. Used in RX only. /
9, /
TX preamble code. Used in TX only. /
9, /
RX preamble code. Used in RX only. /
1, /
0 to use standard SFD, 1 to use non-standard SFD. /
DWT_BR_6M8, /
Data rate. /
DWT_PHRMODE_STD, /
PHY header mode. /
(64 + 1 + 8 - 8) /
SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
};

I am not using any other TREK1000 or EVK1000.

Thanks
Auvi

It sounds like the radio packet was corrupted for some reason. This happens.

Radio interference is always going to happen, packets will be corrupted at random. How often this happens will depend on the environment but it’s always going to happen to some extent. Your system just has to deal with it.
The next layer up in your software stack needs to either cope with random packets going missing or you implement an acknowledgment / retransmission protocol to keep sending until the data gets through.

Generally with ranging protocols the best solution is also the simplest. Clear the error flags and act as if it never happened. This means you effectively treat the error in the same way as you would if the other device was out of range.

Thanks AndyA for your reply.

Thanks
Auvi