tony tang:
我这里有个问题需要请教你,我是用C6748接入一个24bit的codec。
我们codec的24位左对齐格式,msb在前,32KHz频率输入。6748的mcasp接口按照这个格式进行配置,也是24bit、msb first、0bit delay。
现在接收的buf数据我down下来完全不是录进去的声音。
因为是每3个字节组成一组数据,数据排列是L0、R0、L1、R1、L2、R2,但是从rxbuf里面看不到任何规律。
请问唐工,24bit音频接入还需要注意什么?
Tony Tang:
为什么buf是Char型的?McASP数据寄存器或FIFO是以32bit形式访问的,无论时隙是24bit,还是其它。
taoyu:
回复 Tony Tang:
我们接收buf用的是一个char的数组,然后组合一下放到新的数组里面。之前接收16位的数据的时候就是这么做的。
for(i=0;i<160;i++){watch24 = *((char *)((void *)rxBufPtr[lastFullRxBuf])+6*i+0);watch16 = *((char *)((void *)rxBufPtr[lastFullRxBuf])+6*i+1);watch8 = *((char *)((void *)rxBufPtr[lastFullRxBuf])+6*i+2);TxIn[i+txinCnt*160] = watch24<<8|watch16;}
Tony Tang:
回复 taoyu:
对端的设备是什么?怎么象是用3个8bit合成一个24bit的slot。
为什么是6*i,而不是4*i 或8*i(McBSP的数据寄存器或FIFO是32bit访问)
taoyu:
回复 Tony Tang:
我们用的是6748接cs4272,一个24bit的codec,之前的codec用的是ti的aic3106和aic3204.这次是想做一个高信噪比的产品。
因为我EDMA 的param里面用的是char 类型的rxbuf接收数据,
按照我的理解 rxbuf里面数据排列{bit24 bit16 bit8、bit24 bit16 bit8 、bit24 bit16 bit8}我接收左或者右通道的数据,就需要每隔6个字节去接收。
Tony Tang:
回复 taoyu:
我理解的不是很明白,但感觉到你没有用32bit方式来用EDMA访问McASP,即Param里的最小单位应该为4 byte。
一个事件即一个slot,McASP从线上收下24bit数据到RBUF或者FIFO。 但EDMA需要配置成32bit,即ACNT=4(如果是用的A-synchronized方式)或4的倍数(如果是用FIFO)。
yu tao3我们用的是6748接cs4272,一个24bit的codec,之前的codec用的是ti的aic3106和aic3204.这次是想做一个高信噪比的产品。 因为我EDMA 的param里面用的是char 类型的rxbuf接收数据,按照我的理解 rxbuf里面数据排列{bit24 bit16 bit8、bit24 bit16 bit8 、bit24 bit16 bit8 }我接收左或者右通道的数据,就需要每隔6个字节去接收。
taoyu:
回复 Tony Tang:
仔细想了想应该是我理解错了,按照我的方式太麻烦了软件和硬件都不好对齐。
qiang chen10:
回复 Tony Tang:
我将该buffer32位的数据{bit24 bit16 bit8, empty8}取其16位,为什么每次数据都是负数
Tony Tang:
回复 qiang chen10:
qiang chen10我将该buffer32位的数据{bit24 bit16 bit8, empty8}取其16位,为什么每次数据都是负数
这是一个问题吗?Codec的数据是无符号型的吧。
taoyu:
回复 Tony Tang:
按照32bit的长度做了调整,直接用int类型去接收buf。但是描点后的数据和真实的声音差别还是非常大。我用matlab截取了64000个点,看上去还是随机的数据,我们检查了codec的配置
“The required relationship between LRCK, SCLK and SDOUT for the ADC is defined by the ADC Digital Interface Format.
ADC_DIF
Description
Format
Figure0
Left Justified, up to 24-bit data (default)
0
31
I2S, up to 24-bit data
1
4”其实很简单就是一个左对齐一个右对齐,左对齐的时候没有1 bit delay
Tony Tang:
回复 taoyu:
#1. DSP是做主还是从?
#2. 是根据CS4272手册上哪个图的时序配置的?
#3. EDMA的param set配置?