TI论坛
直播中

殷谷光

7年用户 1062经验值
擅长:控制/MCU
私信 关注
[问答]

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 的虚拟寄存器是不是一定要写入?
    请各位兄台解答下。

回帖(1)

吴思莹

2024-10-14 14:26:41
从模式PLLCLK可以不用配置的。
寄存器读写正常,但是没有数据出来,有没有检查硬件方面的问题?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分