This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

DTM UART communication through USB port instead of Tx Rx

Hi everyone!

I am currently working on a custom prototype that is using the nrf52840 chip and sdk 15, and now want to perform DTM tests on the device. Looking at the DTM example code and description, I see that the application uses 2 pins (tx,rx) in order to perform the UART communication. In my case with the custom prototype board that is not possible since we have not included these pins. Is there any other way to perform the UART communication through the USB port instead. One idea that I am currently thinking of is to implement USB CDC and use that instead, does it sound reasonable and/or are there any other easier way to do that?

Would be very thankful for any help I can get!

/Hadi

Parents
  • UPDATE: I have started implementing USB cdc in the DTM example that is available, however, I am facing some problems. When I run my code on the board I can't see any com port appearing. So my question is: Does the USB CDC example require a Softdevice to be programmed on the device in order for the device to work with USB cdc? If so, then I assume that it won't work to integrate both cdc and DTM, since, the DTM application requires that no softdevice is present on the device. Correct me if I am wrong

  • Thanks for the help Torbjørn, I really appreciate it. I have one question regarding the DTM tests. We are going to perform certification test soon: Radio (TX: Mod low,mid,high and carrier & RX: no beacon ) and also EMC with usb traffic, my question is whether it is possible to perform this with the DTM application only or do I also have to use the Radio application?

  • Hi Again,

    I have managed to solved the problem now, however, I am not sure whether it is acceptable that I don't consider this wait function call now. I now concatenate the commands MSB & LSB together and then change a flag that tells that the cmd value was received directly inside the cdc rx handler. In the main function I just call the dtm_put function with the cmd value and send a response back. Is this approach acceptable?

    I have attached the latest code here below, would really appreciate if you could tell me whether this approach is acceptable.

    Thanks in advance

    Best regards

    Hadi

    cdc_dtm_sdk15.0_latest.zip

  • Hi Hadi,

    I found this post because I was looking for this exact example combination. Thank you for your hard work doing it. Do you think it would be difficult to make this example work for sdk 15.3?
    We you also working on the radio test example + cdc? I am also trying to find that.
    I am a hardware engineering and combining these examples is very difficult for me with my basic firmware/programming skills.
    If you are working on it would you be able to share it?

  • Hi Silvano,

    this is the least I could do to share my code, and I am glad that others will make use of the code.

    The changes from 15.0 to 15.3 shouldn’t be that large or even no changes would be required. Usually it is larger changes between major releases but minor updates from 15.0 to 15.3 shouldn’t be that large. I remember that I looked on the 15.3 example and it was the similar code if I recall correctly, however, I did not work on 15.3 so unfortunately have no code to share.

    If you want to port it to 15.3 I would suggest to copy all the attached code in my attached main.c into CDC acm example main.c in 15.3 and include dtm to sdk_config.h and the header files in the makefile.

    Best regards

    Hadi

  • Hi Again Silvano,

    I added the same code, sdk_config.h and makefile to sdk15.3 and seem to be compiling without any problems, however, did not test the code, I'll leave that to you to test Slight smile

    Just add the example in the same directory as the cdc example and compile it and flash.

    Hope it will work!

    Best regards

    Hadi

    cdc_dtm_sdk15.3.zip

  • Hi Hadi

    I don't think it's a problem that you omit the dtm_wait() function, if that's what you mean?

    My main concern looking at the code is what would happen if you dropped a byte, as you could fall out of sync with the update sequence, but I doubt this is a common occurrence in practice. 

    Best regards
    Torbjørn

Reply Children
No Data
Related