BIOS开发笔记 3 – I2S Audio
概述
I²S 或 I2S(英语:Inter-IC Sound或Integrated Interchip Sound)是IC间传输数字音频数据的一种接口标准,采用序列的方式传输2组(左右声道)数据。I2S 是除 HDA 外的一大主流音频接口,但它更倾向于应用在低功耗的设备上,如手机、平板等。
I2S Audio Codec(音频编解码器)是根据 ACPI 表或操作系统特定的静态配置信息来进行枚举的。 在使用的时候,需要启用 Audio DSP 才能启用 I2S 链接,因为寄存器只能通过音频 DSP 及其固件进行寻址。
I2S 厂商有咱们中国台湾的Realtek,国内厂商有顺芯,下面将以顺芯的ES83XX系列为例作一些讲解。
使用场景
Audio Codec 在 PC 系统中主要参与音频的输入输出功能。
输入:即通过麦克风收集音频数据并将其编码传递给处理器,然后根据需要进行各项处理,如常见的录音,它将声音最后转换成数据存储与磁盘中。
输出:将音频流数据解码,通过播放器还原成声音,就是我们从喇叭听到的声音。
硬件组成
典型一条I²S总线至少由3条传输线组成:
1. 位时钟线(BCLK: bit clock line 或 SCLK)
- 标准名称为"连续串行时钟 (Continuous Serial Clock, SCK)",一般称为"位时钟线(bit clock, BCLK)"
2. 字符选择线(word select line)
- 标准名称为"字符选择(word select, WS)",一般称为"左右时钟(left-right clock,LRCLK)"
- 0 表示左声道,1 表示右声道
- 也称为"帧同步(Frame Sync, FS)线"
3. 一条以上的复合数据线(SDATA:multiplexed data)
- 标准名称为"串行数据(Serial Data, SD)",但也可称为SDATA, SDIN, SDOUT,DACDAT, ADCDAT..等
它们的关系大致如下:
它还可能包括以下几条:
1. 主时脉MCLK(256 x LRCLK)
- 这不是I2S标准的一部分,但通常包含在其中以使模拟/数字转换器的内部操作同步。
2. 用于传输资料的复合数据线(multiplex)
顺芯ES83XX
顺芯有ES8336、ES8326、ES8327等几款常用的编解码器,它们最大的区别在于麦克风的功能。8336设计之初是支持AMIC(模拟麦克风)和DMIC(数字麦克风)的,但最终只有AMIC功能可正常使用。而8326跟8327都只单独支持一种麦克风类型,前者是DMIC,后者是AMIC。
下面以ES8326为例,看几组比较重要的信号。
I2S
由 SDOUT、SCLK、LRCK 和 SDIN 组成,SDIN 和 SDOUT 是用于音频输入、输出的数据线,其它两个信号前文已有提到。
I2C
这组 I2C 信号有 CDATA、CCLK、CE 和 INTOUT 4个信号,用于I2C通信的主要是 CDATA 和 CCLK ,INTOUT 是中断信号,CE 则是 I2C 地址选择信号,ASL 代码需要根据此地址配置 I2C 地址。
Codec 内部是有许多寄存器的,使用的时候ASL代码或OS驱动都可以根据功能的需要对它进行配置,于是就提供了个I2C的接口出来,供处理器访问使用,而 I2S 只是单纯用来传输音频数据的。
codec 正常工作的前提是I2C是否正常,I2C则需要BIOS启用并且在OS安装相应的chipset驱动。
LOUT / ROUT
DAC立体声模拟输出,后端连接的是扬声器或耳机,这里只有一组信号,所以耳机和扬声器共用的一组信号。
MCLK
有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock)。若外部有使用MCLK,ASL代码中需要正确配置该CLK的值,否则会导致播放声音带有杂音。常见的晶振有20MHz,19.2MHz等。
MIC1P / MIC1N
AMIC,一对模拟麦克风差分信号,普通的耳机麦克风都是使用模拟信号
DMIC_SCL / DMIC_SDA1 / DMIC_SDA2
DMIC,数字麦克风信号,一般用于主板外置麦克风,当然外置的也可以使用AMIC。
HEADSET
耳机检测信号
GMS0 / GMS1
CTIA和OMTP两种标准耳机自动切换信号。耳机一般有CTIA和OMTP两种制式。前者是美标,后者是国标,他们的区别在于插头节点地和麦克的定义相反。
通过这种自动切换的设计就可以在同一个耳机插口兼容两种耳机标准。
版权声明:
作者:bin
链接:https://ay123.net/mystudy/bios/1289/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论