云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 音乐播放器课程设计报告

音乐播放器课程设计报告

  • 62 次阅读
  • 3 次下载
  • 2025/12/2 23:32:57

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增益

搜索更多关于: 音乐播放器课程设计报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
本文作者:...

共分享92篇相关文档

文档简介:

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,LMI

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com