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.

Delfino C28346 Experimenter's Kit - Issue with Example Code & XINTF Zone 7

Other Parts Discussed in Thread: SPRC876

I am running the example program "Example_2834xDMA_xintf_to_ram" on the C28346 Experimenter's Kit using CCS 4.02 MCU Ed with a XDS100v2.  Here is the description of the example code:

// DESCRIPTION:

// Code will perform a block copy of 1024 words from Zone 7 XINTF (DMABuf2)

// to L2 SARAM (DMABuf1) .

// Transfer will be started by Timer0.

// We will use 32-bit DMA datasize.  Note this is independent from the XINTF

// data width which is x16. Code will end in local_DINTCH1_ISR once the transfer is

// complete

Specifically, I am having issues with DMAbuf2 (in Zone 7 connected to the 2 SRAM chips).  When data is initially written to DMAbuf2, it writes the same data to 2 elements in this array during 1 cycle.  Then on the next cycle, it over-writes these 2 elements with the next 2 data entries.  However, when I change the XINTF to a 32-bit bus from a 16-bit bus, this problem does not appear.  The two snap shots below illustrate this issue better.  The 1st snapshot shows the line of code I am talking about and the 2nd snapshot shows the watch window where the data entries are 1,1,3,3... when they should be 0,1,2,3,4....  

The lower 16 bits of the data bus are connected to one of the SRAM chips and the higher 16 bit of the data bus are connected to the other SRAM chip on the c28346 control card.


Thanks for the help,

Jake

  • Jake said:
    Specifically, I am having issues with DMAbuf2 (in Zone 7 connected to the 2 SRAM chips).  When data is initially written to DMAbuf2, it writes the same data to 2 elements in this array during 1 cycle.  Then on the next cycle, it over-writes these 2 elements with the next 2 data entries.  However, when I change the XINTF to a 32-bit bus from a 16-bit bus, this problem does not appear.  

    Jake,

    The bus size of the XINTF determines how many data lines are being used and whether there is one write strobe or two.  The connections to the external RAM are different if you are using x16 or x32 mode as shown in the attached image.  It sounds like your hardware has RAM connected in a x16 configuration - that is 16 data lines and one write strobe are used, and the other 16 are not connected.

    Note: you can still do 32-bit accesses even if the XINTF is in x16 mode.  The XINTF will just split it up into two accesses automatically - one for the low half and one for the high half.

    -Lori

     

  • Lori,

    Thanks for your response but it doesn't completely answer my question.  I understand that the 2 external RAM chips on the control card are connected with a 16-bit data bus.  However, I do not understand why 2 elements of the array DMABuf2 are written to when line 138 is executed (of the example code I posted)?  (DMABuf2 is addressed to be on one of the external ram chips)

    In the pictures I posted, when this line of code is executed:

    DMABuf2[i] = i;    

    the watch window shows that 2 entries of the array DMABuf2 have been written to:

    DMABuf2[4] = 4;

    DMABuf2[5] = 4;

    On the next cycle of the "for" loop, the watch window will show this:

    DMABuf2[4] = 5;

    DMABuf2[5] = 5;

    You can see this pattern from looking at DMABuf2[0], DMABuf[1] ...

    Why does this line of code write to 2 elements of DMABuf2?  It should write only 1 line at a time.

    This is the example program "Example_28346xDMA_xintf_to_ram" found at   http://www.ti.com/litv/zip/sprc876

    Thanks,

    Jake

  • Jake,

    Jake said:
    Thanks for your response but it doesn't completely answer my question.  I understand that the 2 external RAM chips on the control card are connected with a 16-bit data bus.  

    Looking at the schematics, the RAM is connected in a x32 fashion on zone 7.

    In this configuration address line XA0 is a not used.    So if you change the XINTF to x16 all even and odd word locations  will look the same.

    Regards

    Lori