嵌入式爱好者

嵌入式爱好者 门户 知识库 查看内容

NAU88C22的插拔检测

2024-8-28 10:38| 发布者: Espoir| 查看: 42| 评论: 0

类目:  >  知识库     文档编号: 1496

由于音频芯片方案逐步切换至NAU88C22,有部分客户自制的底板出现了无法放音的情况,比较容易踩坑的是NAU88C22的音频切换部分。

NAU88C22的音频切换电路是由3脚(GPIO2)控制的, 插入耳机之前,AUD_INT和GND连接,NAU88C22的GPIO2电平状态为低,此时声音从sperker输出;插入耳机之后,AUD_INT和GND断开,GPIO2被上拉到3V3,电平状态为高,此时声音从耳机输出。

3脚的默认状态为高,也就是从耳机输出。在有些场景下,只需要用一种方式输出。

  • 当只用喇叭时,需要把3脚接GND;
  • 当只用耳机时,3脚可以悬空;

如果硬件上3脚已经被悬空,同时又只使用喇叭,可以在NAU88C22的手册当中找到GPIO极性设置。用于设置插拔检测极性的是NAU88C22的寄存器13。

以imx6ull为例,对应的设置在imx-nau8822.c当中,路径如下:

$ vi sound/soc/fsl/imx-nau8822.c

找到imx_nau8822_late_probe函数的以下位置:

/* Enable left and right headphone output drivers on logic 1 */
snd_soc_update_bits(codec, NAU8822_REG_JACK_DETECT_CONTROL_2, 0xF<<4, 1<<4);
/* Enable left and right speaker output drivers on logic 0 */
snd_soc_update_bits(codec, NAU8822_REG_JACK_DETECT_CONTROL_2, 0xF<<0, 1<<1);

可以看出,寄存器13的bit4和bit1的值为1,对应的是当GPIO2为1时,从耳机输出,GPIO2为0时,从喇叭输出。如果将寄存器13的bit5和bit0置1,可以实现极性反转,即GPIO2为1时,从喇叭输出,GPIO2为0时,从耳机输出。

修改后的代码:

/* Enable left and right headphone output drivers on logic 1 */
snd_soc_update_bits(codec, NAU8822_REG_JACK_DETECT_CONTROL_2, 0xF<<4, 1<<5);
/* Enable left and right speaker output drivers on logic 0 */
snd_soc_update_bits(codec, NAU8822_REG_JACK_DETECT_CONTROL_2, 0xF<<0, 1<<0);


已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-1-4 18:44

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部