1 项目功能描述:采集语音,通过CC2541蓝牙传送到另一蓝牙主机,再通过USB传送给PC,PC上再将收到的语音合成为音频文件。
2 配置描述:采用TLV320ADC3101芯片,8K/16bit采集频率,MCLK为CC2541定时器提供的4M,通过SPI接口通讯,TLV320ADC3101
问题描述:
1 TLV320adc3101 用户手册的79页写着: 在所有的应用中,AOSR的范围限制在:2.8MHZ<AOSR*ADC_FS<6.2MHZ 我现在采样只需要采样频率为8K,那么就算AOSR设置到255,也到不了这个范围,难道根本就不支持8k/16bit的采样采样吗?那为何手册中提到采集频率可以从8K-96K?或者说音频采集频率不是所指的ADC_FS吗?
2 TLV320ADC3101里面音频输出是实时的还是内部有RAM缓存?每采集一次,数据直接输出,还是缓存到RAM中?
3 TLV320ADC3101中是通过ADPCM压缩过的吧?那么采集频率8K,如果压缩比是4:1那么芯片的WCLK字频率应该远小于8K才对吧?但我配置后发现wclk是每 125us输出一个脉冲,为何输出的字时钟和采集频率相同,难道没有经过任何压缩吗?
4 我配置BCLK为2M时钟频率输出,但BCLK是持续的输出,为何不是有数据的时候才有输出呢?并且WCKL是一个脉冲宽度就变成了低电平,即使同步了前面几个字节,那么后面的数据怎么不让控制芯片的SPI接收都是问题。否则CC2541的SPI接口不停的收到高达4M频率的数据,都无法处理过来。
5 配置后,发现MICBIAS1依旧是低电平没有2V输出。 使用的是模拟话筒,IN2R输入单声道。DOUT引脚也一直是低电平,没有任何数据。
配置如下:
tmp[1]=0x00;
HalI2CWrite(0X18,2,tmp); //设置到 page0
tmp[0]=1;
tmp[1]=0x01;
HalI2CWrite(0X18,2,tmp); //reset
delay_us(1000);
tmp[0]=4;
tmp[1]=0x00;
HalI2CWrite(0X18,2,tmp); //codec_clkin=mckl
tmp[0]=5;
tmp[1]=0x11;
HalI2CWrite(0X18,2,tmp); //pll off
tmp[0]=18;
tmp[1]=0x81;
HalI2CWrite(0X18,2,tmp); //nadc
tmp[0]=19;
tmp[1]=0x85;
HalI2CWrite(0X18,2,tmp); //madc
tmp[0]=20;
tmp[1]=100;
HalI2CWrite(0X18,2,tmp); //aosr
tmp[0]=21;
tmp[1]=188;
HalI2CWrite(0X18,2,tmp); //iadc
tmp[0]=26;
tmp[1]=1;
HalI2CWrite(0X18,2,tmp); //clock out m off
tmp[0]=27;
tmp[1]=0x4c;
HalI2CWrite(0X18,2,tmp); //dsp,wclk bclk out
tmp[0]=28;
tmp[1]=0;
HalI2CWrite(0X18,2,tmp); //slot
tmp[0]=29;
tmp[1]=6;
HalI2CWrite(0X18,2,tmp); //bd=adcclk
tmp[0]=30;
tmp[1]=0x82;
HalI2CWrite(0X18,2,tmp); //bclk n
tmp[0]=81;
tmp[1]=0x40;
HalI2CWrite(0X18,2,tmp); //
tmp[0]=0;
tmp[1]=0x01;
HalI2CWrite(0X18,2,tmp); /t to page1
tmp[0]=51;
tmp[1]=0x20;
HalI2CWrite(0X18,2,tmp); //b2=2v
tmp[0]=0;
tmp[1]=0x00;
HalI2CWrite(0X18,2,tmp); /t to page0
麻烦高手帮我解答下,非常感谢!!!