第一范文网 - 专业文章范例文档资料分享平台

音乐播放器课程设计报告

来源:用户分享 时间:2025/6/6 5:39:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

if(micen)regval|=3<<4|3<<0; //开启LIN2INPPGA,LIP2INPGA,RIN2INPPGA,RIP2INPGA. else regval&=~(3<<4|3<<0); //关闭LIN2INPPGA,LIP2INPGA,RIN2INPPGA,RIP2INPGA.

}

//WM8978 输出配置

//dacen:DAC输出(放音)开启(1)/关闭(0)

//bpsen:Bypass输出(录音,包括MIC,LINE IN,AUX等)开启(1)/关闭(0) void WM8978_Output_Cfg(u8 dacen,u8 bpsen) { }

15

WM8978_Write_Reg(44,regval);//设置R44

if(lineinen)WM8978_LINEIN_Gain(5);//LINE IN 0dB增益 else WM8978_LINEIN_Gain(0); //关闭LINE IN if(auxen)WM8978_AUX_Gain(7);//AUX 6dB增益 else WM8978_AUX_Gain(0);

//关闭AUX输入

u16 regval=0;

if(dacen)regval|=1<<0; //DAC输出使能 if(bpsen) { }

WM8978_Write_Reg(50,regval);//R50设置 WM8978_Write_Reg(51,regval);//R51设置

regval|=1<<1; regval|=5<<2;

//BYPASS使能 //0dB增益

搜索更多关于: 音乐播放器课程设计报告 的文档
音乐播放器课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8rkwu6lxvy072ie1yi364bptb11x4w00mg0_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top