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

aic3106的初始化,请问技术支持。

       请问一下技术支持

       我前一个帖子写了目前初始化aic3106的步骤,没有人回复我这里再简化一点提问题。

http://www.deyisupport.com/question_answer/analog/audio/f/42/p/120920/352176.aspx#352176

      我们的逻辑结构是这样的,接了2路单声道的mic信号到line1的左右通道,然后通过LOUT和ROUT输出。

      目前经过配置目前主时钟,位时钟,帧时钟都是正常的。但是DOUT和DIN没有数据。

      lin1配置的是19和22寄存器。

      LOUT ROUT配置的是82 86 92 93寄存器。

      我目前的疑问是,输入的两路信号都是mic接入的,我寄存器是否要配置成mic,但是数据手册里面没有mic1L和mic1R在哪里设置。还是mic1L/line1L是一个意思?

Kailyn Chen:

mic1L/line1L并不是一个意思,而是说输入既可以是mic输入,也可以是line 输入,不需要进行配置,如果说mic和line同时输入,但是内部的多路选择只能处理一路的话,这种情况就需要进行配置,比如通过寄存器配置多路选择器选择的是mic还是line。

taoyu:

回复 Kailyn Chen:

谢谢指点,我还想问一下我现在设计的电路是两个独立的音源一个是mic采集进来的,另外一个是电脑放音进入。这两路信号分别作为左右声道进入。按照你的意思我对line1和line2的配置是0x04.也就是直接使能就行了“

1: Left ADC channel is powered up”

但是,我刚才重新读了reg19和reg22,返回的是0x78,

1111: LINE1L is not connected to the left ADC PGA

也就是line1L没有连接到left ADC。我确认我的IIC总线没有问题,前面修改采样率,从逻辑分析仪上看也是正确的。这就有点摸不着头脑了。

Kailyn Chen:

回复 taoyu:

Reg22 的bit[6:3]=1111指的是LINE1R is not connected to the right ADC PGA,不是LINE1L。

那你现在的意思就是LINE1R实际接的是mic输入,但是寄存器配置下来反而Reg22 为1111,因此需要核实一下是否需要配置mic或line input。

但mic或line输入是不需要配置的。输入可以是line也可以是mic。

是不是寄存器没写进去?

taoyu:

回复 Kailyn Chen:

谢谢你!

这也是我比较困惑的地方,LINE1L和LINER都是0x78 ,也就是都没有连接到左右ADC上。但是我reset芯片 设置采样率都是可以的。我用的是stareware的库函数进行操作的,暂时没发现其他的问题,难道是读函数有问题我再确认一下?我在官网上找了一下,有3204 3206的操作说明和示例但是没有3106的。不知道有没有TLV320AIC3106 Application Reference Guide的pdf文档。

mark huang4:

楼主能不能贴下初始化时钟的代码,我这边配置时钟,只配置到MCLK,而BCLK配置始终没有变化,多谢了~    QQ:120654248  我们做视频跟踪,可以一起交流学习下。

taoyu:

回复 mark huang4:

我这里初始化的代码是这样的: 我的采样率设置的是48KHz 工作模式是ADC和DAC都设置了。你对照看一下分频的那几个寄存器你设置的对不对

unsigned char pllPval = 4u; unsigned char pllRval = 1u; unsigned char pllJval = 16u; unsigned short pllDval = 0u;

// 采样率参数选择 switch(sampleRate) { case 8000: fs = 0xAAu; break;

case 11025: fs = 0x66u; ref = 0x8Au; pllJval = 14u; pllDval = 7000u; break;

case 16000: fs = 0x44u; break;

case 22050: fs = 0x22u; ref = 0x8Au; pllJval = 14u; pllDval = 7000u; break;

case 24000: fs = 0x22u; break; case 32000: fs = 0x11u; break;

case 44100: ref = 0x8Au; fs = 0x00u; pllJval = 14u; pllDval = 7000u; break;

case 48000: fs = 0x00u; break;

case 96000: ref = 0x6Au; fs = 0x00u; break;

default: fs = 0x00u; break; }

//mode = 0xFFu fs =0

temp = (mode & fs);

// 设置采样率 I2CRegWrite(baseAddr, AIC31_P0_REG2, temp); I2CRegWrite(baseAddr, AIC31_P0_REG3, 0x80 | pllPval);

// 使用 PLLCLK_IN 作为 MCLK I2CRegWrite(baseAddr, AIC31_P0_REG102, 0x08);

// 使用 PLLDIV_OUT 作为 CODEC_CLKIN I2CRegBitClr(baseAddr, AIC31_P0_REG101, 0x01);

// GPIO1 选择输出分频后的PLL IN I2CRegWrite(baseAddr, AIC31_P0_REG98, 0x20);

temp = (pllJval << 2); I2CRegWrite(baseAddr, AIC31_P0_REG4, temp);

// 初始化 PLL 分频寄存器 I2CRegWrite(baseAddr, AIC31_P0_REG5, (pllDval >> 6) & 0xFF); I2CRegWrite(baseAddr, AIC31_P0_REG6, (pllDval & 0x3F) << 2);

temp = pllRval; I2CRegWrite(baseAddr, AIC31_P0_REG11, temp);

// 使能编解码器作为主机用于输出fs 和 bclk I2CRegWrite(baseAddr, AIC31_P0_REG8, 0xD0);

I2CRegWrite(baseAddr, AIC31_P0_REG7, ref);

mark huang4:

回复 taoyu:

真是见鬼了,我照你的配BCLK还是没有变化。

taoyu:

回复 mark huang4:

你有没有复位芯片啊。我这边上电之后软件硬件都复位了一次。

mark huang4:

回复 taoyu:

当然啊,软硬件都是复位的,我跑海思项目的一个应用bclk有变化,然后我把那寄存器值读出来再复位全写进去,居然bclk依然没变化?太奇怪了。

赞(0)
未经允许不得转载:TI中文支持网 » aic3106的初始化,请问技术支持。
分享到: 更多 (0)