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.

CCS/TMS320F28377S: Transmitting serial data using DMA

Part Number: TMS320F28377S
Other Parts Discussed in Thread: C2000WARE

Tool/software: Code Composer Studio

I want to use DMA to transmit data using SCIA of TMS320F28377S. Actually, I am transmitting 64 bytes in every1 second. And it takes 55mill second to transmit 64byte when the baud rate is 9600. This is too much for my application. I transmitting data using the below function. So I want to use a DMA channel to reduce this time. In datasheet, nothing is given for serial transmission using DMA. So please help to solve the problem.

void scib_transmit_char(unsigned char data)

{

 while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
 ScibRegs.SCITXBUF.all =data;

}

  • hi ,

    The DMA doesn't have access to SCI so we cannot use the SCI communication with DMA.

    Regards. 

  • Sam,

    Please see page 577, figure 5-1 in the F28377S TRM:

    http://www.ti.com/lit/spruhx5

    and notice that the SCI does not have a data path to the DMA.  The text in your post states that you want to use SCI-A, but your code uses SCI-B.  For assistance with your code, please reference C2000Ware at:

    C:\ti\c2000\C2000Ware_<version>\device_support\f2837xs\cpu1\<SCI Examples>

    I hope this helps.  If this answers your question, please click the green "Verified Answer" button. Thanks.

    - Ken

  • Sorry I put wrong function. But both function use are same (as given below). Any other way to reduce the transmitting time?? As I told it nearly taking 55 ms to transmit 64byte at baud rate of 9600 (I don't want to change the baud rate setting).

    Transmit interrupt are useful in this case??   

    void scia_transmit_char(unsigned char data)

    {

     while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
     SciaRegs.SCITXBUF.all =data;

    }

  • Sam,

    Your calculation is correct.  64 bytes is 512 bits, and the baud rate is 9600 bits per second.  This would be about 53 ms.  The only way to reduce this time is to increase the baud rate.

    I hope this helps.  If this answers your question, please click the green "Verified Answer" button.

    - Ken

  • Thank's

    But why there is no DMA channel for UART? . This is a DSP processor and generally used for control application like motor control, and used in VFD where RS232 and RS485 are very common. And if we use some FSM or scheduler then it is difficult to wait for that much time. 

    I am asking this for my knowledge only.

  • Sam,

    For the F28x7x, this was a design decision.  Other device family options for SCI and DMA include the F28004x and F2838xS.  The F28004x has a LIN connected to the DMA.  The LIN module can also operate like a conventional serial communications interface (SCI) port.  The F2838xS has a Connectivity Manager which includes a UART (CM-UART).  Information about both device families can be found at:

    http://www.ti.com/microcontrollers/c2000-real-time-control-mcus/overview.html

    I hope this helps.  If this answers your question, please click the green "Verified Answer" button.

    - Ken