第
33
卷 第
4
期
2011
年
8
月
武汉理工大学学报
·
信息与管理工程版
JOURNAL OF WUT( INFORMATION & MANAGEMENT ENGINEERING)
Vol. 33 No. 4
Aug. 2011
文章编号
: 1007 - 144X( 2011) 04 - 0517 - 04
文献标志码
: A
基于
ALSA
的
WM8976
音频驱动的设计
周 鹏
1
,
王 承
1
,
汤银焕
1
,
黄秋元
1
,
吴丽娜
2
( 1.
武汉理工大学 信息工程学院
,
湖北 武汉
430070 ; 2.
上海明波通信技术有限公司
,
上海
201203)
摘 要
:
研究了由处理器
i. MX27
和音频处理芯片
WM8976
组成的基于
Linux
操作系统的音频处理系统中音
频驱动的设计
,
该驱动实现的音频系统可以应用于视频监控
、
学校教学和旅游导游等领域
。
系统使用
I2C
总
线传输控制信号以便对
codec
进行配置并采用
I2S
总线传输音频数据
,
从而实现
WM8976
的音频驱动
,
同时采
用
ALSA
架构实现声音的录制与播放
,
其中音频
DMA
双缓冲区的设计可有效提高音频数据处理的能力
。
经
过测试
,
该系统可以实现多个频率的录音与播放
,
且效果较好
。
关键词
: i. MX27; ALSA; I2S
总线
; I2C
总线
; DMA
传输
中图分类号
: TP391. 42 DOI: 10. 3963 /j. issn. 1007 - 144X. 2011. 04. 003
收稿日期
: 2011 - 01 - 30.
作者简介
:
周 鹏
( 1961 - ) ,
男
,
湖北武汉人
,
武汉理工大学信息工程学院副教授
.
基金项目
:
湖北省自然科学基金资助项目
( 20101J0169) .
嵌入式系统的设计已经成为现代电子设计的
一大领域和方向
,
其中
,
嵌入式音频系统已广泛应
用于视频监控
、
便携设备和消费类电子产品等领
域
。
随着人们对嵌入式音频的质量要求越来越
高
,
国内外对其研究也越来越多
,
并日趋成熟
。
笔
者研制的嵌入式音频系统采用
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
通道发送
到内存
。
播放同理
,
它是录制的逆过程
。
WM8976
使 用
I2S
总 线 传 输 数 据
[2]
,
并 非
AC97,
因此处理器需要通过
I2C
总线对
WM8976
进行控制
。
主从模式的选择
、PLL
电路的使用
、
采
样率的设置等都需要通过
I2C
总线来配置
。
音频
图
1
音频系统体系结构
芯片
WM8976
提供了
4
路输出通道
,
其中通道
1
用来接耳机
;
通道
2
用来连接系统外接扬声器
;
通
道
3
和通道
4
在设计中没有用到
。
此外
,WM8976
的
LIP
与
LIN
引脚连接外部话筒
,
用来给系统提
供音频输入信号
,
实现录音功能
; AUXL
和
AULR
接
AV
线
(
红
、
黄
) ,
从电视机输入声音
。
i . MX27
处 理 器 集 成 了
I2S
控 制 器 接 口
SSI
[3]
,
通过
I2S
总线传输音频数据
。I2S
总线是
飞利浦公司为数字音频设备之间的音频数据传输
而制定的一种总线标准
[4 - 5]
。i. MX27
提供
4
路
SSI
接口
,
笔者选用接口
2,
即
SSI1。I2S
接口所必
需的信号线有左右声道控制信号线
SSI_FS、
串行
位时钟信号线
SSI_CLK,
以及分别用于输入输出
的两条串行音频引脚线
SSI _ RXDAT/SSI _ TX-
DAT。WM8976
的时钟信号线
LRC、BC LK
分别连
接到
i . MX27
的
SSI_FS、SSI_CLK
引脚
,i . MX27