TI中文支持网
TI专业的中文技术问题搜集分享网站

mcasp音频解码的一个问题?

Hi all:

这是我们公司一个音频的项目,用的omap-138+一块音频codec

1. mcasp是标准I2s协议,2个声道。DSP做主时钟,数据,同步三个信号内部生成给codec;

2. codec的有效数据是左对齐,时长16个bit,没有延时位;codec的时序如下

上电调试的时候用逻辑分析仪抓取,coedc工作,左对齐,0bit delay,上升沿触发。

我DSP的配置是DSP做主。发送帧X是下降沿触发,位时钟下降沿触发。

但是接收的数据描点后非常奇怪,都是这样的数据不论怎么调音量都不变。

我们公司这个项目之前用的是ti的aic3106做codec,也是mcasp模块进行接收发送,用到了DMA,音乐播放采集都很正常。唯一不同就是之前是codec做主,DSP做从。

请问一下ti的工程师我的配置那里有问题。

这个问题我已经在6748单核和音频两个模块都发帖了,但是一直没有人回复请ti的工程师支持一下。我觉得可能就是那个点没有考虑到。

Shine:

请问换了什么codec,是否和AIC3106一样?如果新的code主,dsp做从也有类似的问题吗?

taoyu:

回复 Shine:

换了logic circus的cs4272,新的codec做不了主,只能外部输入主时钟和位时钟、帧时钟。

taoyu:

回复 Shine:

刚才想了一下,如果我现在用DSP做主,3106做从这样和新的codec对比看看DMA接收的数据。如果3106做从的话是不是只需要把主时钟MCLK接入修改为输入并从硬件引入,bclk和wclk也修改为输入,另外采样频率是否可以不用设置了。我查了一下3106的slave mode,好像只要把bclk和wclk的方向改成input就可以了。

taoyu:

回复 Shine:

我换了DSP做主,3106做从。播放和录音都是正常的,不过3106有1bit的延时,我在写新codec驱动的时候是注意到这一点的。

Shine:

回复 taoyu:

dsp这边也设成0bit 延时了吗?

taoyu:

回复 Shine:

void McASPRxFmtI2SSet(unsigned int baseAddr, unsigned int wordSize, unsigned int slotSize, unsigned int rxMode){ /* Set the mask assuming integer format */ McASPRxFmtMaskSet(baseAddr, (1 << wordSize) – 1);

/* Set the receive format unit for I2S */ McASPRxFmtSet(baseAddr, (MCASP_RX_PAD_WITH_0 | MCASP_RX_BITSTREAM_MSB_FIRST | MCASP_RX_SYNC_DELAY_0BIT | (wordSize >> 2) | ((slotSize/2 -1) << MCASP_RFMT_RSSZ_SHIFT) | rxMode));}

这个我一上来就改了,之前邮件也说了。我看手册的时候特别注意了左右对齐和延时的问题。

user4755476:

想问问楼主,你们是怎么接受双声道的数据的?AFSX/R的的有效沿只能设置一种吧,还是你是把左右声道一起接受,后面再自己分离?

taoyu:

回复 user4755476:

mcasp接收的数据就是一左一右的,DSP处理一下就把两个声道分开了。如果DSP作为主设备的话,AFSX/R这个应该是相反吧,接收和发送设置的边沿触发应该是反的,手册里面我记得说过。

user4755476:

回复 taoyu:

没有,是时钟的有效沿是反的,帧同步的是没反的,所以你每一帧是接收32bit是吗?然后DSP再把数据高低位分开?

taoyu:

回复 user4755476:

对,我是高16bit,低16bit分开解析的。

赞(0)
未经允许不得转载:TI中文支持网 » mcasp音频解码的一个问题?
分享到: 更多 (0)