Forums

using the edma channel of c6713 dsp

Started by terzakis September 15, 2006
Hi all.
I am trying to use the edma channel of my c6713 dsk, in order to take
8-bit data, from a daughter card (address 0xA0000000) and store them in
the sdarm (address 0x80000000). 
Can anybody tells me what i have to do?
Which functions i have to use?
I have written a code based on the data sheets but unfortunately it
doesn't work at all.
I know that it is a simple problem but i am new in the world of DSP's and
i need help.
Regards Manos...
terzakis wrote:
> Hi all. > I am trying to use the edma channel of my c6713 dsk, in order to take > 8-bit data, from a daughter card (address 0xA0000000) and store them in > the sdarm (address 0x80000000). > Can anybody tells me what i have to do? > Which functions i have to use? > I have written a code based on the data sheets but unfortunately it > doesn't work at all. > I know that it is a simple problem but i am new in the world of DSP's and > i need help. > Regards Manos...
You may want to try downloading the c6000 chip support library (CSL): http://focus.ti.com/docs/toolsw/folders/print/sprc090.html You can get the library itself as well as the API guide at the link above. The DAT module will allow you to do a memory-to-memory transfer using the DMA. DAT_copy is the function you'd use. For a better understanding of the processor you may want to try it yourself by writing the appropriate code. Using the EDMA reference guide you would need to first setup an entry in the Parameter RAM which lists things like src addr, dst addr, count, etc. Once that's completely setup you can then kick off the transfer by writing to the corresponding bit of the event set register. I believe there are also books out there that come with CDs full of various programming examples and labs for learning to program on these DSKs. You may want to try one of those out if you're looking for some structured learning. Good luck! Brad
terzakis wrote:

> I am trying to use the edma channel of my c6713 dsk, in order to take > 8-bit data, from a daughter card (address 0xA0000000) and store them in > the sdarm (address 0x80000000). > Can anybody tells me what i have to do? > Which functions i have to use?
This is a stripped down code example which runs on a C64xx: uint32_t startTransfer(const uint32_t* src, uint32_t* dest, uint32_t frames, uint32_t elements) { uint32_t options = EDMA_OPT_RMK( EDMA_OPT_PRI_MEDIUM, // priority, must be lower than FIFO DMA EDMA_OPT_ESIZE_32BIT, // set 32 Bit transfer siuze EDMA_OPT_2DS_YES, // this is a 2D source EDMA_OPT_SUM_INC, // increment source pointer EDMA_OPT_2DD_YES, // this is a 2D destination EDMA_OPT_DUM_INC, // increment destination pointer EDMA_OPT_TCINT_YES, // enable transfer complete indication 1, // dma Number EDMA_OPT_TCCM_OF(0), // no 6 Bit transfer complete code EDMA_OPT_ATCINT_NO, // disable alternate transfer complete intr. EDMA_OPT_ATCC_OF(0), // -- " -- EDMA_OPT_PDTS_DISABLE, // disable peripheral device transfer for src EDMA_OPT_PDTD_DISABLE, // disable peripheral device transfer for dest EDMA_OPT_LINK_NO, // no DMA chaining EDMA_OPT_FS_YES); // set frame synchronisation // Start DMA transfer: EDMA_qdmaConfigArgs(options, (uint32_t)src, OR_HW(frames-1, elements), (uint32_t)dest, 0 /*FRMIDX|ELEIDX*/); Don't ask me any more questions about it. A lot of documentation about DMA can be found in TIs manuals. bye Andreas -- Andreas H�nnebeck | email: acmh@gmx.de ----- privat ---- | www : http://www.huennebeck-online.de Fax/Anrufbeantworter: 0721/151-284301 GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc PGP-Key: http://www.huennebeck-online.de/public_keys/pgp_andreas.asc