音乐播放器课程设计报告(3)

2019-08-31 10:46

}

wm8978代码: #include \#include \#include \

static u16 WM8978_REGVAL_TBL[58]= { };

//WM8978初始化 //返回值:0,初始化正常 // 其他,错误代码 u8 WM8978_Init(void) {

u8 res;

GPIO_InitTypeDef GPIO_InitStructure;

0X0000,0X0000,0X0000,0X0000,0X0050,0X0000,0X0140,0X0000, 0X0000,0X0000,0X0000,0X00FF,0X00FF,0X0000,0X0100,0X00FF, 0X00FF,0X0000,0X012C,0X002C,0X002C,0X002C,0X002C,0X0000, 0X0032,0X0000,0X0000,0X0000,0X0000,0X0000,0X0000,0X0000, 0X0038,0X000B,0X0032,0X0000,0X0008,0X000C,0X0093,0X00E9, 0X0000,0X0000,0X0000,0X0000,0X0003,0X0010,0X0010,0X0100, 0X0100,0X0002,0X0001,0X0001,0X0039,0X0039,0X0039,0X0039, 0X0001,0X0001

10

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE); //使能外设GPIOB,GPIOC时

//PB12/13 复用功能输出

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化

//PC2/PC3/PC6复用功能输出

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3|GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化

GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_SPI2); //PB12,AF5 I2S_LRCK

GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_SPI2); //PB13,AF5 I2S_SCLK

GPIO_PinAFConfig(GPIOC,GPIO_PinSource3,GPIO_AF_SPI2); I2S_DACDATA

GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_SPI2); I2S_MCK

//PC3 ,AF5

//PC6 ,AF5

GPIO_PinAFConfig(GPIOC,GPIO_PinSource2,GPIO_AF6_SPI2); //PC2 ,AF6 I2S_ADCDATA I2S2ext_SD是AF6!!!

11

IIC_Init();//初始化IIC接口

res=WM8978_Write_Reg(0,0); //软复位WM8978 if(res)return 1; //以下为通用设置

//发送指令失败,WM8978异常

WM8978_Write_Reg(1,0X1B); //R1,MICEN设置为1(MIC使能),BIASEN设置为1(模拟器工作),VMIDSEL[1:0]设置为:11(5K)

WM8978_Write_Reg(2,0X1B0); //R2,ROUT1,LOUT1输出使能(耳机可以工作),BOOSTENR,BOOSTENL使能

WM8978_Write_Reg(3,0X6C); //R3,LOUT2,ROUT2输出使能(喇叭工作),RMIX,LMIX使能

}

//WM8978写寄存器 //reg:寄存器地址 //val:要写入寄存器的值 //返回值:0,成功; // 其他,错误代码

u8 WM8978_Write_Reg(u8 reg,u16 val)

WM8978_Write_Reg(6,0);

//R6,MCLK由外部提供

WM8978_Write_Reg(43,1<<4); //R43,INVROUT2反向,驱动喇叭

WM8978_Write_Reg(47,1<<8); //R47设置,PGABOOSTL,左通道MIC获得20倍增益 WM8978_Write_Reg(48,1<<8); //R48设置,PGABOOSTR,右通道MIC获得20倍增益 WM8978_Write_Reg(49,1<<1); //R49,TSDEN,开启过热保护

WM8978_Write_Reg(10,1<<3); //R10,SOFTMUTE关闭,128x采样,最佳SNR WM8978_Write_Reg(14,1<<3); //R14,ADC 128x采样率 return 0;

12

{

IIC_Start();

IIC_Send_Byte((WM8978_ADDR<<1)|0);//发送器件地址+写命令 if(IIC_Wait_Ack())return 1; //等待应答(成功?/失败?)

IIC_Send_Byte((reg<<1)|((val>>8)&0X01));//写寄存器地址+数据的最高位

if(IIC_Wait_Ack())return 2; //等待应答(成功?/失败?) IIC_Send_Byte(val&0XFF);

//发送数据

if(IIC_Wait_Ack())return 3; //等待应答(成功?/失败?)

IIC_Stop(); }

//WM8978读寄存器

//就是读取本地寄存器值缓冲区内的对应值 //reg:寄存器地址 //返回值:寄存器值

u16 WM8978_Read_Reg(u8 reg) { }

//WM8978 DAC/ADC配置 //adcen:adc使能(1)/关闭(0) //dacen:dac使能(1)/关闭(0)

void WM8978_ADDA_Cfg(u8 dacen,u8 adcen)

13

WM8978_REGVAL_TBL[reg]=val; //保存寄存器值到本地 return 0;

return WM8978_REGVAL_TBL[reg];

{ }

//WM8978 输入通道配置 //micen:MIC开启(1)/关闭(0) //lineinen:Line In开启(1)/关闭(0) //auxen:aux开启(1)/关闭(0)

void WM8978_Input_Cfg(u8 micen,u8 lineinen,u8 auxen) {

u16 regval;

regval=WM8978_Read_Reg(2); //读取R2 if(micen)regval|=3<<2; else regval&=~(3<<2);

//开启INPPGAENR,INPPGAENL(MIC的PGA放大) //关闭INPPGAENR,INPPGAENL.

u16 regval;

regval=WM8978_Read_Reg(3); //读取R3 if(dacen)regval|=3<<0; else regval&=~(3<<0);

//R3最低2个位设置为1,开启DACR&DACL //R3最低2个位清零,关闭DACR&DACL.

WM8978_Write_Reg(3,regval); //设置R3 regval=WM8978_Read_Reg(2); //读取R2 if(adcen)regval|=3<<0; else regval&=~(3<<0);

//R2最低2个位设置为1,开启ADCR&ADCL //R2最低2个位清零,关闭ADCR&ADCL.

WM8978_Write_Reg(2,regval); //设置R2

WM8978_Write_Reg(2,regval); //设置R2

regval=WM8978_Read_Reg(44); //读取R44

14


音乐播放器课程设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:牛津译林版2018年中考第二次模拟测试试题九年级英语试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: