I've got 32-bit data coming in via the MCBSP (actually 24-bit from an ADC, but let's just call it 32-bit).
I'm trying to copy the data over via DMA. Currently, we're doing 16-bit transfers and it works.
It just feels a bit clunky.
I talked to a coworker who said she'd also tried switching the transfer to 32-bit and, like myself, got all zeroes.
Here's the relevant code from the DMA configuration:
DMACH3AddrConfig((volatile Uint16 *)&ext_adc_shadow, &McbspbRegs.DRR2.all); DMACH3BurstConfig(1,1,1); //Read 2 U16 words as 1 U32 DMACH3TransferConfig(10, 0xFFFF, 1); //Reading 11 (10+1) U32 words DMACH3WrapConfig(0xFFFF, 0, 0xFFFF, 0); //Don't wrap DMACH3ModeConfig( DMA_MREVTB, PERINT_ENABLE, ONESHOT_DISABLE, CONT_DISABLE, SYNC_DISABLE, SYNC_SRC, OVERFLOW_DISABLE, SIXTEEN_BIT, //THIRTYTWO_BIT YIELDS ZEROES CHINT_END, CHINT_ENABLE );
One other thing I should mention is that the data pushed to the buffer is endian-flipped. It's a simple fix, but we lose the speed advantage of using DMA. (Should we point instead to McbspRegs.DRR1, and step backwards? Will that work? EDIT: If so, I seem to be doing it wrong.)
Any suggestions?