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.

C6657 McBSP send error

DSP C6657 uses McBSP to send data to ZYNQ 7020.

Does McBSP require that the receive device handle its buffer? Or DSP C6657 just sends data freely?

In the attachment, DSP tries to send 256 bytes, but only stops at 68 byte, and we see Registers as below:

C6657_MCBSP0_REG_SPCR=00CD0000
C6657_MCBSP1_REG_SPCR=00CF0000

XSYNCERR?

After a while, DSP finishes all 256 bytes, but I wonder why?

Thanks.

TestC6657McBSP_20160808.rar

  • Hi,

    Have a look at the bellow e2e thread:
    e2e.ti.com/.../1627924

    It deals with a similar problems and could be useful in your case.

    For both MCBSP0 & MCBSP1 XRST=1 (SPCR=00CD0000 & SPCR=00FD0000).
    Can you verify the sequence described in www.ti.com/.../spruhh0.pdf section 2.7.5.5 Unexpected Transmit Frame Synchronization: XSYNCERR, in your code:
    //6c Disable the transmitter (XRST = 0). This clears any outstanding XSYNCERR.
    // McBSP0
    {
    // clear XRST bit in SPCR
    tempReg = C6657_MCBSP0_REG_SPCR;
    tempReg &= 0xfffeffff;
    C6657_MCBSP0_REG_SPCR = tempReg;
    for(iCounter=0; iCounter<200; iCounter++);
    }
    // McBSP1
    {
    // clear XRST bit in SPCR
    tempReg = C6657_MCBSP1_REG_SPCR;
    tempReg &= 0xfffeffff;
    C6657_MCBSP1_REG_SPCR = tempReg;
    for(iCounter=0; iCounter<200; iCounter++);
    }

    try reading the XRST bit after setting C6657_MCBSPx_REG_SPCR to 0, to see if you're actually resetting the transmit.

    Best Regards,
    Yordan