音视频的简介及其I2S协议

音频简介

     将针对声音的各种要求全部叠加到 DAC 和 ADC 芯片上,那么就会得到一个专门用于音频的芯片,也就是音频编解码芯片,音频 CODEC 的本质是 ADC 和 DAC.
     采样率和采样位数就是衡量一款音频CODEC 最重要的指标。比如常见音频采样率有 8K、 44.1K、 48K、 192K 甚至 384K 和 768K,采样位数常见的有 8 位、 16 位、 24 位、 32 位。采样率和采样位数越高,那么音频 CODEC 越能真实的还原声音,也就是大家说的 HIFI。因此大家会看到高端的音频播放器都会有很高的采样率和采样位数,同样的价格也会越高。当然了,实际的效果还与其他部分有关,采样率和采样位数只是其中重要的指标之一。

以WM8950为例

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。

该芯片框图如下:
音视频的简介及其I2S协议_第1张图片
①、此部分是 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 根线,用于主控制器和 WM8960
之间进行数据“沟通”。主控制器向 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 的。

I2S接口总结

I2S(Inter-IC Sound)总线有时候也写作 IIS, I2S 是飞利浦公司提出的一种用于数字音频设备之间进行音频数据传输的总线。和 I2C、 SPI 这些常见的通信协议一样, I2S 总线用于主控制器和音频 CODEC 芯片之间传输音频数据。因此,要想使用 I2S 协议, 主控制器和音频 CODEC 都得支持 I2S 协议, I.MX6ULL 的 SAI 外设就支持 I2S 协议, WM8960 同样也支持 I2S, I2S 接口需要 3 根信号线(如果需要实现收和发,那么就要 4根信号线,收和发分别使用一根信号线):
SCK: 串行时钟信号,也叫做位时钟(BCLK),音频数据的每一位数据都对应一个 SCK,立体声都是双声道的,因此 SCK=2×采样率×采样位数。比如采样率为 44.1KHz、 16 位的立体声音频,那么 SCK=2× 44100× 16=1411200Hz=1.4112MHz。
WS: 字段(声道)选择信号,也叫做 LRCK,也叫做帧时钟,用于切换左右声道数据, WS 为“1”表示正在传输左声道的数据, WS 为“0”表示正在传输右声道的数据。 WS 的频率等于采样率,比如采样率为 44.1KHz 的音频, WS=44.1KHz。
SD: 串行数据信号,也就是我们实际的音频数据,如果要同时实现放音和录音,那么就需要 2 根数据线,比如 WM8960 的 ADCDAT 和 DACDAT,就是分别用于录音和放音。不管音频数据是多少位的,数据的最高位都是最先传输的。数据的最高位总是出现在一帧开始后(LRCK变化)的第 2 个 SCK 脉冲处。
    另外,有时候为了使音频 CODEC 芯片与主控制器之间能够更好的同步,会引入另外一个叫做 MCLK 的信号,也叫做主时钟或系统时钟,一般是采样率的 256 倍或 384 倍。
音视频的简介及其I2S协议_第2张图片
        一帧立体音的时序图

你可能感兴趣的:(音视频,linux,运维,服务器,音视频)