I've been reporting problems of one sort or another with both Tx and Rx on MCBSP devices for some time now, via e.g. SR# 1-656366934 SR# 1-659758215 SR# 1-664197881, but I have not been getting any answers for some weeks, and I cannot wait any longer. Apologies if this topic is already covered on here, I've read through approximately 25% of the postings but it's taking too long, so here goes. This problem report represents a crystallisation of a more generic problem that I'm having with MCBSP/DMA config.
I have a signal coming in to MCBSP3 such that CLKX is running at 24MHz and FSX is pulsing high for one clock period in every 48 clocks. The content of DRX consists of 32 bits of data per frame, the remaining 16 bit-times being irrelevant. I am specifying a single-phase frame (RCR2 d15 RPHASE=0).
The DMAs work 100% OK when I define the following :-
RCR1 d14:8 RFRLEN1 000 0000 1 word per frame
RCR1 d7:5 RWDLEN1 101 32 bits per word
CSDP d1:0 DATA_TYPE 10 32 bits per word
CEN d23:0 CHANNEL_ELMNT_NBR 0000 0000 0000 0000 0000 0001 1 word per frame
The actual values written to the registers for this successful config are :-
RCR2 = 00000000
RCR1 = 000000A0
CSDP = 00010002
CEN = 00000001
If I change the definitions to the the following, it fails horribly :-
RCR1 d14:8 RFRLEN1 000 0001 2 words per frame
RCR1 d7:5 RWDLEN1 010 16 bits per word
CSDP d1:0 DATA_TYPE 01 16 bits per word
CEN d23:0 CHANNEL_ELMNT_NBR 0000 0000 0000 0000 0000 0010 2 words per frame
The actual values written to the registers for this unsuccessful config are :-
RCR2 = 00000000
RCR1 = 00000140
CSDP = 00010001
CEN = 00000002
The failure mode is that the first DMA works OK but then there is an error callback partway through the second DMA period, with status 0x0042, which means :-
d6 SYNC=1: Logical channel is servicing a synchronized DMA request d1 DROP=1: A synchronization collision has been occurred [SPRUF98 wording!] DMAs then usually cease (though I've been able to provoke continuous repeats of the above behaviour by reducing the speed at CLKX).
Note that there are *NO* other changes in either the software or the input data stream. If I define the data structure to both the MCBSP and the DMA as 1 word of 32 bits, it works. If I define the data structure to both the MCBSP and the DMA as 2 words of 16 bits, it fails.
Please tell me why this is happening and identify the fix - I am completely held up on my deliverable. :-(
Cheers,
Mike