工具与软件:
尊敬的专家:
我的客户希望读取寄存器以检查输入端是否有音频信号( VINL2/VINR2"或"VINL1/VINR1")
你能告诉我怎么做吗?" 谢谢!
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.
你好、Daveon
客户步骤如下、 仍读取为0x00。 您能帮助提供哪些可能出现的问题的建议吗? 谢谢!
读取0x61 >>发现它们均为0x00
嗨、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·米尔