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

请教个关于TLV320ADC3101配置问题,实在搞不定了…

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[0]=0; 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

麻烦高手帮我解答下,非常感谢!!!

wu paul:

原厂工程师对我们这些小问题不屑于顾,真的让人感到冷漠!

研究了几天后,完全搞定了。

这颗芯片,仅仅是个PCM采集,AD转换的芯片,设定采集频率后,输出PCM数据。内部没有缓存,没有压缩算法,要实现压缩,需要用户自己在外加的处理器里面做压缩。

配置这颗芯片如果采用外加MCU的方法,建议使用左对齐方式,如果使用单声道采集的应用,MCU采用SPI接口,那么MCU作从机,语音芯片作主机,WCLK输出片选信号,BCLK输出时钟。配置寄存器让要采集的声道在wclk的低电平时段即可。

没有数据输出,或者输出都是0的情况下,完全按照手册上的寄存器配置一遍,注意不要偷懒,里面的左右增益控制,连接控制,音量控制,AGC控制,等某个没配置就会导致没输出。所以不要偷懒。

当出现没有声音的时候,输出的数据很大,记得有个寄存器是关闭AD通道弱上啦的,一定要关闭,否则就出现没有输入输出数据的值很大。

配置的时候,找个逻辑分析仪,连接到语音芯片的WCLK  BCLK  DOUT ,调节分频值等配置,可以将输出格式调整到完全满足SPI的要求。

我的调试心得,就给大家一点点帮助建议吧!第一次使用这芯片做项目的同学,少走弯路,免得没人鸟你!

Gary Guo:

回复 wu paul:

您好,很感谢您对论坛的技术支持,如您有什么问题,您可以上我们英文版的论坛e2e,会得到更多的工程师的帮助。

Alon SHAW:

回复 Gary Guo:

你的回答就是个笑话

赞(0)
未经允许不得转载:TI中文支持网 » 请教个关于TLV320ADC3101配置问题,实在搞不定了…
分享到: 更多 (0)