This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6657: UART problem with duplex transfer with EDMA3.

Expert 2875 points
Part Number: TMS320C6657
Other Parts Discussed in Thread: SYSBIOS

Hi,

We are using C6657 DSP with SYSBIOS.  We are using UART A for transmit and receive.  UART B for transmit only.  All data transfer with the two UARTs are through EDMA3.

For UART A, if we make transmit and receive exclusive, all the date transits and receives correctly.  But when transmit and receive simultaneously (duplex data transfer), EDMA3 would stop receiving data.

I setup UART A receive using EDMA3 with a circular buffer.  So the UART A receive data would DMA'ed to internal memory without CPU intervention.  UART A transmit is on demand.

We have been using C6657 for a few year with shipping products by using UART A for receive and UART B to transmit (we found the problem a few years ago).  But now we need to use another UART transmit.  We need your help to resolve this problem.

Thank you.

Regards,

Steve

  • Hi,

    Which version of Processor SDK RTOS are you using?

    Best Regards,
    Yordan
  • Steve,

    Good to see you back on the forums. I remember working with you on booting of your application from SPI flash on this device few years back. Can you please provide the software versions that you have been using for this effort and also indicate how the EDMA and UART is configuration.
    Are you using FIFO or doing read/writes to register? MCSDK baseline that you were previously using didn`t integrate EDMA setup into the UART drivers. We now provide a EDMA based implementation of our UART driver in Processor SDK RTOS so I would recommend that you take a look at the implementation and let us know if this helps you fix your issue.

    Regards,
    Rahul
  • Hi Rahul,

    It's nice to hear from you.  I heard that Steven Ji is not longer at TI.  Glad to know you are still there.  So I have hope to resolve this UART issue.

    Thanks for your support on my SPI boot effort.  It is still working.  Our product have been shipping for a few years.  

    At  our initial development a few years ago, we discover that UART duplex transfer (send and receive simultaneously) had problem.  Since we only do one UART transfer and one UART receive, we use UART 1 for receive and UART 2 for transmit.  That is how our current products working.

    Now there are some new requirements need to use an extra UART output.  I test with UART 1 doing both transmit and receive.  The EDMA3 just stop taking UART received data.

    My setup is: on Receive: EDMA3 copies UART data into a circular buffer.  It continuously does it without CPU intervention.  On transmit: it is on demand.  CPU sets up EDMA3 to transmit data to UART.

    The symptom is EDMA3 stops taking received data. 

    Here is the UART receive EDMA3 parameter set.

    80104000 02540000 FFF00001 108CBD8F 00010000 000041A0 00000000 00000001
    80104000 02540000 FFFF0001 108CBD80 00010000 000041A0 00000000 00000001

    Thank you.

    Steve

    Here is the list of packages we use:

  • Steve,

    Unfortunately, this is a fairly old software baseline and we are no longer support the MCSDK 2.x product so this will take us a while to setup at our end. Can you indicate if you are using the CSL from MCSDK for the UART and EDMA configuration or do you have your own driver code that implements the functionality.

    If you are using CSL code then you may want to check the code that I found in the archives. Confirm your EDMA and UART setup matches with what is provided here:

    Keystone1_UART.zip

    Hope this helps.

    Regards,

    Rahul