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.

32-bit DMA transfer from MCBSP on 28335?

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?

  • Dean,

    The F2833x McBSP does not support 32-bit DMA transfers.  This is documented in the datasheet, SPRS439M, section 4.1.  It says:

    Word Size: 16-bit or 32-bit (McBSPs limited to 16-bit)

    You have to use 16-bit transfers.

    Regards,

    David