DWM1001 running TWR example with multiple channels?


I have the ss_twr_init and responder example running on 2 modules. Default the example is using a static channel which is 5.
Is it possible to make this channel a variable. This to setup 1 initiator looping through 4 channels to archive communication with 4 responders each with there own channel? This to have the distances from 4 responders read out of the initiator.

Thanks for any suggestions on this.

I misunderstood the examples:(

What i would like to have is 1 initiator poll 4 anchors to get the distances.

Any suggestions?

This is possible but not really the intended purpose of the channels. The availability of multiple channels is mainly to support different regions with different radio regulations. Using channel hopping as addressing method is not really described in the 802.15.4 spec afaik.

I suggest looking in to an other method of ranging with multiple anchors like TDMA or LBT (like CSMA/CD). If energy consumption is not a concern on your anchors, implementing TDMA can be as simple as only having the anchor respond when the destination address in the initiator’s message matches that of a pre-configured address in the responder. Things get a bit more complex when low power operation and automatic setup are required. PANS, Decawave’s RTLS demo on the DWM1001, provides some examples on how to accomplish this.

Have a look at the 802.15.4-2011 (or 2016) standard to see how MAC addressing works.


Great! Thanks Seppe. This is a great startpoint for me to check if i can modify the twr_init and _resp programs with the addition of TDMA.

Thanks for your help!

After seppe his suggestions i have succeeded to modify the twr_init and resp code to have 1 initiator getting distances to 2 responders. by using unique addresses.

In this situation i have the data (2 distances in the repsonder). Is it possible to send this data to 1 of the responders?

Many thanks for the help.

I’m not able to do testing on the modules but i would like to know if i can add my desired 3 doubles to the poll message from initiator to a responder and take them out off the message in the responder.

  tx_poll_msg1[ALL_MSG_SN_IDX] = frame_seq_nb;

  /* add my data to poll message*/

Is this the right direction? Where can i find documentation or help about this?

Many thanks for any help!

Who can help me please with enable printf in the ss_twr_resp program?

edit: I will start a new topic with the question how to add UART to responder program.

Hi, probably late on it but i want to do the same thing as you (1 initiator getting distances to 2 responders) but i can’t find the way to do it
Can you help me please?
Thanks a lot