您好:
我现在使用TLVADC3101采集音频数据,i2s接口立体声模式,ADC3101作为i2s主设备,采样率48Khz,数据长度16bit,DSP作为从设备,通过DMA方式采集,使用CSL库,
ADC3101配置如下
ADC3101_rset(ADC3101_I2C_ADDR_2, 27, 0x0d ); // BCLK and WCLK are set as o/p; AIC3204(Master)
ADC3101_rset(ADC3101_I2C_ADDR_2, 28, 0x00 ); // Data ofset = 0
ADC3101_rset(ADC3101_I2C_ADDR_2, 4, 0x03 ); // PLL setting: PLLCLK <- MCLK, CODEC_CLKIN <-PLL CLK
ADC3101_rset(ADC3101_I2C_ADDR_2, 6, 0x08 ); // PLL setting: adc3101 J=8
ADC3101_rset(ADC3101_I2C_ADDR_2, 7, 0x07 ); // PLL setting: HI_BYTE(D=1920)
ADC3101_rset(ADC3101_I2C_ADDR_2, 8, 0x80 ); // PLL setting: LO_BYTE(D=1920)
ADC3101_rset(ADC3101_I2C_ADDR_2, 30, 0x88 ); // For 32 bit clocks per frame in Master mode ONLY
ADC3101_rset(ADC3101_I2C_ADDR_2, 5, 0x91 ); // PLL setting: Power up PLL, P=1 and R=1
ADC3101_rset(ADC3101_I2C_ADDR_2, 20, 0x80 ); // AOSR for AOSR = 128 decimal or 0x0080 for decimation filters 1 to 6
ADC3101_rset(ADC3101_I2C_ADDR_2, 18, 0x88 ); // Power up NADC and set NADC value to 8
ADC3101_rset(ADC3101_I2C_ADDR_2, 19, 0x82 ); // Power up MADC and set MADC value to 2
DSP端具体设置如下,I2S接口配置:
hwConfig.dataType = I2S_STEREO_ENABLE;
hwConfig.loopBackMode = I2S_LOOPBACK_DISABLE;
hwConfig.fsPol = I2S_FSPOL_LOW;
hwConfig.clkPol = I2S_RISING_EDGE;
hwConfig.datadelay = I2S_DATADELAY_ONEBIT;
hwConfig.datapack = I2S_DATAPACK_ENABLE;
hwConfig.signext = I2S_SIGNEXT_DISABLE;
hwConfig.wordLen = I2S_WORDLEN_16;
hwConfig.i2sMode = I2S_SLAVE;
hwConfig.FError = I2S_FSERROR_ENABLE;
hwConfig.OuError = I2S_OUERROR_ENABLE;
DMA配置:
Int16 i2sDmaReadLeftBuff_U16[CSL_I2S_DMA_BUF_LEN] = {0X00};
dmaConfig_i2s2_lx.pingPongMode = CSL_DMA_PING_PONG_DISABLE;
dmaConfig_i2s2_lx.autoMode = CSL_DMA_AUTORELOAD_ENABLE;
dmaConfig_i2s2_lx.burstLen = CSL_DMA_TXBURST_1WORD;
dmaConfig_i2s2_lx.trigger = CSL_DMA_EVENT_TRIGGER;
dmaConfig_i2s2_lx.dmaEvt = CSL_DMA_EVT_I2S2_RX;
dmaConfig_i2s2_lx.dmaInt = CSL_DMA_INTERRUPT_ENABLE;
dmaConfig_i2s2_lx.chanDir = CSL_DMA_READ;
dmaConfig_i2s2_lx.trfType = CSL_DMA_TRANSFER_IO_MEMORY;
dmaConfig_i2s2_lx.dataLen = CSL_I2S_DMA_BUF_LEN*2;
dmaConfig_i2s2_lx.srcAddr = (Uint32)&(hI2s->hwRegs->I2SRXLT0);
dmaConfig_i2s2_lx.destAddr = (Uint32)i2sDmaReadLeftBuff_U16;
现在遇到问题,当采样数据信号频率为3khz,6khz的正弦信号时,通过ccs的graph查看波形为连续的正弦波信号,如图1 3k
当采样的数据信号频率为其他频率时(比如2k,4khz),看到的是不连续的正弦信号如下图2 4khz
有人能确定问题所在吗?是DSP端配置问题还是ADC3101端配置的问题?谢谢
