单片机调试 wm8962

环境准备

现在各类芯片都有对应的软件来配置生成一些代码,或者寄存器的值;wm8962 也一样;
进入官网:wm8962
下载软件包:WISCE Setup 并安装;
下载 WM8962B 设备包,安装;
在这里插入图片描述
wm8962 支持 i2c、spi 接口来进行读写控制;我使用的硬件为 i2c 控制;
wm8962 和 mcu 之间使用 iis 接口传输音频数据,mcu 提供 MCLK 给 wm8962;

wm8962 手册可以通过半导小芯来下载;
手册第 188 页:在这里插入图片描述
可以知道,wm8962 i2c 地址为 0x1A;最低位为读写位,所以写时候地址为:0x34

寄存器配置

对于单片机调试声卡,就是配置一下 wm8962 的寄存器即可;
可以参考一下 wm8962 的 linux 驱动;
主要为:读 id,复位 wm8962,配置时钟,配置参数,配置通道;

运行刚刚安装的 WISCE 软件;
在这里插入图片描述
创建一个新的 system;
在这里插入图片描述
点击 accept;如果没有这个界面就是上面第二个安装包没有安装;
在这里插入图片描述
点击右下角的 load;选择 WM8962B 的配置文件,在安装包的 Profiles/WM8962B/Combos 目录下;
在这里插入图片描述
这样例子的配置就被加载进 WM8962B system 中;
在这里插入图片描述
可以在 Device Configuration 查看配置,包括时钟,通路等;

用文本工具打开上面的文件:48k_256fs_DAC-SPK.txt

* 48k_256fs_DAC-SPK.txt

* This text file will set-up the WM8962 with a stereo DAC to speaker
* Sample rate = 48kHz
* MCLK rate = 256fs
* Input clock = 12.288MHz

  LOAD ..\Startup\Reset_and_Startup.txt
  LOAD ..\Clocking\48000Hz_256fs_12288000HzMCLK.txt
  LOAD ..\Playback_Path\DAC_to_SPK_0dB.txt

可以看到它将配置修改成三步:
Reset_and_Startup.txt

* Reset_and_Startup.txt

* This file does a software reset and brings up VMID
* It should be run as the first stage of any device configuration

   0x0F 0x6243 SMbus_16inx_16dat     Write  0x34      * Software Reset (Does not reset registers R72h-R98h)
   0x7F 0x0000 SMbus_16inx_16dat     Write  0x34      * PLL Software Reset (Resets registers R72h-R98h only)
   0x08 0x09C4 SMbus_16inx_16dat     Write  0x34      * Get full register access/control: CLKREG_OVD=1, SYSCLK_ENA-0
   0x81 0x0001 SMbus_16inx_16dat     Write  0x34      * Disable all PLLs and OSC

   0x1C 0x001C SMbus_16inx_16dat     Write  0x34            * Anti-pop(1CH):           001C  STARTUP_BIAS_ENA=1, VMID_BUF_ENA=1, VMID_RAMP=1
   0x19 0x01C0 SMbus_16inx_16dat     Write  0x34            * Pwr Mgmt (1)(19H):       01C0  DMIC_ENA=0, OPCLK_ENA=0, VMID_SEL=11, BIAS_ENA=1, INL_ENA=0, INR_ENA=0, ADCL_ENA=0, ADCR_ENA=0, MICBIAS_ENA=0
   0x19 0x00C0 SMbus_16inx_16dat     Write  0x34            * Pwr Mgmt (1)(19H):       00C0  DMIC_ENA=0, OPCLK_ENA=0, VMID_SEL=01, BIAS_ENA=1, INL_ENA=0, INR_ENA=0, ADCL_ENA=0, ADCR_ENA=0, MICBIAS_ENA=0

48000Hz_256fs_12288000HzMCLK.txt

* 48000Hz_256fsMCLK.txt

* This text file is used to configure the sample rate and clocking
* Sample Rate = 48kHz
* Clocking is automatic clocking configuration from a 256fs MCLK source

   0x08 0x0800 SMbus_16inx_16dat     RmodW  0x34     0x0820 * CLKREG_OVD=1, SYSCLK_ENA=0
   0x1B 0x0010 SMbus_16inx_16dat     Write  0x34            * Set sample rate to 48kHz
   0x38 0x0006 SMbus_16inx_16dat     RmodW  0x34     0x001E * MCLK_RATE=0011 (256fs)
   0x08 0x0020 SMbus_16inx_16dat     RmodW  0x34     0x0620 * MCLK_SRC=00 (MCLK pin), SYSCLK_ENA=1
   

DAC_to_SPK_0dB.txt

* DAC_to_SPK_0dB.txt

* This file will load a DAC to Speaker path with 0dB gain

   0x05 0x0008 SMbus_16inx_16dat     RmodW  0x34     0x0008 * DAC Mute
   0x1A 0x0198 SMbus_16inx_16dat     RmodW  0x34     0x0198 * Enable DACs and Speaker PGAs
   
   0x69 0x0000 SMbus_16inx_16dat     Write  0x34            * DACL to SPKOUTL
   0x6A 0x0000 SMbus_16inx_16dat     Write  0x34            * DACR to SPKOUTR
   0x33 0x0000 SMbus_16inx_16dat     Write  0x34            * Class D volume = 0dB, mono-mode disabled
   0x28 0x00F9 SMbus_16inx_16dat     Write  0x34            * SPKL PGA volume = 0dB, Zero-cross enabled
   0x29 0x01F9 SMbus_16inx_16dat     Write  0x34            * SPKL PGA volume = 0dB, Zero-cross enabled, Volume update
   0x31 0x00D0 SMbus_16inx_16dat     Write  0x34            * Enable Class D
   
   0x05 0x0000 SMbus_16inx_16dat     RmodW  0x34     0x0008 * DAC Unmute

上面的配置,将声卡配置成了从模式,24 位;
在这里插入图片描述
如果要将 24 位修改为 16 位;
则直接在软件上修改,软件左下角会生成寄存器配置;
在这里插入图片描述
另外一个需要注意的是寄存器 R56(38h)Clocking 4 MCK_RATE 的分频配置
在这里插入图片描述
MCK_RATE = MCLK / fs;
参考 linux 的代码,修改如下:
在这里插入图片描述
对应软件的位置为:
在这里插入图片描述
其它寄存器的例子见 Profiles/WM8962B/ 目录下的其它文件;
寄存器具体信息见 datasheet Register Map 目录;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值