WM8960 IIC调试日志
已有 482 次阅读2021-11-13 15:12
#include "stdint.h"
#include "stdio.h"
#include "swi2c4.h"
#include "wm8960.h"
#include "system.h"
#include "stm32f10x.h"
// PCM从模式,8K采样,16bit位宽,256k位时钟,MCLK=12.288MHz
// 单端MIC 左声道输入linput1,rinput2=线路音输入
void init_wm8960(void)
{
// uint8_t i;
// for(i=0;i<10;i++)
// SWI2C4_write(0x34,wm8960REG[i][0],wm8960REG[i][1]);
swi2c4_write(0x34,0X0F<<1|0x01,0xFF);//Reset
swi2c4_write(0x34,0X00<<1|0x01,0x43+20);//Left Input Volume/Left Input PGA Analogue Mute
swi2c4_write(0x34,0X01<<1|0x01,0x43+20);//Right Input Volume
// swi2c4_write(0x34,0X02<<1|0x01,0x7F-30);//LOUT1 Volume+6db Headphone Output
// swi2c4_write(0x34,0X03<<1|0x01,0x7F-30);//ROUT1 Volume Headphone Output
swi2c4_write(0x34,0X04<<1|0x01,0xD0);//NOTE:slave mode LRCLK
swi2c4_write(0x34,0X05<<1,0x00);//DAC Digital Soft Mute-No mute
swi2c4_write(0x34,0X07<<1|0X00,0x03);//Enable slave mode
// swi2c4_write(0x34,0X08<<1,0xCC);//Clocking(2)
swi2c4_write(0x34,0X09<<1,0x40);//Loopback enabled
// swi2c4_write(0x34,0X14<<1|0x00,0xF1);//Noise Gate
// swi2c4_write(0x34,0X15<<1|0x01,0xC3-20);//Left ADC Digital Volume Control
// swi2c4_write(0x34,0X16<<1|0x01,0xC3-20);//Right ADC Digital Volume Control
swi2c4_write(0x34,0X17<<1|0x01,0xD0);//DAC Mono Mix
// swi2c4_write(0x34,0X18<<1,0x04);//Selects disable mode for ADCLRC and DACLRC(Master mode)
swi2c4_write(0x34,0X19<<1|0x01,0xFE);//Power Mgmt (1) NOTE:0 = Master clock enabled 1 = Master clock disabled
swi2c4_write(0x34,0X1A<<1|0X01,0x82);//Power Mgmt (2)
swi2c4_write(0x34,0X20<<1|0X01,0X18);//Connect Left Input PGA to Left Input Boost Mixer
//swi2c4_write(0x34,0X21<<1|0X01,0x28);//Connect Right Input PGA to Right Input Boost Mixer
swi2c4_write(0x34,0X22<<1|0X01,0x00);//Left DAC to Left Output Mixer
swi2c4_write(0x34,0X25<<1|0X01,0x00);//Right DAC to Right Output Mixer
swi2c4_write(0x34,0X26<<1|0X00,0x80);//Left Output Mixer to Mono Output Mixer Control
// swi2c4_write(0x34,0X27<<1|0X00,0x80);//Right Output Mixer to Mono Output Mixer Control
swi2c4_write(0x34,0X2A<<1|0X00,0x00);//OUT3 Volume =0dB default=-6db
swi2c4_write(0x34,0X2B<<1|0X00,0x02);//LINPUT2/3 to Boost Mixer Gain
swi2c4_write(0x34,0X2C<<1|0X00,0x02);//RINPUT2/3 to Boost Mixer Gain
swi2c4_write(0x34,0X2D<<1,0xf0);//Left Input Boost Mixer to Left Output Mixer
// swi2c4_write(0x34,0X2E<<1,0x80);//Right Input Boost Mixer to Right Output Mixer
swi2c4_write(0x34,0X2F<<1,0x2C);//Power Mgmt (3)
swi2c4_write(0x34,0X30<<1,0x42);
/*
swi2c4_write(0x34,0X0F<<1|0x01,0xFF);//Reset
swi2c4_write(0x34,0X00<<1|0x01,0x03+40);//Left Input Volume/Left Input PGA Analogue Mute
swi2c4_write(0x34,0X01<<1|0x01,0x03+40);//Right Input Volume
swi2c4_write(0x34,0X02<<1|0x01,0x7F-30);//LOUT1 Volume+6db
swi2c4_write(0x34,0X03<<1|0x01,0x7F-30);//ROUT1 Volume
swi2c4_write(0x34,0X05<<1,0x00);//DAC Digital Soft Mute-No mute
swi2c4_write(0x34,0X07<<1,0x4A);//Enable master mode
swi2c4_write(0x34,0X08<<1,0xC4);//Clocking(2)
swi2c4_write(0x34,0X09<<1,0x40);//Loopback enabled
swi2c4_write(0x34,0X15<<1|0x01,0xFF);//Left ADC Digital Volume Control
swi2c4_write(0x34,0X16<<1|0x01,0xFF);//Right ADC Digital Volume Control
swi2c4_write(0x34,0X19<<1,0xFE);//Power Mgmt (1)
swi2c4_write(0x34,0X1A<<1|0X01,0xE0);//Power Mgmt (2)
swi2c4_write(0x34,0X20<<1|0X01,0X08);//Connect Left Input PGA to Left Input Boost Mixer
swi2c4_write(0x34,0X21<<1|0X01,0x08);//Connect Right Input PGA to Left Input Boost Mixer
swi2c4_write(0x34,0X22<<1|0X01,0x00);//Left DAC to Left Output Mixer
swi2c4_write(0x34,0X25<<1|0X01,0x00);//Right DAC to Right Output Mixer
// swi2c4_write(0x34,0X2B<<1,0x00);//LINPUT2/3 to Boost Mixer Gain
// swi2c4_write(0x34,0X2C<<1,0x00);//RINPUT2/3 to Boost Mixer Gain
// swi2c4_write(0x34,0X2D<<1,0x80);//Left Input Boost Mixer to Left Output Mixer
// swi2c4_write(0x34,0X2E<<1,0x80);//Right Input Boost Mixer to Right Output Mixer
swi2c4_write(0x34,0X2F<<1,0x3C);//Power Mgmt (3)
*/
printf("wm8960 Write over!\r\n");
Delay_ms(200);
}