DWM3001CDK responder implementation

Hi, I’m a communication engineering student. I’m trying to work on DWM3001CDK boards. I started studying the Qorvo Development Guide. I’m working on TWR between an Initiator and Just one responder. What I want to know is how to modify or write a firmware that works only for the responder side in order that I don’t have to initiate the responder side by giving the respf command by tera term, therefore once I connect that side is automatically a responder. Is anyone there who can give an help by telling me which part of the code provided to modify in order to achieve this purpose?
Thanks in Advance for your time.

Hi @Antonello ,

Yes this is possible with the SDK.
You need to use CLI binary. And then issue “RESPF” command, and then issue “SAVE” command while respf is running.

Hope it helps,
Wassim

Hi, i have modified the firmware for the responder in order to make the responder starts automatically without any command. Anyway I want to disconnect the responder and plug with a power bank since I do only need the log of the initiator side. But once I do this I have this message


between each printing of the CIR on the initiator side. Can you help me?
thanks

Hi, the respf application usually sends the result of each ranging on the uart in Json format. This is what you see: one successful ranging at 22cm and 3 unsuccessful ranging. You need to be careful on the log interleaving and use the logging infrastructure to print data on the uart. Moreover, depending on how much CIRs you prints and at which frequency, you may have bottleneck on the UART or the time to retrieve the CIR from the chip takes too long and leads to subsequent failed ranging.

any suggest on how to fix ? I’m a beginner

First, make sure that all the prints over UART are done with the call to reporter_instance.printcall. This call goes through the internal logging system and is not blocking.
On a second step, verify that the read of the CIR from the DW Chip does not take too much time. The full CIR can represent enough data to lead to non negligible transfer time. So, if the SPI transfer takes too much time, you would likely miss some ranging rounds. A way to overcome this issue is to increase time between 2 ranging so that you have more time to retrieve the CIR, or, you can also retrieve less CIR data. Most of the time, what is interesting is the first path, peak path,… So you can get 30 CIR points from the first path index (or a bit earlier).

yes, I fixed the problem. Do you have any suggestion/code on how to implement multi responder with 1 initiator? thanks

Hi @Antonello ,

You’ll need to set multi node mode to 1.
Try the commands below:

Initiator:
INITF 4 2400 200 25 2 42 01:02:03:04:05:06:07:08 1 0 0 1 2
Responder1:
RESPF 4 2400 200 25 2 42 01:02:03:04:05:06:07:08 1 0 0 1
Responder2:
RESPF 4 2400 200 25 2 42 01:02:03:04:05:06:07:08 1 0 0 2