音乐播放器课程设计报告

上传人:桔**** 文档编号:501735274 上传时间:2023-10-17 格式:DOC 页数:25 大小:58.50KB
返回 下载 相关 举报
音乐播放器课程设计报告_第1页
第1页 / 共25页
音乐播放器课程设计报告_第2页
第2页 / 共25页
音乐播放器课程设计报告_第3页
第3页 / 共25页
音乐播放器课程设计报告_第4页
第4页 / 共25页
音乐播放器课程设计报告_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《音乐播放器课程设计报告》由会员分享,可在线阅读,更多相关《音乐播放器课程设计报告(25页珍藏版)》请在金锄头文库上搜索。

1、-课 程 设 计 报 告课程设计名称: 音乐播放器 院 系: 信息工程学院 学生姓名:班 级:学 号:成 绩:指导教师:开课时间: 2016-2017 学年 2 学期. z.-音乐播放器一、实践的内容和要求1.1实验内容学习WAV格式音频播放原理、数字音频接口及的相关知识。了解模拟音频信号和数字音频信号的概念。掌握编写音频播主要内容 放器的方法。实现音频播放,小键盘输入操作。1.2实验要求本系统要做一个音乐播放器,使用通用定时器定时,用比较输出功能,输出乐谱频率的方波产生声音,对 3 首歌曲编码, 其支持 WAV 格式音频播放(上键:暂停;左键:上一首;右键:下一首)。利用硬件ARM 嵌入式开

2、发平台、 用于 ARM7TDMI 的 JTAG 仿 真器、PC 机 Pentium100开发实现实现音频播放。主要实现:上一首按键:当点击上一首按键时,当前播放歌曲的上 一首歌首被播放。下一首按键:当点击下一首按键时,当前播放歌曲的下一首歌曲即被 播放。当点击停止键时,当前歌曲即会被停止。 播放界面设计: 在歌曲进行播放时, 界面应包含所有的按键, 并且要歌曲的曲目单。二、 实践原理WAV播放器系统要求能够对mp3、wav格式的音频文件进行解码,处理起来速度是有要求的,尤其是对320Kbps的MP3格式数据流的处理,必须非常快,才能实现MP3的流畅播放,可供选择的八位机有AVR、PIC,可供选

3、择的32位处理器有SAMSUNG、STM32、ATMEL等。选择MCU优先考虑于拥有丰富的RAM,八位机RAM主要靠扩展,内部RAM一般在4Kbyte以内,32位机里面,SAMSUNG一般不内带RAM,也要外扩。本实验使用了ARM7处理器,MP3解码可以有两种方法,一是通过ARM处理器软解码,通过对MP3数据格式的解析实现MP3播放,二是通过外部解码芯片直接解码。第一种方法在解码高码率的MP3时,ARM7处理能力吃紧,而且STM32还需要外部DAC来做音频输出,所以采用第二种方法进行解码。MP3常见的解码芯片有VS100*系列和STA01系列,STA01需要外接DAC做音频输出,而VS1003

4、自带DAC,且解码的文件格式包含mp3和wav,另外它还可以实现录音功能,方便以后进行功能的拓展应用。三、实践步骤3.1功能设计开机后,先初始化各外设,然后检测字库文件夹是否存在,如果有问题,则提示Error,如果检测无问题,则开始循环播放 SD卡内MUSIC 文件夹里面的歌曲,在 TFTLCD 上显示歌曲名字、播放时间、歌曲总时间、歌曲数目、当前歌曲的编号等信息。KEY0选择下一首,KEY2 选择上一首,KEY_UP 控制暂停/继续播放。3.2实验步骤1)初始化 WM8978,这个过程包括软复位、DAC 设置、输出设置 和音量设置等。2)初始化 I2S,此过程主要设置 SPI_I2SCFGR

5、 寄存器,设置 I2S 模式、I2S 标准、时钟空闲电平和数据帧长等,最后开启 I2S T* DMA,使能 I2S 外设。 在库函数中初始化 I2S 调用的函数为:void I2S_Init(SPI_TypeDef* SPI*, I2S_InitTypeDef* I2S_InitStruct); 结构体 I2S_InitTypeDef 的定义为: typedef struct uint16_t I2S_Mode; uint16_t I2S_Standard; uint16_t I2S_DataFormat; uint16_t I2S_MCLKOutput; uint32_t I2S_Audio

6、Freq; uint16_t I2S_CPOL; I2S_InitTypeDef; 第一个参数用来设置 I2S 的模式,也就是设置 SPI_I2SCFGR 寄存器的 I2SCFG 相关位。可以配置为主模式发送 I2S_Mode_MasterT*,主模式接受 I2S_Mode_MasterR*,从模式发送 I2S_Mode_SlaveT* 以及从模式接受 I2S_Mode_SlaveR* 四种模式。第二个参数 I2S_Standard 用来设置 I2S 标准,这个前面已经讲解过。可以设置为:飞利浦 标准 I2S_Standard_Phillips,MSB 对齐标准 I2S_Standard_MS

