基于ALSA的WM 8976音频驱动的设计
2011-07-24汤银焕黄秋元吴丽娜
周 鹏,王 承,汤银焕,黄秋元,吴丽娜
(1.武汉理工大学信息工程学院,湖北武汉430070;2.上海明波通信技术有限公司,上海201203)
嵌入式系统的设计已经成为现代电子设计的一大领域和方向,其中,嵌入式音频系统已广泛应用于视频监控、便携设备和消费类电子产品等领域。随着人们对嵌入式音频的质量要求越来越高,国内外对其研究也越来越多,并日趋成熟。笔者研制的嵌入式音频系统采用i.MX27多媒体处理器与音频芯片WM8976相结合的方案,操作系统选用Linux(2.6.19.2)。笔者研究了该系统的硬件结构和软件实现,并着重研究了音频驱动程序的设计。
1 硬件概述
在该系统中,采用基于i.MX27处理器和音频芯片WM8976的I2S音频系统体系结构,音频系统体系结构如图1所示。录音基本原理是:模拟信号从麦克风或TVIN进入,通过ADC转换成PCM信号,由 i.MX27的 AUDMUX使内外部的SSI1相连接[1],将 PCM 信号发送到 CPU的 SSI里的FIFO,累积一定数量之后经DMA通道发送到内存。播放同理,它是录制的逆过程。

图1 音频系统体系结构
WM8976使用 I2S 总线传输数据[2],并非AC97,因此处理器需要通过I2C总线对WM8976进行控制。主从模式的选择、PLL电路的使用、采样率的设置等都需要通过I2C总线来配置。音频芯片WM8976提供了4路输出通道,其中通道1用来接耳机;通道2用来连接系统外接扬声器;通道3和通道4在设计中没有用到。此外,WM8976的LIP与LIN引脚连接外部话筒,用来给系统提供音频输入信号,实现录音功能;AUXL和AULR接AV线(红、黄),从电视机输入声音。
i.MX27处理器集成了 I2S控制器接口SSI[3],通过 I2S总线传输音频数据。I2S总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准[4-5]。……
