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.

[参考译文] PCM1863:如何读取输入是否有音频?

Guru**** 2387830 points
Other Parts Discussed in Thread: PCM1863
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1377129/pcm1863-how-to-read-if-there-is-audio-at-the-input-or-not

器件型号:PCM1863

工具与软件:

尊敬的专家:

我的客户希望读取寄存器以检查输入端是否有音频信号( VINL2/VINR2"或"VINL1/VINR1")

你能告诉我怎么做吗?" 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 PYTsai:

    该器件支持检测音频信号、该算法称为 Energysense。 数据表的第9.3.11节开始介绍配置此函数的说明、其中包含便于实现的步骤和 i2c 脚本

    9.3.15是列出实现步骤的位置。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Daveon  

    客户步骤如下、 仍读取为0x00。 您能帮助提供哪些可能出现的问题的建议吗? 谢谢!

     

     读取0x61 >>发现它们均为0x00

    1. 然后将0x00写入0x60 >> Close INT
    2. 此时、辅助信号由 VINL2/VINR2输入
    3. 再次读取0x32。 我们预计应将"SIGDET_DC_LEVEL_CH 2_L""SIGDET_DC_LEVEL_CH 2_R"告知哪个通道的输入、然后读取0x48和0x4B >>、但仍为0x00
    4. 如果我真的被告知在这次读取0x48和0x4B、那么在读取后我该怎么办呢?
    5. 然后将0x07写入0x60 >>打开 int
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否能够提供寄存器转储?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Douglas、

    音频输入来自引脚1和2  

    下面是客户的器件初始化表  

    静态 uint8_t PCM_REGISTERS_AUX[]=。

    0x00、0x00、
    0x01、0x00、
    0x02、0x00、
    0x03、0x00、
    0x04、0x00、
    0x05、0x86、
    0x06、0x42、//ADC1设置 VINL1 + VINL2
    0x07、0x42、//ADC1设置 VINR3 + VINR4
    0x08、0x42、//ADC2设置 VINL2
    0x09、0x42、//ADC2设置 VINR2
    0x0A、0x00、
    0x0B、0x44、
    0x0C、0x00、
    0x0D、0x00、
    0x0E、0x00、
    0x0F、0x00、
    0x10、0x01、
    0x11、0x20、
    0x12、0x00、
    0x13、0x00、
    0x14、0x00、
    0x15、0x00、
    0x16、0x00、
    0x17、0x00、
    0x18、0x00、
    0x19、0x00、
    0x1a、0x00、
    0x1b、0x00、
    0x1c、0x00、
    0x1d、0x00、
    0x1E、0x00、
    0x1F、0x00、
    0x20、0x01、
    0x21、0x00、
    0x22、0x00、
    0x23、0x01、
    0x24、0x50、
    0x25、0x07、
    0x26、0x03、
    0x27、0x3F、
    0x28、0x11、
    0x29、0x01、
    0x2A、0x01、
    0x2b、0x08、
    0x2C、0x00、
    0x2D、0x00、
    0x2E、0x00、
    0x2F、0x00、
    0x30、0x00、
    0x31、0x00、
    0x32、0x00、
    0x33、0x01、
    0x34、0x00、
    0x35、0x00、
    0x36、0x01、
    0x37、0x00、
    0x38、0x00、
    0x39、0x00、
    0x3a、0x00、
    0x3B、0x00、
    0x3c、0x00、
    0x3D、0x00、
    0x3E、0x00、
    0x3F、0x00、
    0x40、0x80、
    0x41、0x7f、
    0x42、0x00、
    0x43、0x80、
    0x44、0x7f、
    0x45、0x00、
    0x46、0x80、
    0x47、0x7f、
    0x48、0x00、
    0x49、0x80、
    0x4a、0x7f、
    0x4b、0x00、
    0x4c、0x80、
    0x4d、0x7f、
    0x4e、0x00、
    0x4f、0x80、
    0x50、0x7F、
    0x51、0x00、
    0x52、0x80、
    0x53、0x7f、
    0x54、0x00、
    0x55、0x80、
    0x56、0x7f、
    0x57、0x00、
    0x58、0x00、
    0x59、0x00、
    0x5a、0x00、
    0x5b、0x00、
    0x5c、0x00、
    0x5d、0x00、
    0x5e、0x00、
    0x5F、0x00、
    0x60、0x11、
    0x61、0x00、
    0x62、0x10、
    0x63、0x00、
    0x64、0x00、
    0x65、0x00、
    0x66、0x00、
    0x67、0x00、
    0x68、0x00、
    0x69、0x00、
    0x6a、0x00、
    0x6b、0x00、
    0x6c、0x00、
    0x6d、0x00、
    0x6e、0x00、
    0x6F、0x00、
    0x70、0x70、
    0x71、0x10、
    0x72、0x0F、
    0x73、0x03、
    0x74、0x32、
    0x75、0x00、
    0x76、0x01、
    0x77、0x4c、
    0x78、0x07、
    0x79、0x00、
    0x7a、0x00、
    0x7B、0x00、
    0x7c、0x00、
    0x7d、0x00、
    0x7E、0x00、
    0x7f、0x00、
    0x00、0x01、
    0x01、0x00、
    0x02、0x2D、
    0x03、0x00、
    0x04、0x00、
    0x05、0x00、
    0x06、0x00、
    0x07、0x00、
    0x08、0x00、
    0x09、0x3a、
    0x0A、0x45、
    0x0B、0x00、
    0x0C、0x00、
    0x0D、0x00、
    0x0E、0x00、
    0x0F、0x00、
    };

    器件初始化后、客户执行如下所示的阈值设置  

    空 PCM1863_Threshold (空)

    字节 TTT;

     

    //信号丢失阈值电平-40dB

    TTT=0x01;

    PCM1863_I2C_Write (0x00、1和 TTT);

    TTT=0x2C;

    PCM1863_I2C_Write (0x02、1和 TTT);

     

    TTT=0x01;

    PCM1863_I2C_Write (0x04、1、&TTT);

    TTT=0x47;

    PCM1863_I2C_Write (0x05、1、&TTT);

    TTT=0xAE;

    PCM1863_I2C_Write (0x06、1和 TTT);

     

    TTT=0x01;

    PCM1863_I2C_Write (0x01、1和 TTT);

    DELAY_10ms (5);

     

    //信号检测阈值电平-38dB

    TTT=0x01;

    PCM1863_I2C_Write (0x00、1和 TTT);

    TTT=0x2D;

    PCM1863_I2C_Write (0x02、1和 TTT);

     

    TTT=0x01;

    PCM1863_I2C_Write (0x04、1、&TTT);

    TTT=0x9C;

    PCM1863_I2C_Write (0x05、1、&TTT);

    TTT=0x86;

    PCM1863_I2C_Write (0x06、1和 TTT);

     

    TTT=0x01;

    PCM1863_I2C_Write (0x01、1和 TTT);

    DELAY_10ms (5);

    }

    然后、他们开始轮询寄存器0x32、如下所示  

    .

    .

    while (1)

    System_every_5s_check()

    PCM1863_I2C_READ (0x32、1、Aux_detect);  

    }

     

    }

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    首先、在测试中、确保您正在以大于-57dBFS (或设定的阈值电平)的音量播放~1kHz 信号、以便 Energysense 进行检测。

    接下来、我在 数据表的第9.3.15.2.2节中看到、当音频超过阈值时、INT_STAT 寄存器(第0页0x61)是粘滞的、而 SIGDET_STAT (第0页0x32)不是粘滞的、因此根据默认值、它每秒仅触发高电平1ms。 您应该改为轮询 INT_STAT。 此外、仅当器件首先处于 SLEEP 模式时、才会触发 Energysense 检测。 请确保在播放测试信号之前将其设置为睡眠模式。 为此、您可以停止时钟信号或使用 PWRDN_CTRL (第0页0x70)将器件设置为睡眠模式。

    如果您需要更多帮助、请告诉我。

    此致!
    J·米尔