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.

McBSP strange thing

Other Parts Discussed in Thread: OMAP3530

I've got OMAP3530. I have to transfer data using frames (each frame consists of n words). Each frame starts with 'frame_sync ' .
Analog_loopback bit is turned on / enabled (?) for debugging.
A strange thing happens when I transfer data in DXR. XRDY bit always equals to 1.
When I write data in DXR I notice that at the output of the port N data materials appear (I mean, data is repeated N times, where N = XCR.XDRLEN1)
Also in this case I cannot send data successively and it's gonna be outputted N times.
That is the code:
while (((CHKBIT_REGL(ulModule MCBSPLP_SPCR2_REG, SPCR2_XRDY))))OUT_REGL(ulModule MCBSPLP_DXR_REG, i );

in this case it will perform perennially!!!
Herewith, it will be available to observe the correct value of i repeated N times on the oscilloscope. MCBSPLP_XBUFFSTAT_REG register has always been 0x80.
MCBSPLP_RBUFFSTAT_REG register increases on N each time.
N =FRAME1_LENGTH;
Can anyone explain such f*cking behaviour?
How to send N different numbers in one frame?
The configuration and log are shown below:

RCR2: 0x00a0
RCR1: 0x03a0
XCR2: 0x00a0
XCR1: 0x03a0
SRGR2: 0x10ff
SRGR1: 0x09c8
PCR0: 0x0a01
SPCR2: 0x00c3
SPCR1: 0x8003
XCCR: 0x1000
RCCR: 0x0000
irq status: 0x4f0e
irq enabele: 0x0000

log :
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000001
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000009
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000010
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000018
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000020
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000028
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000030
sent =: 0x00000001
XBUFSTAT=: 0x00000080
RBUFSTAT=: 0x00000038
  • Hi Sergey,

    Could you check the configuration of the MCBSPLP_XCR1_REG register? Your value is 0x03a0. As I see you set 3 to the XFRLEN1 field but according the TRM this value is reserved. Could you change it to one of the allowed values (I advice you to use 1 word per frame - "000 0000b"):

    XFRLEN1:

    Transmit Frame Length 1
    Single-phase frame selected:
    XFRLEN1=000 0000 - 1 word per frame
    XFRLEN1=000 0001 - 2 words per frame
    XFRLEN1=111 1111 - 128 words per frame
    Dual-phase frame selected:
    XFRLEN1=000 0000 - 1 word per phase
    (other values are reserved)

    Let me know is this solve the issue.

    BR

    Tsvetolin Shulev