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.

Using EDMA3 to transfer 1Mx16 bit from EMIFA

Hi,

We have a requirement to transfer 1M (20bit address) words (16-bit) from SRAM connected to EMIFA. Please let me know which will be the appropriate driver available in StarterWare and how to use the API's for this. I have used edmaTest.c, but 16 bit support is not there ??

Any help is appreciated.

Regards,

Nandan

  • Hi,

    Thanks for your post.

    I think, there are API's in EDMA driver starterware code like, EDMA3RequestChannel, EDMA3FreeChannel to allocate logical DMA channel associated with PaRAM set or free the associated PaRAM set.  Also, to start a EDMA transfer on the specified channel, there are API's like EDMA3EnableTransfer, EDMA3DisableTransfer etc.  All API usage source code is available in the below specified path after c6748 starterware installation:

    ~\Texas Instruments\pdk_C6748_2_0_0_0\C6748_StarterWare_1_20_03_03\drivers\edma.c

    Please install C6BIOS SDK Ver. 02_00_00_00 in which pdk_C6748_2_0_0_0 is a part of  BIOS SDK.

    Kindly walkthrough the above edma driver code for the appropriate API's

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question

    -------------------------------------------------------------------------------------------------------

  • Thanks for the quick response Sivaraj.

    I am using sample code in edmatest.c provided with Starterware, but this is a very simple example and provides a Acount of 512 bytes, Bcount of 5 and Ccount 1. Since I need to transfer 1M words, I have to setup multiple buffers, so would like to get a more proper example for this, otherwise I have to figure out all the complexities by myself.

    One main issue is that how to configure for 16-bit transfer, what should be Acount,Bcount and Ccount for this. Also how to setup the buffers for 1Mx16 bit transfer?


    Regards,
    Nandan
  • Nandan,

    Sivaraj is always good at picking up on which device you are using. I did not see a device mentioned, but will go with his assumption that you are using the C6748. It will be helpful to know exactly which device you are using to avoid mistakes in some cases.

    Please go to the TI Wiki Pages and search for "c6748 training" (no quotes) to find the C6000 training material. You can get the whole workshop for download to go through the material, and you can go to Wiki Video links listed on that C6000 training material page.

    There are many parts of the C6748 that you need to understand better to be able to use it. You need to understand the EMIF, how it is configured and how you address devices that are connected to it. The training will mention the EMIF as an introduction, and you can refer to the TRM or User Guide for more information. It will also mentions the EDMA3 with some introductory and basic information to help you with your questions on A/B/C counts.

    You configure the EMIFA to work physically with your 16-bit SRAM. At that point it becomes a byte-addressable device, with logical addresses from the DSP being mapped by the EMIF to the physical addresses of the SRAM. To transfer 2M consecutive bytes from the SRAM to some other location simply requires the product of ACNT * BCNT to be 2M (such as ACNT=1024 and BCNT=2048); it is much easier if you leave CNT=1.

    Regards,
    RandyP