最新由于项目需要,调试S5PV210开发板 Linux系统上面的音频功能,我们选择的音频编解码芯片是WM8960,连接到CPU的IIS接口,调试过程中遇到了一系列的问题,现总结如下:
调试WM8960使之能播放音频,时钟的配置是很重要的一部分,首先我们需要确定时钟的配置是否正确。Linux启动以后,使用示波器测量 IIS的三个时钟CDClock(Codec Clock ),SClock(串行时钟),LRClock(左右声道选择时钟),发现这三个时钟未按着SPV210的Datasheet中音频子系统中描述的那样工作,正常工作后,三个时钟应该是(CDClock ~= 11.2MHZ, SClock ~= 1.41MHz, LRClock ~= 44KHZ ), 所以我用了一整天的时间来研究音频子系统中时钟的配置,下面的图片是SPV210 Datasheet中 音频子系统与IIS时钟配置重要说明:
首先我们要读懂上面图中时钟的路由,知道音频子系统部分的时钟源选择,我们选择的是EPLL,然后进行分频,分频后的时钟作为时钟源进入到IIS子系统,进入IIS子系统后,我们选择I2SCLK作为 IIS模块的时钟源,然后经过分频可以得到 Root时钟(RCLK),也就是Codec时钟(CodecClock),Root时钟再分频可以得到 BCLK,也就是位时钟也可以称为串行时钟(SClock). IIS 接口root时钟与LRClock时钟之间的关系如下图:
RFS( root 时钟)为256fs = 256*44.1KHz=11.2896 Mhz
另外:
模式寄存器中 BFS 和 RFS关键配置我们采用了默认值, Bit Clock=32 fs, Root clock=256 fs,这里的fs=44.1 MHZ 也就是Codec的采用频率,可以根据WM8960的Datasheet查到,从上面的时钟计算关系图中我们知道fs就是 LRCLK,左右声道选择时钟.
另外细心的同事对移植过程进行了更加详细的总结,我把他转换成了PDF文档,经同事同意,放到了CSDN上面供大家参考,下载地址:
http://download.csdn.net/detail/yimiyangguang1314/5517537