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.

TLV320AIC3204: TLV320AIC3204接数字麦克风,数字输出和模拟输出都没有信号

Part Number: TLV320AIC3204

如图1,使用mcu配置aic3204,pin11和pin32作为字时钟和位时钟都有输出,数字麦克风的sd引脚也有输出;但是aic3204的pin5没有输出,pin22和pin23也没有模拟信号输出,参考的是官方提供的数字麦克风配置,如图2。

请抽出时间不吝赐教,万分感激

  • 您好,

    您使用的数字MIC接口是I2S接口是吗?

    官方提供的数字麦克风配置您是在哪里下载的?因为您使用的配置很可能是 PDM接口的MIC配置

  • 就是您发给我的,然后我根据寄存器手册增加和修改了部分配置。

    这部分是您发的文件8kHz采样的配置

    ###############################################
    #
    # Digital Microphone Script
    # 8ksps
    #
    ###############################################

    ###############################################

    # Software Reset
    ###############################################
    #
    # Select Page 0
    w 30 00 00
    #
    # Initialize the device through software reset
    w 30 01 01
    #
    ###############################################

    ###############################################

    # Clock and Interface Settings
    # ---------------------------------------------
    # The codec receives: MCLK = 4.096 MHz,
    # BLCK = 512 kHz, WCLK = 8 kHz
    ###############################################
    #
    # Select Page 0
    w 30 00 00
    #
    # NADC = 2, MADC = 2, dividers powered on
    w 30 12 82 82
    #
    # AOSR = 128
    w 30 14 80
    #
    ##############################################

    ###############################################
    # Configure Power Supplies
    ###############################################
    #
    # Select Page 1
    w 30 00 01
    #
    # Disable weak AVDD in presence of external
    # AVDD supply
    w 30 01 08
    #
    # Enable Master Analog Power Control
    w 30 02 00
    #
    # Select ADC PTM_R1
    w 30 3d ff
    #
    # Set the input power-up time to 3.1ms (for ADC)
    w 30 47 32
    #
    # Set the REF charging time to 40ms
    w 30 7b 01
    #
    ###############################################

    ###############################################

    # Configure ADC Channel
    ###############################################
    #
    # Select Page 0
    w 30 00 00
    #
    # Configure MISO as clock output for DIGMIC
    w 30 37 0E
    #
    # LADC and RADC enabled for DIGMIC
    # Route SCLK as DIGMIC_DATA
    # Power up LADC/RADC
    w 30 51 DC
    #
    # Unmute LADC/RADC
    w 30 52 00
    #
    ###############################################

    这部分是我根据寄存器手册增加和修改的配置,现在5脚的数字输出有信号了,但是模拟输出还是没有。

    /*软件复位*/
    i2c_write_byte(0, 0);
    // osDelay(20);
    i2c_write_byte(1, 1);
    // osDelay(20);

    /*设置时钟和接口*/
    i2c_write_byte(0, 0);
    i2c_write_byte(0x12, 0x82);
    i2c_write_byte(0x13, 0x82);

    i2c_write_byte(0x14, 0x80);
    i2c_write_byte(0x1B, 0x20);
    // osDelay(20);

    /*电源配置*/
    i2c_write_byte(0x00, 0x01);
    i2c_write_byte(0x01, 0x08); //禁能外部weak avdd
    i2c_write_byte(0x02, 0x00); //使能主机模拟电源控制
    // i2c_write_byte(0x3d, 0xff);
    // i2c_write_byte(0x47, 0x32);
    // i2c_write_byte(0x7b, 0x01); //Set the REF charging time to 40ms
    // osDelay(20);
    /*adc通道配置*/
    i2c_write_byte(0x00, 0x00);
    i2c_write_byte(0x37, 0x14);
    i2c_write_byte(0x34, 0x20);

    i2c_write_byte(0x35, 0x82);
    i2c_write_byte(0x36, 0x02);
    i2c_write_byte(0x51, 0xEC);
    i2c_write_byte(0x52, 0x00);

    i2c_write_byte(0x25, 0xAA);
    i2c_write_byte(0x52, 0x00);
    // osDelay(20);

    i2c_write_byte(0x00, 0x01);
    i2c_write_byte(0x01, 0x08);
    i2c_write_byte(0x02, 0x00);
    i2c_write_byte(0x7B, 0x01);
    i2c_write_byte(0x14, 0x25);
    i2c_write_byte(0x3a, 0x00 );

    i2c_write_byte(0x0C, 0x08);
    i2c_write_byte(0x0D, 0x08);
    i2c_write_byte(0x03, 0xC0);
    i2c_write_byte(0x04, 0xC0);
    i2c_write_byte(0x10, 0x00);
    i2c_write_byte(0x11, 0x00);
    i2c_write_byte(0x09, 0x30);
    i2c_write_byte(0x3f, 0xC0);
    osDelay(2500);

    i2c_write_byte(0x00, 0x00);
    i2c_write_byte(0x3f, 0xE6);
    i2c_write_byte(0x40, 0x00);

    另外还有两个问题:

    1.我的i2s配置8kHz采样,主时钟是2Mhz,而您给的配置文件注释是4MHz。根据我查阅的资料,主时钟应该是姿势中的256倍,理论上是2MHz,是有其他的配置吗?

    2.5脚输出的信号是什么格式,该怎样解析?

  • 我昨天又缕了一下寄存器配置,重新写了初始化,现在是有一点输出,后续可能需要优化一些配置和滤波器。不过这两个问题还是没找到资料里的相关内容,劳烦解答一下:

    1.我的i2s配置8kHz采样,主时钟是2Mhz,而您给的配置文件注释是4MHz。根据我查阅的资料,主时钟应该是姿势中的256倍,理论上是2MHz,是有其他的配置吗?

    2.5脚输出的信号是什么格式,该怎样解析?

  • 1.我的i2s配置8kHz采样,主时钟是2Mhz,而您给的配置文件注释是4MHz。根据我查阅的资料,主时钟应该是姿势中的256倍,理论上是2MHz,是有其他的配置吗?

    您这里是说您输入的主时钟频率是2.048MHZ而不是4.096MHZ?还是使用8Ksps的采样率然后怎样修改配置吗?

    看上面时钟树,主时钟减少1倍,可以修改NADC或MADC或AOSR的值减少1倍,这样得到的8Ksps的采样率不变。

    2.5脚输出的信号是什么格式,该怎样解析?

    5脚您是希望输出I2S音频数据吗?这里希望输出到哪里?

    我不太明白您的应用,您使用的数字MIC接口是I2S接口的吗?看您电路图中有两个数字MIC,使用的I2S接口还一样。

  • 我配置的是i2s的24位数据,但是5脚出来的信号没有规律,看不出来哪些是有效位,声音变化也没办法从数据上体现出来

  • 我看了INMP441的datasheet,明白了这个MIC的应用,但是电路图中MIC的I2S_WCLK连接到哪里了?

    看datasheet需要64bclk,0x1B寄存器的 Data Word length 是否应该配置为  32 bits,否则的话,您实测pin32 频率是多少?是否不满足要求

    P11脚输出频率多少?是期望的8K吗?

  • 现在模拟端声音信号已经出来了。我是从mcu输出时钟到aic3204的1、2、3脚,然后配置11、32脚为字时钟和位时钟,用示波器测量与2、3脚的时钟是同步的。5脚有输出,但是我现在解析不出来。inmp441的输出应该是24位有效的,0x1B寄存器我配置为i2s/24位,时序上是32位长度的。但是不知道5脚输出的格式

  • 现在模拟端声音信号已经出来了。

    模拟出来的声音是数字MIC输入的声音吗?还是模拟MIC4录入的声音?您现在的应用架构是怎样的?或者说您想要实现的具体功能是什么呢?我现在感觉还不明白您具体要实现什么?每种输入信号对应的输出端口分别是什么?您是数字MIC录音到MCU吗?

    电路图中数字MIC的I2S_WCLK连接到哪里了?这里是不是有网络标号错误:

    您用示波器实际测量了pin 11和pin 32的波形,频率分别是多少?我理解的是您是使用11脚和32脚为数字MIC提供时钟信号,如果是fs=8KSPS采样率的话,11脚应该是8K,32脚应该是64fs

  • 您估计的都对。耳机端出来的声音跟数字mic输入基本是一致的。实际板上只用了一个数字mic,因为这是打的第一个样板,有些东西都是预留的。我后来用了16K采样率,示波器测量11脚就是16k,32脚是1M。

    我们的总体需求是获取很小的声音信号,在耳机端播放,并能通过蓝牙上传到app,所以也需要从5脚获取编解码芯片的数字输出。后续还需要把这个小信号放大后的信噪比提升一下,有可能需要加入滤波器。

  • 11、32脚有时钟输出时,Page 0 / Register 32配置的是什么?

    看下面文档的 2.3 Audio Interface部分

    https://www.ti.com.cn/cn/lit/an/slaa404c/slaa404c.pdf

    其中

    Primary / Secondary I2S接口是不是不能同时使用?我想确认下您Page 0 / Register 32   D3D2是不是配置的b11

  • 还有我一直想确认的一点:数字mic有输出的话,需给它提供I2S_WCLK,您这里数字MIC的I2S_WCLK连接到哪里了?

  • 是由aic3204的11脚提供wclk给数字mic。

    aic3204的1、2、3的主时钟、位时钟和字时钟由mcu提供,我们担心不能直接由2、3脚同时给aic3204和数字mic提供时钟,所以选择由aic3204的引脚配置时钟。

  • 图片可能由于源文件转pdf文件时的误差,导致部分标号出现相对位置问题。aic3204的11脚即I2S_WCLK,与数字mic的位时钟引脚连接。后面的1是0欧电阻的位置

  • 您方不方便通过别的联系方式沟通,这样效率太低了

  • 很抱歉,技术支持都是在论坛上进行的:
    中文技术论坛:https://e2echina.ti.com/
    英文技术论坛:https://e2e.ti.com/

    因为每天都有很多帖子要回复,如果给您造成不便我表示很抱歉。

    aic3204的1、2、3的主时钟、位时钟和字时钟由mcu提供,

    这样看,5脚DOUT的输出格式是由MCU端配置的,应按MCU配置格式解析

  • TLV320AIC3204 的两路I2S总线不能同时使用,具体看 TLV320AIC3204 Application Reference Guide  文档的第 2.6.5 Secondary I2S章节,“This multiplexing capability allows the TLV320AIC3204 to communicate with two separate devices with independent I 2S or PCM busses, one at a time.”

    看您的应用应该是需要两路音频接口同时工作,您可以看下 AIC3262 或 AIC3268:

  • 这样回复效率太低,也太容易混乱了,到现在还在确认些有的没的。我从头缕一下:

    1.原理图预留了一些功能而实际上没有用到,我现在只连了一个数字麦克风,并没有两路音频接口;

    2.aic3204的1、2、3脚由mcu提供时钟,另有11脚、32脚输出时钟给数字麦克风——原因是我担心mcu、aic3204、数字麦克风的时钟接到一起会出问题,实际情况是目前aic3204输入和输出的时钟是同步的,暂时没有问题;

    3.5脚使用默认的输出功能,并在寄存器page0,register27中配置为i2s,24位数据格式: i2c_write_byte(0x1B, 0x20);

    现在这些我调试过了,您也不用再确认了。我的问题还需要解答的包括:

    4.模拟端耳机能正常播放声音,但是5脚输出的数据没有规律,制造声音与数据变化该怎样对应?

    5.我如果要使用8k采样率,能否配置低通滤波器,目的是降低环境音?

  • 我一直在试图弄明白您的应用,但是看到您上面回复,我发现我还是没有明白,您确实说一些功能是预留的,但并没有说明哪些是预留的。现在您是使用了两路输入是吗?一路是数字MIC输入,一路是模拟MIC输入?模拟MIC的录音需要pin22和pin23输出出去?数字MIC呢?您需要做怎样的处理?是需要通过2、3、5脚录音到MCU吗?这样的话就需要同时使用两路I2S接口,3204是不能满足要求的。

  • 您不要管原理图了。我现在只接了一路数字麦克风,要在耳机端播放声音,还需要获取声音信号的数字输出。数字麦克风的sd脚输出到aic3204的4脚-数字输入,作为aic3204的输入。aic3204的5脚作为输出,我要使用i2s接口读取这个数据。

  • 根据我对您的应用理解,您应该是想使用pin11和pin32 和4脚(一个 I2S接口secondary)将数字MIC的音频信号输入到aic3204,然后使用2脚3脚和5脚(另一个I2S接口primary)将aic3204接收到的MIC音频信号输出到MCU,如果是这样的话,aic3204是不能实现的,如上所述,AIC3204 的两路I2S(primary和secondary)总线不能同时使用,具体见TLV320AIC3204 Application Reference Guide 的 2.6.5 Secondary I2S章节描述。

  • 11脚和32脚只是作为时钟,我说了好多遍了,是出于担心2、3脚不能接过多的器件。4、5脚是作为数据输入和输出,本质上就用了一路i2s。

  • 但是您寄存器 0x37=0x14 和寄存器0x34=0x20 配置的是使用的secondary 音频接口的时钟:

  • 2、3脚应该可以接多个器件,但只能有一个主设备