7、B,LSB 对齐标准I2S_Standard_LSB 以及 PCM 标准 I2S_Standard_PCMShort。 第三个参数 I2S_DataFormat 用来设置 I2S 的数据通信格式。这里实际包含设置 SPI_I2SCFGR 寄存器的 HCLEN 位(通道长度)以及 DATLEN 位(传输的数据长度)。当我们 设置为 16 位标准格式 I2S_DataFormat_16b 的时候,实际上传输的数据长度为 16 位,通道长度 为 16 位。当我们设置为其他值的时候,通道长度都为 32 位。第四个参数 I2S_MCLKOutput用来设置是否使能主时钟输出。我们实验会使能主时钟输出。第

8、五个参数 I2S_AudioFreq 用来设置 I2S频率。实际根据输入的频率值,会来计算 SPI 预 分频寄存器 SPI_I2SPR 的预分频奇数因子以及 I2S 线性预分频器的值。这里支持 10 中频率: *define I2S_AudioFreq_192k (uint32_t)192000) *define I2S_AudioFreq_96k (uint32_t)96000) *define I2S_AudioFreq_48k (uint32_t)48000) *define I2S_AudioFreq_44k (uint32_t)44100)*define I2S_AudioFreq_

9、32k (uint32_t)32000)*define I2S_AudioFreq_22k (uint32_t)22050) *define I2S_AudioFreq_16k (uint32_t)16000) *define I2S_AudioFreq_11k (uint32_t)11025)*define I2S_AudioFreq_8k (uint32_t)8000) *define I2S_AudioFreq_Default (uint32_t)2) 第六个参数 I2S_CPOL 用来设置空闲状态时钟电平,取值为高电平 I2S_CPOL_High 以及低电平 I2S_CPOL_Low。

10、 3) 解析 WAV 文件,获取音频信号采样率和位数并设置 I2S 时钟分频器这里,要先解析 WAV 文件,取得音频信号的采样率(fs)和位数(16 位或 32 位),根据这两个参数,来设置 I2S 的时钟分频,这里我们用前面介绍的查表法来设置即可。这是我们单独写了一个设置频率的函数为 I2S2_SampleRate_Set。 4)设置 DMA I2S 播放音频的时候,一般都是通过 DMA 来传输数据的,所以必须配置 DMA,本章我们用 I2S2,其 T*是使用的 DMA1 数据流 4 的通道 0 来传输的。并且STM32F4 的 DMA 具有双缓冲机制,这样可以提高效率,大大方便了我们的数据

11、传输,本章将 DMA1 数据流 4 设置为:双缓冲循环模式,外设和存储器都是 16 位宽,并开启 DMA 传输完成中断(方便填充数据)。 5)编写 DMA 传输完成中断服务函数为了方便填充音频数据,我们使用 DMA 传输完成中断,每当一个缓冲数据发送完后,硬件自动切换为下一个缓冲,同时进入中断服务函数,填充数据到发送完的这个缓冲。 6)开启 DMA 传输,填充数据 最后,我们就只需要开启 DMA 传输,然后及时填充 WAV 数据到 DMA 的两个缓存区即 可。此时,就可以在 WM8978 的耳机和喇叭通道听到所播放音乐了。操作方法为: DMA_Cmd(DMA1_Stream4,ENABLE);

12、/开启 DMA T* 传输,开始播放。3.3流程图3.4关键代码I2s.c代码:*include i2s.h *include usart.hvoid I2S2_Init(u16 I2S_Standard,u16 I2S_Mode,u16 I2S_Clock_Polarity,u16 I2S_DataFormat) I2S_InitTypeDef I2S_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);/使能SPI2时钟RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,ENA

13、BLE); /复位SPI2RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,DISABLE);/结束复位I2S_InitStructure.I2S_Mode=I2S_Mode;/IIS模式I2S_InitStructure.I2S_Standard=I2S_Standard;/IIS标准I2S_InitStructure.I2S_DataFormat=I2S_DataFormat;/IIS数据长度I2S_InitStructure.I2S_MCLKOutput=I2S_MCLKOutput_Disable;/主时钟输出禁止I2S_InitStructure.

14、I2S_AudioFreq=I2S_AudioFreq_Default;/IIS频率设置I2S_InitStructure.I2S_CPOL=I2S_Clock_Polarity;/空闲状态时钟电平I2S_Init(SPI2,&I2S_InitStructure);/初始化IISSPI_I2S_DMACmd(SPI2,SPI_I2S_DMAReq_T*,ENABLE);/SPI2 T* DMA请求使能. I2S_Cmd(SPI2,ENABLE);/SPI2 I2S EN使能. /采样率计算公式:Fs=I2S*CLK/256*(2*I2SDIV+ODD)/I2S*CLK=(HSE/pllm)*P

15、LLI2SN/PLLI2SR/一般HSE=8Mhz /pllm:在Sys_Clock_Set设置的时候确定,一般是8/PLLI2SN:一般是192432 /PLLI2SR:27/I2SDIV:2255/ODD:0/1/I2S分频系数表pllm=8,HSE=8Mhz,即vco输入频率为1Mhz/表格式:采样率/10,PLLI2SN,PLLI2SR,I2SDIV,ODDconst u16 I2S_PSC_TBL5=800 ,256,5,12,1,/8Khz采样率1102,429,4,19,0,/11.025Khz采样率 1600,213,2,13,0,/16Khz采样率2205,429,4, 9,1,/22.0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号