我似乎对 TLV320AIC3104有另一个问题。 我已经设置了驱动程序、因此我们在 MCLK、CLKDIV_CLKIN 路径(对于16KHz 音频)和 MCLK、PLL_CLKIN 路径(对于8kHz 音频)之间切换。
我们在我们的系统中测试这一点、方法是 调用 HQ 并使用 VoIP 回叫装置。 VoIP 以8kHz 的频率运行、通常这是可行的。
我可以在音频停止从扬声器传出之前拨打一些电话。 当音频在时钟路径之间切换时、往往会发生这种情况。 使用16KHz 的采样率建立呼叫并播放消息。 将接受呼叫、切换到8kHz 采样率、音频正常。 当呼叫结束并切换回16KHz 采样率时、扬声器不会听到任何音频。
我可以看到在 I2S 总线上播放的音频、当音频良好且停止工作时、寄存器看起来是相同的。 以下是供参考的寄存器转储。 这全部针对16KHz 音频(我们的系统中为15600)进行设置
-盒上的音频不是从扬声器发出的,这是寄存器的状态,没有播放音频
root@生命线:/media/userdata i2cdump -f -y 0 0x18
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 44 10 2c 99 40 0A 00 00 21 00 00 00 .D???@?!
10:00 8f F8 78 78 78 78 78 78 78 06 70 FE 00 fe 00 .?xxxxxx?p?..
20:00 00 00 00 80 00 10 00 00 50 00 81 00 76 ……???????????????vv
30:00 76 76 04 00 76 00 76 76 76 04 00 76 00 76 76 76 76 00 76 .vv?.vv?.vv?.vv.v
40:76 04 00 76 00 76 76 76 04 00 00 00 00 00 00 00 v?.vv?...
50:00 B6 76 00 76 0b 00 F6 76 00 36 76 0b D8 00 .v.vv??v.6V?。
60:00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ???..........
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 此处盒上的音频不是从扬声器发出的、这是播放"离开"消息的寄存器的状态
root@生命线:/media/userdata i2cdump -f -y 0 0x18
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 44 10 2c 99 40 0A 00 00 01 00 00 00 .D?、?@?...。。
10:00 8f F8 78 78 78 78 78 78 78 06 70 FE 00 fe 00 .?xxxxxx?p?..
20:00 00 00 00 80 c0 10 00 00 50 00 01 00 76 ……?????????????????vv
30:00 76 76 07 00 76 00 76 76 06 00 76 00 76 76 76 76 76 76 76 76 76 .vv?.vv?.vv.v
40:76 07 00 76 00 76 76 04 00 00 00 00 00 00 00 v?.vv?...
50:00 B6 76 00 76 0b 00 F6 76 00 36 76 0b DE 08 ?v.vv???v.6V?????
60:00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ???..........
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-寄存器0x0B 设置为21和01。 该规范中规定已设置"左 DAC 上溢标志"。
-寄存器0x2b 和0x2C 发生变化、这是正常现象
-寄存器0x5e 发生变化,这是正常现象
-扬声器仍然没有音频输出、因此请重置设备并再次转储寄存器。
-音频现在可以工作,这是音频不播放时的寄存器转储
根@生命线:~# i2cdump -f -y 0 0x18
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 44 10 2c 99 40 0A 00 00 41 00 00 00 .D?、?@?... A.
10:00 8f F8 78 78 78 78 78 78 78 06 70 FE 00 fe 00 .?xxxxxx?p?..
20:00 00 00 00 80 00 10 00 00 50 00 81 00 76 ……???????????????vv
30:00 76 76 04 00 76 00 76 76 76 04 00 76 00 76 76 76 76 00 76 .vv?.vv?.vv?.vv.v
40:76 04 00 76 00 76 76 76 04 00 00 00 00 00 00 00 v?.vv?...
50:00 B6 76 00 76 0b 00 F6 76 00 36 76 0b D8 00 .v.vv??v.6V?。
60:00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ???..........
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-音频现在可以工作、这是当音频播放"离开"消息时的寄存器转储
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 44 10 2c 99 40 0A 00 00 01 00 00 00 .D?、?@?...。。
10:00 8f F8 78 78 78 78 78 78 78 06 70 FE 00 fe 00 .?xxxxxx?p?..
20:00 00 00 00 80 c0 10 00 00 50 00 01 00 76 ……?????????????????vv
30:00 76 76 07 00 76 00 76 76 06 00 76 00 76 76 76 76 76 76 76 76 76 .vv?.vv?.vv.v
40:76 07 00 76 00 76 76 04 00 00 00 00 00 00 00 v?.vv?...
50:00 B6 76 00 76 0b 00 F6 76 00 36 76 0b DE 08 ?v.vv???v.6V?????
60:00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ???..........
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
我看不到寄存器设置有什么不同、但只有在我们执行硬件复位时、音频才会重新开始工作。 您能不能建议您的任何工程师是否遇到过此类音频问题。