主题中讨论的其他器件: TLV320AIC3106、 TLV320AIC3110、TLV320AIC3111 、 AM625
大家好、我使用的是 SK-AM62评估板、它附带了音频编解码器 TLV320AIC3106、从编解码器的数据表中可看出、它具有用于麦克风的内置 AGC、我们会启用和配置。 但是、通过查看编解码器的驱动程序、我们无法对 AGC 配置进行任何访问。 有什么方法可以控制这种情况吗? 您是否有任何从 SoC 通过编解码器上的 I2C 控制接口对此进行配置的示例?
谢谢
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.
大家好、我使用的是 SK-AM62评估板、它附带了音频编解码器 TLV320AIC3106、从编解码器的数据表中可看出、它具有用于麦克风的内置 AGC、我们会启用和配置。 但是、通过查看编解码器的驱动程序、我们无法对 AGC 配置进行任何访问。 有什么方法可以控制这种情况吗? 您是否有任何从 SoC 通过编解码器上的 I2C 控制接口对此进行配置的示例?
谢谢
尊敬的 Mitesh:
您是否查看过编解码器: sound/soc/codecs/tlv320aic3x.c
我确实看到这些
/* | |
*注意:启用自动输入增益控制器时要小心。 它可以 | |
*当 ADC 开启时、将 PGA 调整为最大值并且不会返回。 | |
*/ | |
SoC_DOUBLE_R ("AGC 开关"、LAGC_CTRL_A、ragc_CTRL_A、7、0x01、 0)、 | |
SoC_enum ("左 AGC 目标级别"、aic3x_lagc_level_enum)、 | |
SoC_enum ("正确的 AGC 目标级别"、aic3x_ragc_level_enum)、 | |
soc_enum ("左 AGC 启动时间"、aic3x_lagc_attack_enum)、 | |
SoC_enum ("正确的 AGC 启动时间"、aic3x_ragc_attack_enum)、 | |
SoC_enum ("Left AGC Decay Time"、aic3x_lagc_DECAY_enum)、 | |
SoC_enum ("右 AGC 衰减时间"、aic3x_ragc_DECAY_ENUM)、 |
另请参阅以下可能有用的文档:
https://www.ti.com/lit/an/slaa446/slaa446.pdf
如果这些问题无法帮助您继续、我可以将您的查询发送给音频编解码器团队。
此致、
苏伦
尊敬的 Mitesh:
如果您在内核代码中引用 Documentation/devicetree/bindings/sound/tlv320aic3x.yAML -您会看到兼容器件为 TLV320AIC3x (编解码器驱动程序)、而对于 TLV320AIC3111、请参阅 Documentation/devicetree/bindings/sound/TLV320AIC3111 tlv320aic31xx.txt
您可以从这些灯串中区分要使用的驱动器。
希望这对您有所帮助。
此致、
苏伦
尊敬的 Suren、您能否确认 TLV320AIC3111的编解码器设置、谢谢
codec_audio:音频{
兼容="简单音频卡";
simple-audio-card、name ="AM62x-SKEVM";
simple-audio 卡、小工具=
"耳机插孔"、"耳机插孔"、
"麦克风"、"麦克风插孔"、
"扬声器"、"扬声器";
简单音频卡、路由=
"MIC1LP"、"Microphone Jack"、
"MIC1RP"、"Microphone Jack"、
"MIC1LM"、"MICBIAS"、
"耳机插孔"、"HPL"、
"耳机插孔"、"HPR"、
"扬声器"、"SPL"、
"扬声器"、"SPR";
simple-audio-card、format ="DSP_B";
simple-audio-card、bitclock-master =<&sound_master>;
simple-audio-card、frame-master =<&sound_master>;
简单音频卡、位时钟反转;
简单音频卡、CPU{
sound-Dai =<&MCASP1>;
};
sound_master:simple-audio-card、codec {
Sound-Dai =<&TLV320AIC3111>;
Clocks =<&tlv320_MCLK>;
};
};
嗨、Hiran
为了给您提供很好的支持、我想知道内核版本吗? 您会使用 aic3106和/或 aic3110哪种芯片?
根据 YAML 文件、aic3106使用 TLV320AIC3x.c aic3110使用 tlv320aic31xx.c。
您可以在 DTS 文件中共享代码的 i2c 设置吗?
以下是用于在 DTS 中设置编解码器的链接。
TLV320AIC3120EVM-U:Linux 启动时出现编解码器时钟错误-音频论坛-音频- TI E2E 支持论坛
至于 AGC 控制、在确认了使用哪一个芯片之后、在代码中可以添加 kcontrol。
期待您的反馈。 谢谢。
祝你好运
丁圣豪
您好,盛浩,感谢您的留言。
我们想使用 AIC3110、当然、我们也得出了关于 aic31xx.c 驱动程序的相同结论、以使上述编解码器正确。
内核详细信息如下:
Linux am62xx-EVM 5.10.168-g2c23e6c538 #1 SMP 抢占星期五六月2 09:04:44 PDT 2023 aarch64 aarch64 GNU/Linux
I2C DTS:
&main_i2c1{
pinctrl-names ="默认";
pinctrl-0 =<&MAIN_i2c1_PINS_DEFAULT>;
时钟频率=<100000>;
TLV320AIC3111:音频编解码器@18{
#sound-Da-cells =<0>;
兼容="ti、TLV320AIC3111";
寄存器=<0x18>;
//ai3x-micbias-vg =<1>;/* 2.0V */
ai31xx-micbias-vg =<2>;/* 2.5V */
状态="可以";
/*稳压器*/
AVDD-SUPPLY =<&VCC_3V3_sys>;
IOVDD-SUPPLY =<&VCC_3V3_sys>
DVDD-SUPPLY =<&VCC_1v8>;
HPVDD-SUPPLY =<&VCC_3V3_sys>;
SPLVDD-SUPPLY =<&VCC_5v0>;
SPRVDD 电源=<& VCC_5v0>;
};
};
和 DTS 中的声卡设置:
codec_audio:音频{
兼容="简单音频卡";
simple-audio-card、name ="AM62x-SKEVM";
simple-audio 卡、小工具=
"耳机插孔"、"耳机插孔"、
"麦克风"、"麦克风插孔"、
"扬声器"、"外置扬声器";
简单音频卡、路由=
"MIC1LP"、"Microphone Jack"、
"MIC1RP"、"Microphone Jack"、
"MIC1LM"、"MICBIAS"、
"耳机插孔"、"HPL"、
"耳机插孔"、"HPR"、
"外部扬声器"、"SPL"、
"外部扬声器"、"SPR";
simple-audio-card、format ="DSP_B";
simple-audio-card、bitclock-master =<&sound_master>;
simple-audio-card、frame-master =<&sound_master>;
简单音频卡、位时钟反转;
简单音频卡、CPU{
sound-Dai =<&MCASP1>;
};
sound_master:simple-audio-card、codec {
Sound-Dai =<&TLV320AIC3111>;
Clocks =<&tlv320_MCLK>;
};
};
root@am62xx-evm:~# amixer
简单混频器控制"计时器模拟"、0
能力:容量
播放通道:左前-右前
限制:播放0 - 127
单声道:
左前:播放127 [100%][0.00dB]
右前:播放127[100%][0.00dB]
简单混频器控制"Speedaker Driver"、0
功能:pvolume pswitch
播放通道:左前-右前
限制:播放0 - 3
单声道:
左前:播放3 [100%][24.00dB][开]
右前:播放3 [100%][24.00dB][开]
简单混音器控制"Speeder left",0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[打开]
简单混频器控制"Speeder Right"、0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[打开]
简单混频器控制"MIC PGA"、0
功能:cvolume capacity-joined
捕捉通道:单声道
限制:捕捉0 - 119
单声道:捕获53 [45%][26.50dB]
简单混频器控制'adc'、0
功能: cvolume cvolume-joined cswitch cswitch-joined
捕捉通道:单声道
限制:捕捉0 - 64
单声道:拍摄59 [92%][9.50dB][开]
简单混频器控制'adc 精细',0
功能:cvolume capacity-joined
捕捉通道:单声道
限制:捕捉0 - 4
单声道:捕捉1 [25%][0.10dB]
简单混合器控制'DAC'、0
能力:容量
播放通道:左前-右前
限制:播放0 - 175
单声道:
左前:播放87 [50%][-20.00dB]
右前:播放87[50%][-20.00dB]
简单混频器控制"DAC LEFT Input"、0
功能:枚举
项目:"关闭""左数据""右数据""多功能"
项目0:'左侧数据'
简单混频器控制"DAC Right Input"(右输入)、0
功能:枚举
项目:"关闭""右侧数据""左侧数据""多功能"
项目0:"正确数据"
简单混频器控制'HP 模拟',0
能力:容量
播放通道:左前-右前
限制:播放0 - 127
单声道:
左前:播放102 [80%][-12.50dB]
右前:播放102 [80%][-12.50dB]
简单混合器控制'HP Driver',0
功能:pvolume pswitch
播放通道:左前-右前
限制:播放0 - 9
单声道:
左前:播放8 [89%][8.00dB][开]
右前:播放8 [89%][8.00dB][开]
简单的混合器控制'HP left',0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[打开]
简单混频器控制"HP 输出驱动器加电时间"、0
功能:枚举
项目:"0us""15.3us""153us""1.53ms""15.3ms""76.2ms"153ms""304ms"610ms"1.22s""3.04s""6.1s"
项目0:"304ms"
简单混频器控制'HP 输出驱动器斜升步进',0
功能:枚举
项:"0ms""0.98ms""1.95ms""3.9ms"
项目0:'0ms'
简单混合器控制'HP 右侧',0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[打开]
简单混频器控制'MIC1LM M-端子',0
功能:枚举
项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
项目0:'关闭'
简单混频器控制'MIC1LM P 端子',0
功能:枚举
项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
温度0:"FFR 10 Ohm"
简单混频器控制'MIC1LP P 端子',0
功能:枚举
项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
温度0:"FFR 10 Ohm"
简单混频器控制'MIC1RP P 端子',0
功能:枚举
项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
项目0:'关闭'
简单混频器控制'Output Left from Left DAC'、0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[打开]
简单混频器控制'Output Left from MIC1LP'、0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[关闭]
简单混频器控制'Output Left from MIC1RP'、0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[关闭]
简单的混频器控制"从 MIC1RP', 0输出
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[关闭]
简单的混频器控制'从右输出 dac'、0
功能:pswitch pswitch-joined
播放频道:单声道
单声道:播放[打开]
简单混音器控制'音量软步进',0
功能:枚举
商品:"快速"""低""已禁用"
项目0:"快速"
root@am62xx-EVM:~#
您可以:
root@am62xx-evm:~# i2cdump -y -f 1 0x18
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?..........
10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 ......... ?
20: 06 3E 00 7f 7f 7f 02 02 00 00 20 86 00 80?>??????? .. ???
30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
60:00 00 00 00 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 00 00.
80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
您好、盛浩、我终于设法获得了 AIC31XX 驱动程序的 AGC 控制、似乎可以写入正确的寄存器、但无法正常工作。
aplay -l
****播放硬件设备列表****
卡0:AM62xSKEVM [AM62x-SKEVM]、器件0:Davinci-McASP.0-tlv320aic31xx-hifi tlv320aic31xx-hif-0[Davinci-McASP.0-tlv320aic31xx-hifi tlv320aic31xx-hif-0]
子器件:1/1
子设备#0:子设备#0
这是 AIC3111的寄存器转储
i2cdump -y -f 1 0x18
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00:00 00 01 56 03 91 08 08 80 00 00 88 82 00 80 80 ..?V???? ………………………………………
10:08 00 88 82 80 04 00 00 01 4c 00 04 88 00??????? ...?L.?.
20:00 00 00 00 80 bb 11 00 00 00 00 00 00 00 00 00 ...??.........
30:00 00 00 02 32 12 03 02 02 11 10 00 01 04 00 D4 ...2????? ……………………………
40: 0C F4 00 6F 38 00 00 00 00 00 ee 10 D8 7e E3 ????.o8... ???~?
50: 00 00 00 20 00 80 F4 50 30 20 00 00 00 00 .. ...?P0……
60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
70:00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 ... ?..........
80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
我设置了以下内容:
$> amixer 设置'AGC'打开
#将攻击时间设置为8ms
$> amixer 设置"AGC 启动时间" 416/fs
#将衰减时间设置为100ms
$> amixer 设置"AGC 衰减时间" 4608/fs
#将 AGC 目标电平设置为-10dB
$> amixer cset numid=6、iface=mixer、name='AGC Target Level' 2
#设置 AGC 迟滞=禁用、噪声阈值=-90dB
$> amixer cset numid=7、iface=混频器、name='AGC 迟滞设置' 3
$> amixer cset numid=8、iface=mixer、name='agc noise threshold' 31
#将 AGC 最大增益设置为40dB
$> amixer cset numid=9、iface=mixer、name='AGC Max gain' 80
#要录制麦克风音频
$> arecord -f dat -V 单声道-d 5 -t wav testMic.wav
#播放录音
$>播放 testMic.wav
但听不到任何声音这样!
此外、我正在使用 TLV320AIC3111EVM 上的麦克风、如果我点按麦克风、无论跳线 W2和 W3如何、我都能听到喀嗒和噼啪声?!
下面是我现在拥有的 Kcontrols。
$>amixer 控件
简单混频器控制"计时器模拟"、0
简单混频器控制"Speedaker Driver"、0
简单混音器控制"Speeder left",0
简单混频器控制"Speeder Right"、0
简单混频器控制"MIC PGA"、0
简单混频器控制'adc'、0
简单混频器控制'adc 精细',0
简单混频器控制'AGC'、0
简单混频器控制'AGC 攻击时间',0
简单混频器控制'AGC 衰减时间'、0
简单混频器控制'AGC 湿滞设置',0
简单混频器控制'AGC 最大增益'、0
简单混频器控制"AGC 噪声阈值"、0
简单混频器控制'AGC 目标电平'、0
简单混合器控制'DAC'、0
简单混频器控制"DAC LEFT Input"、0
简单混频器控制"DAC Right Input"(右输入)、0
简单混频器控制'HP 模拟',0
简单混合器控制'HP Driver',0
简单的混合器控制'HP left',0
简单混频器控制"HP 输出驱动器加电时间"、0
简单混频器控制'HP 输出驱动器斜升步进',0
简单混合器控制'HP 右侧',0
简单混频器控制'MIC1LM M-端子',0
简单混频器控制'MIC1LM P 端子',0
简单混频器控制'MIC1LP P 端子',0
简单混频器控制'MIC1RP P 端子',0
简单混频器控制'Output Left from Left DAC'、0
简单混频器控制'Output Left from MIC1LP'、0
简单混频器控制'Output Left from MIC1RP'、0
简单的混频器控制"从 MIC1RP', 0输出
简单的混频器控制'从右输出 dac'、0
简单混音器控制'音量软步进',0
您好、升豪、附件是音频文件。
我有一键通麦克风、当 PTT 关闭、并且音频清晰时、您将从音频中听到一些背景噪音。 此记录是在禁用 AGC 的情况下进行的。
谢谢