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.

DMA with parallel memory which have FIFO inside

Other Parts Discussed in Thread: RM48L952

Hi,

   I am using RM48L952 controller.

 

I am interfacing external memory with this controller in 16 bit mode. I want to interface memory using DMA interface.

 

I am trying to initialise DMA interface with that memory but not getting proper response.

 

External memory has FIFO with 16 bit LSB and 16 bit MSB on specific locations and want to read it in array.

 

When I am trying with post increment and indexed mode I am not getting correct response.

 

 

I want to read 16 bit LSB of FIFO, put it on 0th location of array and then read 16 bit MSB of FIFO, put it on 1st location of array

Then FIFO data will update with new data so again read LSB of FIFO and put it on 2nd location of array then MSB read it in 3rd location of array and so on.

 

So please help me to resolve this problem.

  • Vishal,Can you please post your DMA configuration?Regards,QJ
  • Hi,

    Following is the DMA initialisation step I am following.

    In the code I am using indexed mode for source and destination address. Also I have tried with post increment mode.

    ASYNC_BASE_ADDR3 0x68000000
    unsigned short receiveBuff[100] = {0};

    void DMA_init()
    {
    g_dmaCTRL DMA_control_packet;

    dmaEnable();

    dmaSetPriority(0, HIGHPRIORITY) ;

    dmaEnableInterrupt(0, FTC ); //enable Frame transfer complete interrupt

    DMA_control_packet.FRCNT = 1;
    DMA_control_packet.ELCNT = 32;

    DMA_control_packet.SADD = (unsigned int)(ASYNC_BASE_ADDR3);
    DMA_control_packet.DADD = (unsigned int)receiveBuff;

    DMA_control_packet.RDSIZE = 1; //16 bit
    DMA_control_packet.WRSIZE = 1;
    DMA_control_packet.TTYPE = 0;
    DMA_control_packet.ADDMODERD = 3;
    DMA_control_packet.ADDMODEWR = 3;
    DMA_control_packet.AUTOINIT = 0; //Auto Initialise
    DMA_control_packet.CHCTRL = 0;

    DMA_control_packet.ELDOFFSET = 2;
    DMA_control_packet.ELSOFFSET = 8; //Using offset as 8 because want to transfer address left shift by 2
    DMA_control_packet.FRDOFFSET = 0;
    DMA_control_packet.FRSOFFSET = 0;

    DMA_control_packet.PORTASGN = 7;

    dmaSetCtrlPacket(0, DMA_control_packet);
    }
  • Hi,

    I am truing to read data using DAM on EMIF interface I am not getting data at some locations. When I probe the signals on chip select CS and read enable line RD it is not giving RD signals at some chip select.

    For this reason I am I not getting data at some locations.