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.

TMS570: DMA & SCI Multi-Buffer Mode

I am attempting to configure a DMA channel to fill the TMS570's SCI1 Tx multi-buffer (i.e., TD[0..7]) with 8 characters.  According to the "TMS570LS Series Technical Reference Manual" (SPNU489B, January 2011) section 13.6.2.2 and section 13.14.28, a Tx operation will be initiated in multi-buffer mode when a value is written to TD[0] (address 0xFFF7_E474).  This would suggest that I would want to program the DMA to write to TD[7..1] first, followed lastly by a write to TD[0].  That is, I'd want the DMA to write to the following sequence of destination addresses: 0xFFF7_E47B, E47A, E479, E478, E477, E476, E475, followed lastly by 0xFFF7_E474 which would trigger the Tx operation. However, I don't see any way to program the DMA to generate this sequence of addresses since it appears that all DMA addressing modes will only increment the destination address rather than decrement.  Are the EIDX/FIDX values signed?

Thanks.

  • You question has been forwarded to our DMA and SCI expert.

    Regards,

    Haixiao

  • Hi Jason

    If you are doing 8 char, can you configure DMA to do 64 bit transfer.

    I will get back to you on your question as soon as possible. I will point you to some app note if available with us.

    Best Regards
    Prathap

  • Hi Jason,

    Inspite you write the TD0 and triggered a transfer, you will have enough time ( TD0 8 bits transfer time) by which TD1 to TD7 can be filled by DMA -- You might have to have a high priority locked DMA channel so that it does not loss the priority due to arbitration. Application software should take care.

    As I mentioned you can also use 64Bit transfer or 2 DMA channels with split ( 32 + 32 bit).

    Best Regards
    Prathap