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.

DM6467 McASP + TLV320AIC32

Genius 4530 points
Other Parts Discussed in Thread: TMS320DM6467, TLV320AIC32

Hi,

I am trying to interface an audio codec TLV320AIC32 with TMS320DM6467 using McASP controller.

I have successfully tested the audio codec analog loopback mode by writing to its registers using I2C.

Now, I am trying to send a sine wave table to the input of codec and subsequently to Line Out.

A line in the datasheet of codec slightly confuses me,

To access through the dataport, simply have the CPU or DMA access the XRBUF through its data port location.

where, XBUF data port has address = 0x01D01400

and XBUF0(for transmitter) has address = 0x01D01200.

SO where am I exactly supposed to write the data?

Is this the appropriate format?

*(Int16*)(MCASP0_DATA) = *(data_address);
 delay(i);
 *(Int16*)(ASP0_TX_BUF_REG0) =  *(Int16*)(MCASP0_DATA);    
 

or should I access, DATA PORT or XBUF0 register individually?

I am using CCS3.3 to write the code on a custom board consisting of DM6467.

Thanks and Regards,

Sidharth

 

  • Hi Sidharth,

    To transfer data using the data port, the DMA address is 0x01d01400. This will cycle through all the serailizers which are active and are configured to transmit data.

    Selection of data port/configuration bus is decided by the XBUSEL bit in XFMT register. By default this bit is zero and hence data port is accessed.

    The DMA address/CPU writes should be to the XBUF register in this case.

    Regards,

    Chaithrika

     

  • Hi Chaithrika,

    Thanks for your reply.

    So, as suggested by me in the earlier post, i have set XBUSEL = 0 for accesses using data port.

    But the confusion is whether the CPU writes should be like one of the following three -

    1.) Write to data port (0x01D01400) and it gets automatically copied to XBUF0 <-> Serializer 0 (0x01D01200)

    2.) Write to data port (0x01D01400) and then manually copy it  to XBUF0 <-> Serializer 0 (0x01D01200) after taking serializer out of reset.

    3.) write to XBUF0 (0x01D01200) directly.

    Actually, I am getting transmit Underrun error each time I implement my code saying that data has not been copied to XBUF to be serviced by serializers. So I am not sure which of the above 3 steps need to be followed to ensure that data gets written to XBUF.

    Thanks and Regards,

    Sidharth