DWM3001CDK TWR ranginig (example 05) Initiator doesn't receive response

Hello,
I’ have 2 DWM3001CDK, one’s with Initiator firmware (example 05a) and the other with Responder firmware (example 05b). The Initiator send the first poll message, the responder receive it, and send the Response message, but the Initiator doesn’t receive the message. What could be the problem?
Regards

Hi @DavideR

Here are a few things to check:

  1. Example Matching: Ensure you are using the correct pair of examples. There are two versions for both initiator and responder: one with STS and one without. Make sure they match.

  2. SDK Version: What SDK version are you using? Please also check decadriver version.

  3. Flashing: Verify that the correct examples are flashed onto the tag and anchor.

  4. Message Flow: How did you confirm that the initiator successfully sent the poll message and received the response? What indicates the failure in receiving the final message?

  5. Error Message: What error message do you receive for the final reception failure? This could provide clues to the issue.

Regards,

Hello,
e thnakyou for reply.

  1. Yes, I’ m using both example without STS.
  2. DW3xxx_XR6.0C_24Feb2022
  3. I’m sure, I’ m debugging simultaneously initiator and tag.
    1. I put in the firmware messages in the debug window.
      The responder notifies me that it received the “poll” message from the initiator (a 12byte frame) and notifies me that it sent the “Response” message. I am therefore sure that the responder sends the “Response” message. Also the initiator, receives the “Response” message and in debug, I see that within the “waitforsysstatus( … )” routine, the variable “lo_result”, has value: 0x002000f0.

@DavideR,

These examples have been online for a long time, so I wouldn’t expect issues with a simple TWR exchange. However, for your information, a new SDK is available that includes both Drivers and the SDK. The Drivers are a separate unit that contains simple examples within the same package.

There is significance in the bit fields of lo_result. However, I would suspect your setup might be the issue. For instance, adding extra delays by inserting print statements in the code can cause missed deadlines for the transmitter/receiver to function properly. Additionally, if you halt the system for debugging purposes, the receiver might fail. The reasons could vary, such as timeouts, preamble detection errors, etc.

Anyways back to your original question again, you can break down the error you encounter.

Your lo_result in hex can be translated to binary as 001000000000000011110000.

deca_device_api.h has the meaning of these bits. Look at dwt_int_conf_e for all, and find below for the meaning of your code.

DWT_INT_RXPTO_BIT_MASK = 0x200000UL, // Preamble timeout
DWT_INT_TXFRS_BIT_MASK = 0x80U, // Frame sent
DWT_INT_TXPHS_BIT_MASK = 0x40U, // Frame PHR sent
DWT_INT_TXPRS_BIT_MASK = 0x20U, // Frame preamble sent
DWT_INT_TXFRB_BIT_MASK = 0x10U, // Frame transmission begins

It seems transmitter events are performed successfully but preamble timeout occurred in reception. This supports your finding. Preamble timeout can occur with a several reasons such as preamble code mismatch or noise environment, or timing mismatch between transmitter and receiver and so on.

i also have DWM3001CDK however i have been unable to get them to work even after following the quick start guide. Can you help me with how you got your boards to work ???