你好,我现在遇到一个问题,我可以采集到芯片内部发出的数据,但是采集不到麦克风的输入信号
这是我驱动里面寄存器的配置
tlv320aic31_write(IIC_device_addr[chip_num],3,0×91);
tlv320aic31_write(IIC_device_addr[chip_num],4,0×20);
tlv320aic31_write(IIC_device_addr[chip_num],5,0x1E);
tlv320aic31_write(IIC_device_addr[chip_num],6,0×00);
tlv320aic31_write(IIC_device_addr[chip_num],7,0×00);
tlv320aic31_write(IIC_device_addr[chip_num],8,0xf0);
tlv320aic31_write(IIC_device_addr[chip_num],9,0×00);
tlv320aic31_write(IIC_device_addr[chip_num],11,0×01);
tlv320aic31_write(IIC_device_addr[chip_num],19,0×80);
tlv320aic31_write(IIC_device_addr[chip_num],24,0×80);
tlv320aic31_write(IIC_device_addr[chip_num],25,0×40);
tlv320aic31_write(IIC_device_addr[chip_num],51,0×08);
tlv320aic31_write(IIC_device_addr[chip_num],65,0×08);
tlv320aic31_write(IIC_device_addr[chip_num],101,0×00);
附件里面是我的原理图用的是第10和11口,项目已经卡在这里两个星期了,希望您帮帮我!!!! QQ:978472426
Flora Wang:
你好:
1.原理图上的15pin是连到MICBIAS上吗?
2.根据你的设置,AIC3101是slave,如果MCLK=12.288MHZ,其余I2S时钟应为:WCLK=48KHZ,BCLK=2*16*WCLK=1.536MHZ。请先检查一下时钟是否保持这个关系,以及是否有时钟输出。如果没有时钟输出,就采集不到MIC的信号。
3.根据你的MIC位置,请参考以下配置,比对自己的配置:
w 30 1F F8w 30 15 F8w 30 16 84w 30 13 84w 30 0F 00w 30 10 00
w 30 19 80 //Bias设置,比对自己的MIC规格书
Bill Bill:
回复 Flora Wang:
你好感谢您的回复,pin15是接了micbias,我是新手我也搞不清楚这些寄存器该设置成多少,我是看文档设置的,我用的海思里面的tlv320aic3101驱动,里面唯独没有把mic输入加进去,所以能告诉我一下,寄存器的值应该设置成多少吗,刚才我量了一下 估计值MCLK=1.2MHZ左右 BCLK=660KHZ WCLK=20.6 这个不符合您说的那个公式啊。还有您说的那个 MIC配置没弄明白啊 期待着您的回复
Flora Wang:
回复 Bill Bill:
你好:
1.你下面的代码设置显示,CLK应该满足这个关系。
这样看来,要么是你代码设置错了,要么就是你的codec是做slave器件,不是master。
不管怎么样,WCLK=20.6不是常用的采样率,常用的采样率是8K,44.1K,48K。
2.MIC的配置主要是路径和BIAS,选用哪个LINE口进入,BIAS有没有给电,音量有没有调节。这几个都设置了就可以了。
Bill Bill:
回复 Flora Wang:
你好!这是我代码里面设置
AiDevId = 0; stAttr.enWorkmode =AIO_MODE_I2S_MASTER; stAttr.enBitwidth = AUDIO_BIT_WIDTH_16; stAttr.enSamplerate = AUDIO_SAMPLE_RATE_8000; stAttr.enSoundmode = AUDIO_SOUND_MODE_MOMO; stAttr.u32EXFlag = 1;/* should set 1, ext to 16bit */ stAttr.u32FrmNum = 40; stAttr.u32PtNumPerFrm = AUDIO_POINT_NUM;
如果用从设备采集到的数据是0,说明不是从设备,位宽度16,采样频率8K, BIAS有供电,音量怎么调节啊,这个不确定 ,还有我原理图上是双端输入,这个模式下不知道我的寄存器设置的对不对
Flora Wang:
回复 Bill Bill:
你好:
请参考上贴中我发的配置。
w 30 1F F8,解释一下:W 写,0x30是AIC3101的I2C 地址,0x1F是datasheet中register 31,向register 31写0XF8。
你看看我提出来的那几个寄存器就明白了。
Bill Bill:
回复 Flora Wang:
你好!我按照你说的 那样设置了我的寄存器 寄存器值在附件中 然后我量了一下 MCLOCK=4MHZ , WCLOCK=388KHZ, BCLOCK=13.3KHZ MIC两端的电压2.0V 还是采集不到MIC的声音
Flora Wang:
回复 Bill Bill:
你好:
你的CLK明显有问题,WCLK怎么会比BCLK还大?还有你的codec是做主还是从?(主设备的意思是CLK由codec发出,从设备意思是codec接受外界来的时钟)。
请确认时钟,先找到问题点。花点时间看看。
Bill Bill:
回复 Flora Wang:
你好!我发现问题了,HI3507不支持主模式,只能用从模式,我的电路图还需要修改吗? 那些寄存器的值需要从新修改吗 期待着您的回复
Flora Wang:
回复 Bill Bill:
你好:
那样你的codec就要做主,需要配置CLK。我之前写给你的寄存器没有配置时钟,是codec做从的例子。
下面的寄存器是关于codec做从,MCLK=12.288Mhz的相关寄存器配置。 MCLK=12.288MHZ,Codec Slave:BCLK=2.304Khz, WCLK=48Khz
{0x02, 0x00}, //ADC/DAC fs=fsref/1 {0x03, 0x10}, //PLL disable,Q=2 {0x04, 0x00}, //PLL disable {0x65, 0x01}, //CODEC_CLKIN=CLKDIV_OUT {0x66, 0x00}, //PLLCLK_IN uses MCLK {0x07, 0x0A}, //fS(ref) = 48 kHz;Left-DAC data path plays left-channel input data.Right-DAC data path plays right-channel input data. {0x08, 0xC0}, //BCLK/WCLK output,master {0x09, 0x20}, //I2S,16bit,Continuous-transfer mode
请理解并核对。
Bill Bill:
回复 Flora Wang:
你好!我按照你说的这么改的 但是我量了一下 我发现 MCLOCK BCLOCK WCLOCK 全都没有时钟了 寄存器0x08是让codec输出时钟的意思吧 我是否需要外接晶振呢