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.

Moving 24 bit data in/out of x5509A McBSP in Clock Stop Mode, DMA or ISR's

 

I need a little help or explanation about using the McBsp in a x5509A DSP.

I am using the McBsp in clock stop mode and clocking out 24 bits to 2 slave devices. Both devices share the same chip select. One is
read only (A/D) and the other is a PLL which is write only.

I intend to use DMA to write values to the PLL and read ADC samples. I have tried eliminating the DMA and just used ISR's. I
also have tried 24 and 32 bit transfers.


My question is this, given the nature of how the data moves from the DR pin thru the shift registers/buffers and data
registers, how do you move the 24 bit samples via DMA into an array declared as a Uint32 and not have the data all mixed up?

I showed the data wrong

here is the correct observed data

Here is what I see on scope (this was 32 clock bits )
from ADC
MISO      000D 8000   3FFD C000    3FFB 4000    0012 C000   000B 8000

Thru a watch window here is what my array holds.
Uint32 Samples[5]

Ix 0 = 000D 8000
   1 = 8000 3FFD
   2 = 3FFD C000
   3 = C000 3FFB
   4 = 3FFB 4000



The behavior is the same for using just RX and TX ISR's and using DMA

What am I doing wrong or what piece of the puzzle am I missing? Can the McBsp move SPI data transfers greater then 16 bits with no data manipulation after
N number of packets sent?

Chris

  • I showed the data wrong

    here is the correct observed data

    Here is what I see on scope (this was 32 clock bits )
    from ADC
    MISO      000D 8000   3FFD C000    3FFB 4000    0012 C000   000B 8000

    Thru a watch window here is what my array holds.
    Uint32 Samples[5]

    Ix 0 = 000D 8000
       1 = 8000 3FFD
       2 = 3FFD C000
       3 = C000 3FFB
       4 = 3FFB 4000