This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCM1865

Other Parts Discussed in Thread: PCM1865

大家好!

       本人现在在开发一款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 的虚拟寄存器是不是一定要写入?

请各位兄台解答下。

  • 您好,从模式PLLCLK可以不用配置的。
    寄存器读写正常,但是没有数据出来,有没有检查硬件方面的问题?
    对照EVM user's guide中的原理图检查下硬件各个引脚电压是否正常?
    www.ti.com.cn/.../slau615.pdf
  • 您好!谢谢您的帮助。从模式不用配PLL 时钟,那Page 1 的虚拟寄存器需要写入值吗?
    现在硬件方面各个引脚电压没发现问题,但还在检查当中。

    时钟由外部发送过来,MSCK为12.288MHZ , BCK为3.072MHZ, LRCK为48KHZ ,
    软件方面我主要做了:
    1、复位寄存器
    2、写0x00到寄存器0x70,开始Power Up,
    3、写0xCC到寄存器0x0B, 设置音频接口为I2S模式,采用32位采样位宽,LRCK为MCLK的256分之一
    4、写0x40到寄存器0x20, 设置从模式,设置为MCLK为时钟源,使能自动检测。
    5、写0x41/0x42到寄存器0x06/0x07/0x08/0x09,配置为单端输入,通道1和通道2我都试过。

    写了以上寄存器后,得以下现象
    读状态寄存器 0x72为0xaf,说明芯片当前状态已在运行状态了,
    读状态寄存器 0x75为0x00,说明芯片当前时钟No Error,
    读状态寄存器 0x78为0x07,说明电压DVDD Status、AVDD Status、Digital LDO Status的电压都为Good.


    但芯片数据输出引脚Pin 18 Audio data digital output 就是没有数据出来,用示波器量也没有波形。
    也写过别的寄存器,还是不行。
    请问我软件方面还有漏缺的吗?或者有初始化的参照代码吗
  • 大家好!

           本人现在在开发一款TI的芯片——PCM1865,想要实现声音使用麦克风播放功能。目前芯片还没有把功能调出来。

    通信正常,寄存器读写正常,检查硬件方面的没有发现问题
    对照EVM user's guide中的原理图检查下硬件个引脚电压,PIN13:DVDD=3.3v,PIN8:AVDD=3.3v,PIN11:LDO=1.8v.没有错误。

    本人配为从模式,因此不用配PLL 时钟,那Page 1 的虚拟寄存器需要写入值吗? 

    时钟由外部发送过来,MSCK为12.288MHZ接 PIN15, BCK为3.072MHZ接PIN17, LRCK为48KHZ接PIN16 ,
    软件方面我主要做了:
    1、复位寄存器
    2、写0x00到寄存器0x70,开始Power Up,
    3、写0xCC到寄存器0x0B, 设置音频接口为I2S模式,采用32位采样位宽,LRCK为MCLK的256分之一
    4、写0x40到寄存器0x20, 设置从模式,设置为MCLK为时钟源,使能自动检测。
    5、写0x41/0x42到寄存器0x06/0x07/0x08/0x09,配置为单端输入,通道1和通道2我都试过。

    写了以上寄存器后,得以下现象
    读状态寄存器 0x72为0xaf,说明芯片当前状态已在运行状态了,
    读状态寄存器 0x75为0x00,说明芯片当前时钟No Error,
    读状态寄存器 0x78为0x07,说明电压DVDD Status、AVDD Status、Digital LDO Status的电压都为Good.


    但芯片数据输出引脚Pin 18 Audio data digital output 就是没有数据出来,用示波器量也没有波形。
    也写过别的寄存器,还是不行。
    请问我软件方面还有漏缺的吗?或者有初始化的参照代码吗

    本人邮箱为1764462515@qq.com ,从事影视行业开发工作,有时会接触到TI方面的芯片,遇到不懂之处会在论坛上提出来,望各位兄台多多帮助,谢谢。 

  • 您好,读一下寄存器R112,看芯片是否处于sleep状态,导致没有输出?
  • 您好,读寄存器R112结果为0,芯片处于run状态 。
  • 请问我还能从哪方面切入找原因吗呢?
  • 您好!读寄存器R112结果为0,芯片处于run状态 。我还能从哪方面找问题呢