- 本人现在在开发一款ti的芯片——PCM1865,想要实现声音使用麦克风播放功能。目前芯片还没有把功能调出来,通信正常,
寄存器读写正常,所遇到问题如下:
1、 资料只有pcm1865、PCM186xMixerCoefficientwithmacro两份资料。pcm1865是介绍芯片功能及寄存器表的,
PCM186xMixerCoefficientwithmacro为配置DSP功能Page 1 写入虚拟寄存器介绍。pcm1865手册最重要的就是让我们配置时钟,
但我们总感觉芯片有些地方没讲到,寄存器表不全,资料是不是不全?
2、 我们把模式配成从模式,时钟由外部发送过来,SCK为12.288M,BCK为3.072M,LRCK为48K,时钟没错,但就是没有数据出来。
3、 我们把Page 0 状态寄存器70到78每隔10秒读一次并打印出来,如下:
data70=0 、data71=10 、data72=af、 data73=3 、data74=32 、data75=0 、data78=7
4、 对照下寄存器表,发现时钟没错,状态也在运行状态。电压状态也没错。连接了音频,但用示波器量数据脚还是没波形。
5、 程序初始化如下。 写函数两个参数,第一个为发送寄存器地址,第二为数据。
void PCM186_Init(void)
{
uint8_t data05=0,data10=0,page1_data20=0xff,data60=0,Idata=0,data20=0;
HDMI_WriteI2C_Byte(0x00,0xFE); //复位寄存器
Delay_ms(5);
HDMI_WriteI2C_Byte(0x00,0x00); //select page0
Delay_ms(5);
HDMI_WriteI2C_Byte(0x70,0x00); // Power Up
Delay_ms(5);
HDMI_WriteI2C_Byte(0x0b,0xcc); //
Delay_ms(5);
HDMI_WriteI2C_Byte(0x20,0x40);
Delay_ms(5);
HDMI_WriteI2C_Byte(0x21,0x00); //
HDMI_WriteI2C_Byte(0x22,0x00); //
HDMI_WriteI2C_Byte(0x23,0x00); //
HDMI_WriteI2C_Byte(0x26,0x3f); //set master clock(sck) to bck divider value 64
HDMI_WriteI2C_Byte(0x27,0xff); //set master clock(sck) to bck divider value 127·
HDMI_WriteI2C_Byte(0x28,0x00); //
Delay_ms(5);
HDMI_WriteI2C_Byte(0x19,0xff); //
Delay_ms(5);
HDMI_WriteI2C_Byte(0x0a,0x08); //ch4(r) audio ADC
HDMI_WriteI2C_Byte(0x58,0x80); //Without latch
HDMI_WriteI2C_Byte(0x60,0x01); //energysense interrupts
HDMI_WriteI2C_Byte(0x62,0x12); //Width of the Interrupt Pulse 3ms
HDMI_WriteI2C_Byte(0x06,0x41); //ADC1L VINL1[SE]
HDMI_WriteI2C_Byte(0x07,0x41); //ADC1R VINL1[SE]
HDMI_WriteI2C_Byte(0x08,0x42); //ADC2L VINL2[SE]
HDMI_WriteI2C_Byte(0x09,0x42); //ADC2R VINL2[SE]
HDMI_WriteI2C_Byte(0x0F,0x3F); //PGA Channel 1 Life 7.5 dB
HDMI_WriteI2C_Byte(0x16,0x3F); //PGA Channel 1 Right
Delay_ms(5);
HDMI_WriteI2C_Byte(0x71,0x10); /
HDMI_WriteI2C_Byte(0x70,0x00); //start run
HDMI_WriteI2C_Byte(0x60,0x11); //
HDMI_WriteI2C_Byte(0x05,0x87); //set max 6dB attenuation and enable Clipping suppression
Delay_ms(5);
HDMI_WriteI2C_Byte(0x01,0x08); //4.0 dB (Max) 0x50
HDMI_WriteI2C_Byte(0x02,0x08); //4.0 dB (Max)
HDMI_WriteI2C_Byte(0x03,0x08); //4dB (Max)
HDMI_WriteI2C_Byte(0x04,0x08); //4.0 dB (Max)
}
以上为初始化程序,按照这样写的话读寄存器芯片是运行状态,但数据口就是没数据出来。
我还比较纠结在从模式下PLL锁相环时钟是不是可以不要?,还有page 1 的虚拟寄存器是不是一定要写入?
请各位兄台解答下。
0
|
1个回答
|
|
|