Fork Me on GitHub

源码开放学ARM

LASO - Learn ARM with Source Open

首页         目录索引         资料下载         代码下载         联系作者        
下载PDF打印版本

AC97 控制器

AC97

1. WAV 数字音频数据 (SDRAM)
2. S3C6410 AC97 Controller <--AC97--> WM9713 芯片进行通信
	把 wav 数据传送给 WM9713
3. WM9713 按照 位时钟 接收8位组成1byte,
	接收2bytes组成一个声音数据,
	接收左右2个声音数据,组成一个数据帧,
	连续接收22K个数据帧,播放出1秒的音乐。
4. 最后经过 WM9713 芯片内部的数模转换 DAC ,变成电流模拟量,传送给耳机。
	
AC97 接口规范 Signals
	SDIN
	SDOUT
	BITCLK
	SYNC
	RESET
	
AC97 Controller (s3c6410)
------------------
AC-Link (AC97 interface)
------------------
AC97 CODEC	(WM9713)
	
软件的工作
	1. 配置管脚的功能复用
	2. 配置 AC97 Controller 控制器的工作参数(包含了时序参数) (SFR)
	3. AC97 Controller 内部不包含DMA,所以数据必须手工一个一个发送到 AC97 DATA 数据寄存器
	4. 对 WAV 数据区域的数据进行写数据的操作
	5. 通过 AC97 interface 配置 WM9713 来进行工作
	补充
	6. 如果需要用 DMA 传送,则需要配置 DMA 的寄存器 SFR
	
硬件的工作
	1. WM9713 芯片怎么工作? (控制量-增益 gain,音色,mute/no mute)
		本身加电之后,本身是不能工作,需要对 WM9713 进行编程
	2. 如果软件手工发送音频数据,会占用大量cpu时间,
	那么通常的做法是采用 SoC (6410) 自带的 DMA 控制器来传送数据。
		
AC97_controller 初始化就是让 AC97 内部的状态机从加电后的1经历2到3表示active,则就可以工作了。

WM9713 芯片初始化是解决 mute, hp volume, ADC DAC enable disable 
	需要阅读 wm9714.pdf 芯片手册,查看它的内部寄存器配置得到的。

AC97 硬件连接

AC97



AC97 Controller

------------------

AC-Link

------------------

AC97 CODEC





                AC-Link

Controller  ---------------->

               PCM data



BMP = BMP Header + DIB

WAV = WAV Header + PCM data



PCM -- DIB 

(Pulse-Code Modulation)

(device independant bitmap)





AC97 Signals

------------

1. X97SYNC 帧同步信号

fixed at 48Khz



2. X97BITCLK 位时钟

fixed at 15.288Mhz



3. X97SDO/X97SDI 数据输出/输入



4. Reset

上一节    |    下一节
blog comments powered by Disqus