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.

TMS570LC4357: DMA implmentation (Memory pheripheral)

Part Number: TMS570LC4357


Please suggest configurable input for the memory pheripheral(SCI3 TX) DMA limplmentation in TMS570LC4357

below is the attached sample code i have written

#if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
#define SCI3_TX_ADDR ((uint32_t)(&(sciREG3->TD)))
#define SCI3_RX_ADDR ((uint32_t)(&(sciREG3->RD)))
#define SCI4_TX_ADDR ((uint32_t)(&(sciREG4->TD)))
#define SCI4_RX_ADDR ((uint32_t)(&(sciREG4->RD)))
#else
#define SCI3_TX_ADDR ((uint32_t)(&(sciREG3->TD)) + 3)    // 0xFFF7E538debug transmit
#define SCI3_RX_ADDR ((uint32_t)(&(sciREG3->RD)) + 3)
#define SCI4_TX_ADDR ((uint32_t)(&(sciREG4->TD)) + 3)
#define SCI4_RX_ADDR ((uint32_t)(&(sciREG4->RD)) + 3)
#endif

#define DMA_SCI3_TX  DMA_REQ31
#define DMA_SCI3_RX  DMA_REQ30
#define DMA_SCI4_TX  DMA_REQ43
#define DMA_SCI4_RX  DMA_REQ42

#define SCI_SET_TX_DMA      (1<<16)
#define SCI_SET_RX_DMA      (1<<17)
#define SCI_SET_RX_DMA_ALL  (1<<18)

 

 

void main()

{

    gioInit();                                                                    //GPIO initialization
    rtiInit();                                                                    //timer initialization
    hetInit();                                                                    //HET  initialization
    sciInit();                                                                    //serial initialization
    spiInit();                                                                    //This function initializes the SPI module - SPI4 is used for communication//

 

       g_dmaCTRL ctrlPacket;

        /*Load source data*/
        for (i=0; i<128; i++)
        {
            srcBuffer[i] = i;
        }

        ctrlPacket.SADD     = (uint32)srcBuffer;        // source address
        ctrlPacket.DADD     = (uint32)SCI3_TX_ADDR;        // destination address
        ctrlPacket.RDSIZE   = ACCESS_32_BIT;            // read size
        ctrlPacket.WRSIZE   = ACCESS_32_BIT;            // write size
        ctrlPacket.ADDMODERD= ADDR_INC1;                // increment source
        ctrlPacket.ADDMODEWR= ADDR_INC1;                // increment dest
        ctrlPacket.ELCNT    = 128;                      // 128 elements
        ctrlPacket.FRCNT    = 1;                        // 1 frame
        ctrlPacket.TTYPE    = FRAME_TRANSFER;           // Memory → Memory
        ctrlPacket.PORTASGN = PORTA_READ_PORTB_WRITE;   // data port

        dmaSetCtrlPacket(DMA_CH0, ctrlPacket);
        dmaReqAssign(DMA_CH0, DMA_SCI3_TX);
        dmaSetChEnable(DMA_CH0, DMA_SW);

//        dmaEnable();
//
        sciREG3->SETINT |= SCI_SET_TX_DMA;
        sciREG1->GCR1 |= 0x01;           // enable SCI

 

}