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.

7.1声道实现 -- McASP配置

您好,@ 


新开一个帖子。感谢你的答复,之前在 www.deyisupport.com/.../104471.aspx


我的目标就是实现 7.1声道,即4个AXR同时输出数据。

我的程序原来是 I2S_SLOTS=2 ,一个AXR引脚输出立体声,是成功的。


现在修改: 使能4个AXR引脚,XTDM = 0x000000FF; DMA aCnt*4。


问题:

1、 修改后AXR没有输出,请问配置是有问题吗?

2、能否给出配置实现7.1声道的思路或参考文档。

我把程序附件加上,期待您的回答。

  • 只是SRCTLn相应的使能4个就行了,其它跟原来的一个I2S一样,然后DMA的配置是一个ACNT=elementSize*4.

    你的XTDM配置的不对,还是2个slot。

  • Hello, Tony Tang 

    感谢回答。

    经过修改,每个AXR都有输出了。 

    有个问题确认下,DMA是每次在内存地址取8个字,然后再依次按2个字分配到每个AXR吗?

  • 是的。准确的说是4个element,我想你上面说的8个是笔误,应是8个字节

    为了防止其它人看这个贴子误解,多说一句,DMA跟McASP没有必然联系,DMA怎么配是根据需要来的,这里是4个serializer,每个element是16bit,所以配置成一个体event取8个字

  • Hello, Tony Tang 


    原程序,1个AXR输入,1个AXR输出。 slot size = 32, word size =16, ACNT=4。工作正常。


    我将程序修改为输入数据复制4份到4个AXR输出,但是输出数据不对。

    程序修改了:使能了4个serializer,ACNT=4*4,发送数据数组扩大4倍。

    复制数据大概流程是:

    unsigned int txBufPtr[SIZE*4],rxBufPtr[SIZE];

    for(i=0;i<SIZE;i++){

    txBufPtr[4*i] = rxBufPtr[i];

    txBufPtr[4*i+1] = rxBufPtr[i];

    txBufPtr[4*i+2] = rxBufPtr[i];

    txBufPtr[4*i+3] = rxBufPtr[i];

    }

    然后再发送txBufPtr,长度参数不修改。

    4个AXR输出数据错乱了,是我哪修改错了吗? 期待您的答复。

  • 是不是收到数据再复制给发送buffer, 这时发送underrun了。EDMA还能一直动吗?

  • AXR引脚上是有输出的,而且输出波形看起来是相同的。

    另外,Time slot size=32,word size =16,那么 txbuf[] 的最小单位是4个字节吧?

  • Hello, Tony Tang

    我把 word、slot size等全修改为 32bit,不同AXR发送特定的数据(如0x0000FFFF/0x00000000)来观察,每个AXR上的数据不同。

    发现所有的输出都是相同的。这是咋了?搞不定,求助。

  • 搞定了,ACNT 和 源bIdx 都要设置。

x 出现错误。请重试或与管理员联系。
x 出现错误。请重试或与管理员联系。