IMX93 音频解码芯片es8388的驱动适配(未整理笔记)

使用的音频解码芯片是es8388:

驱动:
dmesg会有加载的声卡日志:
  1. dmesg |grep -i ALSA -A 10

编解码器(Codec)

查看声卡:
  1. cat /proc/asound/cards
边录边播:-d5   5秒
  1. arecord -d5 -Dhw:0,0 -r48000 -c2 -fS16_LE -traw | aplay -Dhw:0,0 -r48000 -c2 -fS16_LE
播放48khz 16bit的立体音:
  1. aplay -r 48000 -f S16_LE -c 2 weed-eater-16bit-48khz-zoom-r24-73143.mp3


soc的音频部分:
  1. yangx@u20:~/linux/IMX93/IAC-IMX93XX-MB-BETA-V1_00/kernel$ git diff arch/arm64/configs/imx93_qiyang_defconfig
  2. diff --git a/arch/arm64/configs/imx93_qiyang_defconfig b/arch/arm64/configs/imx93_qiyang_defconfig
  3. index 68593902d49a..785189946777 100644
  4. --- a/arch/arm64/configs/imx93_qiyang_defconfig
  5. +++ b/arch/arm64/configs/imx93_qiyang_defconfig
  6. @@ -668,10 +668,10 @@ CONFIG_SND_SOC_FSL_EASRC=m
  7. CONFIG_SND_SOC_FSL_XCVR=m
  8. CONFIG_SND_SOC_FSL_ESAI_CLIENT=y
  9. CONFIG_SND_SOC_FSL_RPMSG=m
  10. -CONFIG_SND_IMX_SOC=m
  11. +CONFIG_SND_IMX_SOC=y
  12. CONFIG_SND_SOC_IMX_SGTL5000=m
  13. CONFIG_SND_SOC_IMX_SPDIF=m
  14. -CONFIG_SND_SOC_FSL_ASOC_CARD=m
  15. +CONFIG_SND_SOC_FSL_ASOC_CARD=y
  16. CONFIG_SND_SOC_IMX_AUDMIX=m
  17. CONFIG_SND_SOC_IMX_HDMI=m
  18. CONFIG_SND_SOC_IMX_CARD=m

设备树:
hp-det-gpio 是耳机检测
spk-con-gpio 是扬声器的连接

fsl,sai-mclk-direction-output; 
 这个属性表明 SAI1 设备的主时钟(MCLK)是输出的。MCLK通常用于同步外部音频设备,例如音频编解码器。



原理图:
音频放大器(AMP)电路
对应 GPIO_AUD_AMP_nSD 引脚使能

数字音频接口用于向ES8388输入DAC数据,并从中输出ADC数据。数字音频接口使用四个引脚:
 ASDOUT:ADC数据输出
 DSDIN :DAC数据输入
 LRCK : Left/Right data alignment clock
 SCLK :位时钟,用于同步



sys用户空间:

  1. cat /proc/asound/devices




软件播放:
  1. # 显示声卡列表
  2. aplay -l



引脚图:






时钟比率:
为32倍,或者24倍,或者其他查看RM手册。
根设备树:
分频出来的时钟,实际上使用的时钟:

es8388的音频时钟设置:
44.1khz的时钟算出来的 第一行 = 第二行 X 第三行。
第一行的频率可以放到sai1中的指定频率。
 

8MP的分频:






































posted @ 2024-02-07 10:29  潇汀  阅读(119)  评论(0编辑  收藏  举报