锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Linux 音频驱动

时间:2022-11-22 10:00:00 p48k5s圆形连接器

音频是我们最常用的功能,音频也是 linux 以及安卓的关键应用场合。I.MX6ULL 带有 SAI接口,正点原子 I.MX6ULL ALPHA 开发板通过这个界面外接 WM8960 音频 DAC 芯片,本章我们将学习如何使用它 WM8960 驱动,并通过 WM8960 完成音乐播放和录音的芯片。

1.音频接口简介

1.1 为什么需要音频解码?

处理器要想听到外界的声音,就必须把外界的声音转化为自己能理解的语言。 0 和 一、二进制数据。因此,我们需要将外部声音转换为处理器能够理解的 0 和 1.在信号处理领域,外部声音是模拟信号,处理器可以理解数字信号,因此它涉及到将模拟信号转换为数字信号的过程,完成此功能 ADC 芯片。
同样,如果处理器想要向外界传达自己的声音,也就是说,它涉及到处理器能够理解的东西 0 和 1 这个过程是将数字信号转换为模拟信号,完成这个功能的是 DAC 芯片。
现在我们知道,如果处理器想要听到外界的声音,并向外界传达他们的声音,那么它就需要同时使用 DAC 和 ADC 这两个芯片。是不是买? DAC 和 ADC 芯片呢?答案肯定是肯定的,但音频不仅仅是声音和听力。我们经常需要听到美丽的声音,记录的声音接近真实,可以调整音效,可以处理一些声音(需要 DSP 单元),标准接口统一,开发方便等。叠加这些对声音的所有要求 DAC 和 ADC 在芯片上,您将获得一个专门用于音频的芯片,即音频编解码芯片。英文名称是 Audio CODEC,所以我们在手机或电脑的介绍中看到了CODEC一般来说,这个词是音频编解码。
既然音频 CODEC 的本质是 ADC 和 DAC,所以采样率和采样位数是衡量音频的CODEC 最重要的指标。例如,常见的音频采样率 8K、44.1K、48K、192K 甚至 384K 和 768K,采样位数常见 8 位、16 位、24 位、32 位。采样率和采样位数越高,音频 CODEC 声音越能真原声音,也就是大家都说的 HIFI。所以大家都会看到高端音频播放器采样率和采样位数都很高,同样的价格也会越高。当然,实际效果也与其它部分有关,采样率和采样位数只是重要指标之一。

1.2 WM8960

WM8960 是一颗由 wolfson(欧胜)公司生产的音频编解码芯片是一种低功耗、高质量的立体声音频 CODEC。集成 D 每个通道都可以驱动类喇叭功放 1W 喇叭(8Ω)。内部集成 3 立体声输入源,配置灵活,麦克风接口完整。WM8960 内部 ADC 和 DAC 都为24 位,WM8960 主要特性如下所示
①、DAC 的 SNR(信噪比)为 98dB,3.3V、48KHz 下 THD(谐波失真)-84dB。
②、ADC 的 SNR(信噪比)为 94dB,3.3V、48KHz 下 THD(谐波失真)-82dB。
③、3D 增强。
④、立体声 D 类功放,可直接外接喇叭,8Ω负载下的每个通道 1W。
⑤、集成耳机接口。
⑥、集成麦克风接口。
⑦、采样率支持 8K、11.025K、12K、16K、22.05K、24K、32K、44.1K 和 48K。image
①、此部分是 WM8960 作为立体声音频输入源,提供的输入接口分别提供三种方式 LINPUT1/RINPUT1、LINPUT2/RINPUT2、LINPUT3/RINPUT3。麦克风或线路输入连接到这个接口,这部分需要硬件工程师的关注,因为音频选择需要从哪个方向绘制 PCB 时间要定好。
②、此部分是 WM8960 耳机或喇叭等输出接口,SPK_LP/SPK_LN 支持连接左声道的喇叭 1W 的 8Ω喇叭。SPK_RP/SPK_RN 也支持连接右声道的喇叭 1W的 8Ω最后是喇叭 HP_L/HP_R,用于连接耳机。
③、这部分是与主控制器连接的数字音频接口 5 主控制器和 WM数据沟通在8960之间。主控制器向 WM8960 的 DAC 发送的数据,WM8960 的 ADC 通过这个音频接口完成向主控制传输的数据。这个接口很重要,是我们驱动开发人员关注的焦点。这个接口支持 I2S 格式。此接口 5 根线的作用如下:ADCDAT:ADC 数据输出引脚,收集到的音频数据转换为数字信号,然后通过引脚传输给主控制器。ADCLRC:ADC 数据对齐时钟,即帧时钟(LRCK),用于切换左右声道数据,该信号的频率为采样率。该引脚可配置为 GPIO 功能,配置为 GPIO 以后 ADC 就会使用 DACLRC引脚作为帧时钟。DACDAT:DAC 数据输入引脚,主控器通过引脚输入数字信号 WM8960 的 DAC。DACLRC:DAC 数据对齐时钟,功能和 ADCLRC 都是帧时钟(LRCK),该信号的频率等于采样率,用于切换左右声道数据。
BCLK:同步使用时钟。MCLK:主时钟,WM8960 工作时还需要一路主时钟,这时钟由 I.MX6ULL 提供,MCLK 频率等于采样率 256 或 384 所以大家都在 WM8960 在数据手册中经常看到MCLK=256fs 或 MCLK=384fs。
④、这部分是控制接口,是标准的 I2C 接口,WM8960 如果你想工作,你必须配置它。 I2C 接口就是用于配置 WM8960

1.3 I2S总线

I2S 主控制器和音频总线 CODEC 音频数据在芯片之间传输。所以要用 I2S 协议、主控制器和音频 CODEC 都得支持 I2S 协议,I.MX6ULL 的 SAI 外设就支持 I2S 协议,WM8960 同样也支持 I2S,因此,本章的实验是使用的 I2S 协议完成。I2S 接口需要 3 根信号线(如果需要实现收发,则需要 四条信号线,收发分别使用一条信号线):
此外,有时为了制作音频 CODEC 芯片和主控制器之间可以更好地同步,另一个被称为 MCLK 信号,又称主时钟或系统时钟,通常是采样率 256 倍或 384 倍。

1.4 SAI简介

STM32 中就是通过 SAI 接口连接音频CODEC,I.MX6ULL 的 SAI 是支持帧同步的全双工串行接口 I2S、AC97、TDM 和音频DSP,SAI 主要特点如下:
①、帧最大为 32 个字。
②、可选择字大小 8bit 或 32bit。
③、每个接收和发送通道都有 32×32bit 的 FIFO。
④、FIFO 支持错误后平稳重启。

2.音频驱动使能

2.1 设备树

2.2 使能内核的WM8960

3.alsa-lib和alsa-utils


alsa-utils 是 ALSA 我们还可以通过这些小工具测试我们的声卡。 alsautils-1.2.2.tar.bz2 复制到 ubuntu 并解压,命令如下

4.声卡测试

5.mplayer

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章