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.

C6727 Mcasp && dMAX configuration

Other Parts Discussed in Thread: TMS320C6727B

I'm developing my Audio Processing system by TMS320C6727B, and I have a special requirement for the Audio received from McAsp port, but I'm not sure if the "dMAX + McAsp" can meet my requirement.

The audio data is 32bit length received by McAsp port, but only the high 16 bit data is useful, So I just want to transfer the high 16 bit data from McAsp port to My local memory by dMAX, I can do this on TMS320C6713 Chip, but with C6727,  I got all zero data except the first 16bit data.  what's the problem? Does C6727 support this operation?

  • Hi Ming,

    Thanks for your post.

    Have you set the XDMAERR/RDMAERR flags in the XSTAT/RSTAT register? If not, please try setting to assert any transmit/receive DMA error if any? Please refer sections 3.3.2, 3.6.4 & 3.6.5 in the C672x McASP reference guide as below:

    http://www.ti.com/lit/ug/spru878b/spru878b.pdf

    Note: To perform internal transfers through the dMAX port, clear XBUSEL/RBUSEL bit to 0 in the respective XFMT/RFMT registers. Failure to do so will result in software malfunction.

    Thanks & regards,

    Sivaraj K

    ------------------------------------------------------------------------------------------------------
    Please click the Verify Answer button on this post if it answers your question.
    ------------------------------------------------------------------------------------------------------

  • Hi Sivaraj,

    Actually, I can get the data correctly when I set the dMAX transfer size to 32bit, that means, 32bit data received by McASP port and then transfered to my local memory by 32bit dMAX operation.

    But what I want is only transfer the high 16 bit data from the received 32bit data to my local  memory, means 32 bit data received by McASP port and then transfer to my local memory by 16bit dMAX operation.

    My changes for this operation: set the dMAX esize from 32bit to 16bit and set the Mcasp RROT bits from 0 to 4 , keeped all address seting unchanged, and the code can entered the dMAX completion interrupt correctly, but I got all zero data in my memory except the first 16bit data.

    By the way, I already set the RBUSEL bit to 0, and did not find any  XDMAERR/RDMAERR flag set in the RSTAT/XSTAT register.