毕业设计(论文)-基于STM32单片机的MP3播放器设计.doc_第1页
毕业设计(论文)-基于STM32单片机的MP3播放器设计.doc_第2页
毕业设计(论文)-基于STM32单片机的MP3播放器设计.doc_第3页
毕业设计(论文)-基于STM32单片机的MP3播放器设计.doc_第4页
毕业设计(论文)-基于STM32单片机的MP3播放器设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

惠州学院HUIZHOU UNIVERSITY 毕 业 论 文(设 计) 中文题目: 基于STM32单片机的MP3播放器设计 英文题目:Design of MP3 player based on STM32 micro-controller 姓 名_ _学 号_ 110701203 _专业班级_ 11电气2班 _指导教师_ _提交日期 2015年5月25日_教务处制摘要随着数字编解码技术及压缩技术的发展,语音文件也向着高压缩比、高保真的方向发展,从MP1、MP2到目前的MP3格式。因此高压缩比、高保真MP3播放器设计及研究有很好的发展前景。本论文介绍了基于STM32微处理器的MP3播放器的设计方法,实现了从SD卡中读取音乐文件数据,再将读取的数据流进行软件解码,最后通过音频信号输出驱动耳机实现音乐播放功能。并在液晶屏上显示音乐的实时播放状态,通过TFT触摸屏上的人机交换界面,实现了音乐的播放,停止,声音增大,减小等功能模式。基本上实现了一个带有触摸功能的MP3播放器。关 键 词 MP3播放器 STM32F103ZET SD卡 触摸屏 FATFS文件系统ABSTRACTWith the development of digital codec technology and compression technology ,Voice files are also in the direction of high compression ratio, high-fidelity development, from MP1, MP2 to MP3 format now. Therefore, high compression ratio, high-fidelity MP3 player design and research have good prospects for development.This paper describes the design of microprocessor-based STM32 MP3 player, Realize from reading music files from SD card and then read the data stream decoding software,Finally, the audio signal output to drive headphones realize music playback ,and displays real-time playback status of the song on the LCD screen, through a graphical user interaction diagram circles TFT touch screen, to achieve the songs play, stop, sound increase, decrease function mode. Basically realize MP3 player with a touch-enabled. Key Words MP3 player STM32F103ZET SD Card Touch screen FATFS file system目录1 绪论11.1 本课题的提出及意义11.2 研究现状12 硬件设计22.1整体方案22.2系统架构图22.3硬件模块32.3.1处理器32.3.3 SD卡模块42.3.3 LCD显示模块52.3.4触摸屏模块63 软件设计83.1 软件开发架构83.2 软程序设计流程图93.3 软件代码结构103.3 驱动程序143.3.1 液晶屏驱动程序143.3.3 文件系统驱动程序153.3.3 触摸屏卡驱动程序163.3.4 MP3驱动程序174 系统调试204.1 开发环境204.1.1 软件开发环境204.1.2 硬件开发环境214.2 设计调试224.2.1 UI界面设计224.2.2 SD卡模块测试224.2.3 触摸屏校验234.2.4 显示屏测试234.3 成品展示25致 谢26参考文献27附录281 绪论1.1 本课题的提出及意义MP3音频播放器的最合理工作速度为30Mips,而一个典型的视频媒体播放器的理想速度则为175Mips,所以提高MP3的工作速度,以及改善MP3的音质是最关键的,也是亟待解决的问题。MP3是一种典型的嵌入式设备,而现在市场上比较常见的是闪存式MP3。由于闪存式MP3的容量限制,使它存储歌曲数目较少,在功能上也很难实现多样化1。而硬盘式MP3的多功能及大容量,也必将受到不少消费者的喜爱。MP3播放器一般分成3个部分:CPU、MP3硬件解码器存储器。其中可以将前两部分集成在一起,即带MP3硬件解码器的CPU;或将后两部分集成在一起,即集成硬件解码、DA转换及音频输入。存储器可以是Flash存储器或硬盘2。通过用MP3编码技术,可以得到大约12:1压缩的有损音乐信号。1.2 研究现状MP3全称是MPEG Layer 3,狭义的讲就是以MPEG Layer 3标准压缩编码的一种音频文件格式。自韩国世韩(Seahan)公司1998年推出世界上第一台MP3随身听以来, MP3播放器以其小巧的外形,不错的近乎于CD的音质,前卫的功能,越来越受到消费者的青睐,也就成为业界甚至大众媒体关注的一个热门话题3。在市场消费刺激下,各大公司纷纷推出了自己的mp3播放器产品,IC供应商提供了众多的MP3解码芯片及其解决方案。除了Micronas方案(MAS3507+DAC3550),还有台湾创品方案(T33510,T33520)、美国SigmaTel方案(STMP3400)和TI的DA-250解决方案。这使mp3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔 4。2 硬件设计2.1整体方案综述本设计由STM32最小系统,SD卡的读取模块,TFT控制模块,外扩FLASH模块,触摸屏模块,串口通信模块组成。将解决SD卡的读取以及使用FATFS文件系统来对SD卡操作,TFT液晶屏的控制及触摸屏原理、还有人机界面UI的实现等问题5。系统架构如图2-1所示。基本设计流程是使用STM32系列微控制器,采用FATFS文件系统方式读取SD卡中音乐文件数据,将所读取的数据流传输给CPU软件解码(helix解码库)解码编程PCM音频,通过I2S送到ADC芯片 PCM1770音频输出驱动耳机实现音乐播放功能。液晶屏显示歌曲的实时播放状态,功能按扭 和控制歌曲的播放、停止、声音增大、减小等。同时,TFT触摸屏则用于功能按扭 和人机交换界面的输入。2.2系统架构图图 2-1 系统架构图2.3硬件模块2.3.1处理器一、芯片介绍。CortexM3是ARM公司最新推出的基于ARMv7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。ARMv7 架构采用了Thumb2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案完整的代码兼容性。 Thumb2技术比纯ARM代码少使用31%的内存,减小了系统开销,同时能够提供比Thumb技术高出38%的性能7。在中断处理方面,CortexM3集成了嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是CortexM3处理器的一个紧耦合部分,可以配置1240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。同时,抢占(Pre emption)、尾链(Tail chaining)、迟到技术(Late arriving)的使用,大大缩短了异常事件的响应时间。CortexM3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。DP)或串行JTAG调试端口(SWJDP,允许JTAG或SW协议)使用。二、引脚图。图2-2 STM32F103ZET6 微控制器引脚分布图2.3.3 SD卡模块一、SD卡介绍。STM32微处理器 CPU ( STM32F103ZET6 )具有一个 SDIO 接口。SD/SDIO/MMC 主机接口可以支持 MMC 卡系统规范 4.2 版中的 3 个不同的数据总线模式:1 位(默认)、4 位和 8 位。在 8 位模式下,该接口可以使数据传输速率达到 48MHz,该接口兼容 SD 存储卡规范 2.0 版12。二、SD卡原理图。图2-3 SD卡接口电路.图2-4 SD卡上电识别流程图2.3.3 LCD显示模块一、LCD控制器。LCD,即液晶显示器,因为其功耗低、体积小,承载的信息量大,因而被广泛用于信息输出、与用户进行交互,目前仍是各种电子显示设备的主流。因为 STM32 内部没有集成专用的液晶屏和触摸屏的控制接口,所以在显示面板中应自带含有这些驱动芯片的驱动电路(液晶屏和触摸屏的驱动电路是独立的),STM32 芯片通过驱动芯片来控制液晶屏和触摸屏。2、 FSMC框图结构。FSMC(flexible static memory controller),译为静态存储控制器。可用于STM32 芯片控制 NOR FLASH、PSRAM、和 NAND FLASH 存储芯片。我们是使用FSMC的NORPSRAM 模式控制 LCD。其结构如图2-5所示。.图2-5 FSMC框图结构框图2.3.4触摸屏模块一、触摸屏感应原理。触摸屏常与液晶屏配套使用,组合成为一个可交互的输入输出系统。除了熟悉的电阻、电容屏外,触摸屏的种类还有超声波屏、红外屏。触摸屏的基本原理为分压,它由一层或两层阻性材料组成,在检测坐标时,在阻性材料的一端接参考电压 Vref,另一端接地,形成一个沿坐标方向的均匀电场。当触摸屏受到挤压时,阻性材料与下层电极接触,阻性材料被分为两部分,因而在触摸点的电压,反映了触摸点与阻性材料的 Vref 端的距离,而且为线性关系,而该触点的电压可由 ADC 测得。更改电场方向,以同样的方法,可测得另一方向的坐标。二、TSC2046触摸屏控制器。TSC2046 是专用在四线电阻屏的触摸屏控制器,MCU 可通过 SPI 接口向它写入控制字,由它测得 X、Y 方向的触点电压返回给 MCU。如图2-6所示图2-6 TSC2046 与电阻屏的连接图2.3.5 PCM音频模块PCM1770器件是CMOS,单片,集成电路包括立体声数字 - 模拟转换器,耳机电路。数据转换器采用TI的增强型多级架构,它采用噪声整形和多值振幅量化,实现出色的动力性能和改进的耐时钟抖动。该PCM1770器件接受多个行业标准音频数据格式,16至24位数据,左对齐,I2S等,提供轻松连接到音频DSP和解码器。采样率高达50 kHz的支持。全套用户可编程功能是通过一个3线串行控制端口,支持寄存器写入功能访问。原理接线图如图2-7所示图2-7 PCM1770连接图3 软件设计3.1 软件开发架构本设计由STM32最小系统,SD卡的读取模块,TFT控制模块,触摸屏模块,串口通信模块组成。将要解决SD卡的读取及使用FATFS系统对SD卡的操作、TFT液晶的控制及触摸屏原理、还有图形用户界面GUI的实现等问题10。架构如图3-1软件开发架构图图3-1软件开发架构图3.2 软件程序设计流程图开始系统初始化显示屏初始化触摸屏初始化SD卡初始化PCM1770初始化MP3播放程序触摸屏按下?播放模式设置读取触摸屏数据,执行相应功能操作图3-2 程序设计流程图本系统的程序设计流程图如图3-2所示,工作流程是:STM32从SD卡中读取音乐文件数据,将所读取的数据流传输给CPU软件解码(helix解码库)解码编程PCM音频,通过I2S送到ADC芯片 PCM1770音频输出驱动耳机实现音乐播放功能。液晶屏显示歌曲的实时播放状态,功能按扭和控制歌曲的播放、停止、声音增大、减小等。同时,TFT触摸屏则用于功能按扭和人机交换界面的输入。音乐播放链路:图3-3 音乐播放链路3.3 软件代码结构为了使代码结构清晰,方便以后的维护,代码结构设计如下:在根目录I2S-MP3下,划分为七个文件夹,分别为STARTUP、CMSIS、FWLB、USER、DOC、ff9和mp3。下面分别就七个文件夹的作用和结构进行说明,其代码目录树状结构如图3-4 所示。图3-4 整体工程代码结构对其进行分析:目录名称 目录说明 STARTUP 启动文件CMSIS M3系列通用的文件FWLB ST 片上资源外设的驱动文件USER 用户写的驱动文件DOC 工程说明文档 ff9 FATFS文件系统文件mp3 音乐播放相关文件详细代码结构一、STARTUP 目录如图3-5所示图3-5启动文件startup_stm32f10x_hd.s 为启动文件启动文件是任何处理器在上点复位之后最先运行的一段汇编程序。在我们编写的 c 语言代码运行之前,需要由汇编为 c 语言的运行建立一个合适的环境,接下来才能运行我们的程序9。二、CMSIS 目录如图3-6所示图3-6 M3系列通用的文件文件名称 文件说明 core_cm3.c M3 核通用的源文件core_cm3.h M3系列通用的文件stm32f10x.h 对内存的操作封装文件system_stm32f10x.c 实现系统时钟操作文件三、FWLB 目录如图3-7所示图3-7 ST 片上资源外设的驱动文件 FWLB:用来存放 STM32 库里面的芯片上的所有驱动即ST 片上资源外设的驱动文件四、USER目录如图3-8所示图3-8用户写的驱动文件文件名称 文件说明 bsp_iis.c iis驱动文件bsp_gpio_spi.c spi驱动文件bsp_touch.c 触摸屏驱动文件bsp_ili9341_lcd.c 液晶显示驱动文件bsp_pcm1770.c pcm驱动文件bsp_led.c led驱动文件bsp_bmp.c bmp图片显示文件bsp_sdfs_app.c sd卡文件系统文件bsp_sdio_sdcard.csd卡驱动文件bsp_spi_flash.c spi_flash驱动文件bsp_SysTick.c系统时钟驱动文件bsp_usart1.c串口通讯驱动文件main.c主函数入口文件mp3.cpm3驱动文件stm32f10x_it.c中断处理函数,以相应各种中断五、DOC目录如图3-9所示 图3-9工程说明文档readme 为工程说明文件六、ff9目录如图3-10所示 图3-10 FATFS文件系统文件七、mp3目录如图3-11所示图3-11音乐播放相关文件这是实现mp3 播放的功能实现函数,实际应用只需要移植过来即可。3.3 驱动程序3.3.1 液晶屏驱动程序/* * brief lcd 初始化 * param 无 * return 无 */void LCD_Init(void)LCD_GPIO_Config(); /配置IO端口LCD_FSMC_Config(); /LCD FSMC模式的配置LCD_Rst(); /LCD软件复位LCD_REG_Config(); /配置LCD初始化寄存器3.3.3 文件系统驱动程序/* * brief fs 文件系统初始化 * param 无 * return 无 */void Sd_fs_init(void) /* SD卡中断初始化 */SDIO_NVIC_Configuration();/* SD 卡硬件初始化,初始化盘符为0*/ f_mount(0,&myfs0); /./ff9文件库/* brief SDIO优先级配置为最高优先级 * param 无 * return 无*/void SDIO_NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);3.3.3 触摸屏卡驱动程序/* brief 触摸模拟SPI IO 和中断 IO初始化 * param 无 * return 无*/void Touch_Init(void) GPIO_SPI_Config();/* brief 模拟SPI的GPIO配置,当SPI的4根信号线换为其他IO时,* 只需要修改该函数对应的宏定义即可。 * param 无 * return 无*/void GPIO_SPI_Config(void) GPIO_InitTypeDef GPIO_InitStructure; /* 开启GPIO时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE); /* 模拟SPI的GPIO初始化*/ GPIO_InitStructure.GPIO_Pin=SPI_CLK_PIN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(SPI_CLK_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_MOSI_PIN; GPIO_Init(SPI_MOSI_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_MISO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(SPI_MISO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_CS_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(SPI_CS_PORT, &GPIO_InitStructure); /* 拉低片选,选择XPT2046 */ GPIO_ResetBits(SPI_CS_PORT,SPI_CS_PIN); /GPIO_SetBits(SPI_CS_PORT,SPI_CS_PIN); /* XPT2046 中断IO配置 */ TP_INT_GPIO_Config();3.3.4 MP3驱动程序/* * brief player_run 运行MP3 播放器过程,内部死循环 * param 无 * return 无 */void player_run(void)char music_nameFILE_NAME_LEN;f_mount(0, &fs);file_scan(path);/扫描文件if(file_num = 0)printf(rn no mp3 file ! );return; /跳出本函数player_state = S_READY; /初始化状态touch_even = E_NULL; /初始化事件标志all_page = (file_num+7)/8 ;/current_page = 1;printf(rn file_num =%d,all_page=%d,file_num,all_page);/PCM1770_VolumeSet(0); /调节音量PCM1770_VolumeSet(28);lcd_list(current_page);/显示歌曲列表,第一页while(1) /进入死循环,根据状态切换if(play_index = file_num-1)/检查play_indexplay_index = file_num-1;/index指向最后一个文件else if(play_index=0)play_index =0;even_process();/事件处理switch(player_state)case S_PLAY:/播放状态/开始play 流程/读取音频文件流程/打开playlist,读取音频文件名fres = f_open (&file, 0:mp3player/playlist.txt, FA_READ);fres = f_lseek (&file, play_index*FILE_NAME_LEN);fres = f_read(&file, music_name, FILE_NAME_LEN, &rw_num);fres = f_close (&file);/获取文件名,准备解码printf(准备播放:%s ,music_name);if(strstr(music_name,.mp3)|strstr(music_name,.MP3)/MP3格式/开始MP3解码mp3_player(music_name);else/WAV文件格式/开始WAV文件播放wav_player(music_name);break;case S_SWITCH: /切歌状态player_state = S_PLAY; /更新标志位/* 检测要切换的歌曲是否在播放的上一页*/if(play_index+8)/8 current_page) current_page+;/刷新当前页码lcd_list(current_page);/刷新LCD列表break;default:break;4 系统调试4.1 开发环境4.1.1 软件开发环境一、安装 MDK。MDK 是一个集代码编辑,编译,链接和下载于一体的集成开发环境。该软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用11。新建工程图如图4-1图4-1软件开发环境二、超级终端。超级终端是一款很好的打印调试软件如图4-2图4-2超级终端4.1.2 硬件开发环境一、J-Link仿真器。J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真,与IAR,Keil等编译环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。如图4-3图4-3 J-Link仿真器4.2 设计调试4.2.1 UI界面设计UI界面设计,用于显示的界面, 如图4-4所示图4-4 UI界面4.2.2 SD卡模块测试SD卡模块读取测试,测试成功,为后续展开作下铺垫 如图4-5所示图4-5 SD卡模块测试4.2.3 触摸屏校验触摸屏校验 如图4-6所示图4-6触摸屏校验4.2.4 显示屏测试一、显示屏默认显示语言为英文,无法显示中文,缺少中文字库显示效果 如图4-7所示图4-7显示屏测试二、制作中文字模字库 如图4-8所示图4-8制作中文字模字库最后将生成的制模字库HZLIB.bin存放于SD中4.3 成品展示读取SD卡音乐文件,传输给CPU软件解码器(helix解码库)解码变成PCM音频,通过I2S送到 DAC芯片PCM1770 立体声进行音频输出。如图4-9所示图4-9作品展示致 谢在毕业设计的过程中,我学到了很多,使我深刻地认识到学好本专业知识的重要性,也深刻地理解了理论联系实际的含义所在,这是我大学四年的学习成果之一。它是我大学四年所学知识的综合应用和经验的总结,通过本次毕业设计非常锻炼我个人的各方面能力,包括编程、动手以及沟通能力,将所学知识得到了升华,为以后在发挥自己的才能奠定了坚定的基础。在此要感谢陈治明老师,他的指导和帮助,对本课程设计的研究是不可或缺的,从论文的整体架构到内容的完善与修改,陈老师给我提出了许多宝贵的意见,使我受益匪浅。此外,还要感谢惠州学院的同学,在课程设计过程中,他们也给了我很大的帮助,推进了本设计的完成进度。参考文献1 榴莲. 声由芯生 主流MP3解码芯片浅析J. 大众硬件,2007,11:56-61.2董卫红. C语言程序设计的教学改革与实践J. 常州轻工职业技术学院学报,2007,01:35-38.3 宋岩译.ARM Cortex-M3权威指南M.北京航空航天大学出版社.2009-07. 4李伟,张真,范文豪. 基于STM32微控制器的mp3播放器设计J. 现代电子技 术,2015,04:118-120+124.5李宁,熊刚,徐良平. 基于Cortex-M3的MP3播放器设计J. 单片机与嵌入式系统应用,2009,02:48-51. 6李世奇,董浩斌,李荣生. 基于FatFs文件系统的SD卡存储器设计J. 测控技术,2011,12:79-81.7 陈萌萌,邵贝贝. “安全第一”的C语言编程规范J. 单片机与嵌入式系统应用,2006,01:79-82.8孙书鹰,陈志佳,寇超. 新一代嵌入式微处理器STM32F103开发与应用J. 微计算机应用,2010,12:59-63. 9Joseph Yiu. 从8位微控制器转向ARM Cortex微控制器J. 电子设计技术,2009,09:104. 10Anonymous. Development environment for STM32 ARM-based MCUJ. Electronics Weekly,2009,2411:.11 李宁.基于MDK的STM32处理器开发应用M.北京航空航天大学出版社.2008-10-1.12 王永虹,徐炜,郝立平.STM32系列ARM Cortex-M3微控制器原理与实践M.北京航空航天大学出版社.2008-7-1.13 美克尼汉,美里奇,徐宝文,李志译.C程序设计语言(第2版新版)M.机械工业出版社.2004-1-1.14 李宁.ARM开发工具RealViewMDK使用入门M.北京航空航天大学出版社.2008-3-1. 15南亦民. 基于STM32标准外设库STM32F103xxx外围器件编程J. 长沙航空职业技术

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论