android下调试声卡驱动之wm8960介绍一
经过了一段时间的Android下wm8960驱动的调试,终于实现录音和播放功能了,在调试过程中有了一些心得,与大家分享一
下,由于能力有限,错误之处还望海涵和指教。
一、总述
wm8960芯片的使用其实就是对该芯片寄存器的设置,要实现的每个功能在芯片内部都是每一个通道,也就是数据从输入端
流进沿着你设置的通道从输出端流出,如下图的芯片内部图和通道事例。
二、PLL功能介绍
wm8960支持使用DSP时钟和PLL功能,PLL可以更灵活的得到在芯片内部所需要的时钟,所以为了不改DSP的时钟频率,
一般采用PLL功能。采用PLL功能后Codec要为主模式,设置寄存器是R07的bit6(MS)置1。
PLL的频率是通过寄存器位PLLN和PLLK进行设置的,计算关系和芯片内部PLL图如下:
f2=4×2×11.2896MHz的=90.3168MHz
R = 90.3168 / 12 = 7.5264
PLLN = int R = 7
K = int ( 2^24 x (7.5264 – 7)) = 8831526 = 86C226h
通过上述分析计算可以设置PLL功能的输出频率为11.2896MHz,实现如下:
R26的bit0(DACL)置1:给PLL功能使能;
R52的bit4(PLLPRESCALE)置1:预分频,如果MCLK=12M就不用设置该位了;
R52的bit[3:0](PLLN)置0111:设置PLLN的值;
R52的bit5(SDM)置1:选择为小数模式;
R53的bit[8:0](PLLK)置01000 0110:设置PLLK的值;
R54的bit[8:0](PLLK)置01100 0010:设置PLLK的值;
R55的bit[8:0](PLLK)置00010 0110:设置PLLK的值;
R04的bit[0](CLKSEL)置1:选择PLL输出的时钟(置0表示选择MCLK时钟);
R04的bit[2:1](SYSCLKDIV)置10:分频(除以2)。
这里说一下,如果DSP输出是11.2896MHz可以直接使用,就不用设置PLL了。为什要输11.2896MHz在《I2S音频通信》
已经介绍了。
更多相关文章
- Fm发射功能在车载android系统的应用
- Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
- Android(安卓)为你的应用添加悬浮窗功能
- android定时定位 - 利用百度定位API来实现定时定位功能
- [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)
- Android在界面中重复点击导致多次跳转或打开多个相同界面的问题
- Android闹钟【复杂版】【大明进化十五】
- android的轮播图Banner之本地加载和网络加载图片
- 谷安: HTC Android(安卓)智能手机将率先内建景德镇银联支付功能.