经过了一段时间的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音频通信》

已经介绍了。

 

更多相关文章

  1. Fm发射功能在车载android系统的应用
  2. Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
  3. Android(安卓)为你的应用添加悬浮窗功能
  4. android定时定位 - 利用百度定位API来实现定时定位功能
  5. [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)
  6. Android在界面中重复点击导致多次跳转或打开多个相同界面的问题
  7. Android闹钟【复杂版】【大明进化十五】
  8. android的轮播图Banner之本地加载和网络加载图片
  9. 谷安: HTC Android(安卓)智能手机将率先内建景德镇银联支付功能.

随机推荐

  1. android开发专题系列-OPENGL
  2. Android(安卓)下载
  3. android studio 解决65536的方法(64K)
  4. ADT:v22.6.2-1085508创建android工程自动
  5. 设置Activity为全屏显示的两种方法
  6. [ 转]Android折叠列表 ExpandableList
  7. Android快速开发整理(库、插件、常用网站)
  8. 关于自定义无限轮播图_Android
  9. FFmpeg In Android(安卓)- tutorial-5- S
  10. 关于android AbsSeekBar