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.

Compiler/TMS320C6654: About EDMA3 use on Keystone I

Part Number: TMS320C6654

Tool/software: TI C/C++ Compiler

Hi,

I want to use DMA to transfer array data to NOR flash with SPI.

I want to confirm that my understanding is correct or not.

If the transferred data size is 512kByte, using AB sync transfer(ACNT = 65536(64kByte) * BCNT = 8) is fit within 1 frame. Is this correct ?

Or if the data array is type of float a[512][32][32], Is it correct to transfer as (ACNT = 4(4Byte) * BCNT = 65536 * CCNT = 2) ?

Also, in these case, I think that only one PaRAM set is needed as transfer the same data so it doesn't need linking. Is this correct ?

regards,

  • Hi,

    In the EDMA ParamSet, there is a OPT register. It has bit field called SYNCDIM to determine Transfer synchronization dimension. Also, there are ACNT, BCNT and CCNT to determine how many bytes to be transferred in total.  

    If the transferred data size is 512kByte, using AB sync transfer(ACNT = 65536(64kByte) * BCNT = 8) is fit within 1 frame. Is this correct ?>>>>> Yes, you can use that.

    Or if the data array is type of float a[512][32][32], Is it correct to transfer as (ACNT = 4(4Byte) * BCNT = 65536 * CCNT = 2) ? ======> float is 4 bytes, so totaling 4*512*32*32 = 2097152 bytes to transfer. You can use a combination of ACNT*BCNT*CCNT equal this value to transfer. But please make ACNT with a value like 64, 128, not 4. From your application, it is one time program and trigger, the actual transfer is split into multiple blocks, limited by the EDMA DBS and the data line width of SPI NOR.

    Also, in these case, I think that only one PaRAM set is needed as transfer the same data so it doesn't need linking. Is this correct ?====> Correct. Please also consider that the data array itself takes a big memory, may not fit into L2 or MSMC in real usage cases. Also it take times for the CPU to prepare such big chunk of data. In many real-time embedded system usage, you only transfer a small block of data but many times with EDMA.

    Regards, Eric