《基于stm32开发板MP3音乐播放器设计.docx》由会员分享,可在线阅读,更多相关《基于stm32开发板MP3音乐播放器设计.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于stm32开发板MP3音乐播放器设计基于STM32开发板的MP3音乐播放器设计 基于STM32开发板的MP3播放器设计 摘要 Stm32系列是由意法半导体(ST集团)推出的以ARM Cortex-M为内核的32位MCU系列,闪存容量包括64KB到256KB闪存和20KB到64KB嵌入式SRAM,相比8051开发板管脚少、功能弱、功耗大、频率低等缺陷,ARM Cortex-M“低动态功耗上实现高性能”、低功耗等突出特点,及其丰富的芯片型号、外设与软件支持,使得Stm32开发板有了强大的用户基础和广袤的应用领域。近几年随互连型、互补型等新系列产品的接连推出,Stm32产品在硬件性能、引脚功能上
2、经过不断优化更新以满意用户的不同需求。如今被应用于自动化的各个角落例如电机驱动、智能家居、建筑安防等多项场景。Stm32F1属于Cortex-M系列中的M3内核,采纳ARMv7-M架构 Cortex-A15。相较于Stm32F4, Stm32F7, Stm32H7等适用于高性能嵌入式系统的产品,Stm32F103作为一款常用的增加型系列的微限制器,因其优秀的兼容性,低成本低风险,简洁易用的特点,特别适用于该领域初学者学习探讨。它能满意初级开发者大多数基本需求如嬉戏外设、多媒体应用、视频对讲等方面的应用设计,同时为今后学习其他系列单片机打下学问基础,因此对stm32系列的学习探讨具有特别重要的意
3、义。本设计以stm32F103ZET6芯片的为探讨对象,Keil for ARM(MDK)为开发环境 ,利用V1053模块的音频解码和音频放大电路实现MP3播放器的设计,最终通过按键实现简洁的切换歌曲、快进快退、显示歌曲信息等相关基本功能。 关键词: Stm32F103;Cortex-M;V1053;音频放大;音频解码 Design of MP3 player based on stm32 development board Abstract The Stm32 series is a 32-bit MCU series based on ARM Cortex-M launched by ST
4、Microelectronics. The flash memory capacity includes 64KB to 256KB flash memory and 20KB to 64KB embedded SRAM. Compared with the 8051 development board, it has fewer pins. Weak functions, large power consumption, low frequency and other defects, ARM Cortex-M “high dynamic performance at low dynamic
5、 power“, low power consumption and other outstanding features, and its rich chip models, peripherals and software support, making Stm32 development The board has a strong user base and broad application areas. In recent years, with the successive introduction of new series products such as interconn
6、ected and complementary types, Stm32 products have been continuously optimized and updated in hardware performance and pin functions to meet the different needs of users. Today it is used in various corners of automation such as motor drive, smart home, building security and many other scenarios. St
7、m32F1 belongs to the M3 core in the Cortex-M series and uses the ARMv7-M architecture Cortex-A15. Compared with Stm32F4, Stm32F7, Stm32H7 and other products suitable for high-performance embedded systems, Stm32F103 as a commonly used enhanced series of microcontrollers, because of its excellent comp
8、atibility, low cost and low risk, simple and easy to use , Very suitable for beginners to study research in this field. It can meet the most basic needs of junior developers, such as game peripherals, multimedia applications, video intercom and other aspects of application design. It also lays the f
9、oundation for learning other series of single-chip computers in the future. This design takes the stm32F103ZET6 chip as the research object, Keil for ARM (MDK) as the development environment, and uses the audio decoding and audio amplification circuits to implement the MP3 player design. Finally, th
10、e buttons can be used to simply switch songs, fast forward and rewind, and display songs basic information such as functions. Keywords: Stm32F103; Cortex-M3audio; V1053; amplification; audio decoding 书目 1 前言 2 1.1课题背景 2 1.2本设计的目的、意义及应达到的技术要求 2 1.3本设计应解决的主要问题 3 2 试验平台与硬件打算 3 2.1 Stm32的概述与特性 3 2.2 芯片概
11、述与内部资源 5 2.3 VS1053模块的功能特性 5 3 库函数与寄存器 6 3.1 MDK简介 6 3.2 烧录方式 6 3.3 GPIO与配置寄存器 7 3.4 Stm32的库函数与寄存器版本 7 3.5 MDK开发运用较多的C语言学问 8 4 程序设计.9 4.1 所需学问.9 4.1.1 汉字显示.10 4.1.2 SPI相关.11 4.1.3 SD卡相关.12 4.1.4 调用V1053.12 4.2 实现功能和实物图 . 13 5总结.14 参考文献 14 谢 辞 15 附 录 16 1 前言 Stm32F1属于Cortex-M系列中的M3内核,采纳ARMv7-M架构 Cort
12、ex-A15。相较于Stm32F4, Stm32F7, Stm32H7等适用于高性能嵌入式系统的产品,Stm32F103作为一款常用的增加型系列的微限制器,因其优秀的兼容性低成本低风险简洁易用的特点,特别适用于该领域初学者学习探讨。它能满意初级开发者大多数基本需求如嬉戏外设、多媒体应用、视频对讲等方面的应用设计,同时为今后学习其他系列单片机打下学问基础,因 此对stm32的探讨具有特别重要的意义。 本设计以stm32F103ZET6芯片的为探讨对象,Keil for ARM(MDK)为开发环境 ,利用VS1053模块的音频解码和音频放大电路实现MP3播放器的设计,最终通过按键实现简洁的切换歌曲
13、、快进快退、显示歌曲信息等相关基本功能。1.1课题背景 无论时代怎么发展,音乐对于人类都是不行或缺的存在。它能让人们心情愉悦,使大脑活跃运转;在惊慌烦躁时让我们转移留意,平缓心情。在孤独难受时带来满意与安抚。随着科技日新月异,人们对消费型电子产品的需求越来越高,并对产品性能要求不断提高。各种多功能便携式的MP3、MP5等电子设备层出不穷,在如今手机灵已发展到人们更多选择手机的音乐软件去听音乐。然而手机作为智能多功能设备已在生活出行、沟通通信及消遣等方面担当了多数任务。独立纯粹的MP3播放设备可为其节约存储,省去手机电量消耗,为手机减轻负担。1.2本设计的目的、意义及应达到的技术要求 设计目的:
14、 设计一款基于stm32的能实现手动调整音量、手动切歌、能外接电源供电、具备蓝牙等功能的音乐播放器。设计意义:为满意消费者的需求,在保证最基本的音乐播放功能基础上探讨并制造简洁好用、高牢靠性的多功能的MP3播放器有着非常重要的现实意义。 探讨内容: (一)利用电池供电,支持mp3与wav格式的文件; (二)可自主选择歌曲播放,按键调整音量大小; (三)显示屏显示歌曲相关信息,包括名字时长,歌曲进度,曲目总数; (四)利用蓝牙串口模块与手机建立传输; (五)具有录音功能 技能要求: (一)STM32开发板原理; (二)硬件工具与MDK的搭建运用; (三)GPIO种类作用及配置寄存器; (四)了解
15、蓝牙串口模块和多项外设; (五)了解寄存器与相关库函数,学会调用库函数; (六)51单片机基础及C语言基础学问; 1.3本设计应解决的主要问题 拟解决的关键问题: (一) STM32F103的资源利用,STM32F103ZET6部分引脚安排与功能,了解查阅相关资料; (二) ATK-V1053模块的运用; (三)GPIO种类作用及配置寄存器; (四)SPI接口配置和汉字显示。 2.试验平台及硬件打算 本设计选用的工具有正点原子精英Stm32F103ZET6开发板、ST-LINKV2、ATK-V1053音频编解码模块、蓝牙串口模块、35寸LCD电阻屏、SD卡,开发环境为MDK5。 2.1 STM
16、32的概述与特性 STM32系列单片机是为嵌入式运用开发特地设计的。其具备低功耗、高性能的主要特点,另外款式型号种类繁多,功能完备,相关开发技术也日渐成熟。相比8051单片机,stm32芯片的优异性体现在多方面: 1.功能强大,在内置外设上也更加的丰富,包括TIMER、SPI、CAN、SDIO、RTC等以及GPIO引脚,具有极高的集成度。2.丰富的型号。STM32仅M3内核就有“基本型”F101、F103“增加型”、F105、“互联型”F107、F207等8个系列上百种型号,具有QFN、LQFP、BGA等封装方式可供选择。 3.杰出的实时性能。16级可编程优先级,84个中断,并且全部的引脚都可
17、以作为中断输入。 4.开发成本低廉、只需一个串口即可下载代码,且支持SWD和JTAG调试口。5.杰出的功耗限制。STM32 各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。但是论困难程度STM32要远高于51单片机,从最简洁的引脚配置,就比51单片机要困难的多,而且对于开发者而言,市面上常见的stm32开发教程也远远要比51单片机的困难。 本次设计运用的STM32F103增加型系列作为较为常用普遍的一个系列,运用单周期乘法和硬件除法,时钟频率为72MHz;板载资源包括RS485选择接口、CAN/USB选择接口、光敏传感器、RTC后备电池座、ATK、无线、蓝牙、GPS、摄像
18、头等模块接口,是在保证一般产品相同的价格优势下,产品性能得到了大幅的提升。与一般型系列产品的内置和闪存大小一样是32K到128K,而不同的是SRAM的最大容量和外设接口这两部分。当时钟频率达到72MHz时候可以干脆从闪存中运行程序,因此相对速度更快,STM32功耗为36mA,是32位单片机同类市场上功耗最低的产品。 图2.1 Stm32F103资源图 2.2 芯片概述与内部资源 STM32F103ZET6作为该开发板的MCU,该芯片资源具有 64KB SRAM、512KB FLASH存储器容量、2 个基本定时器、4 个通用定时器、2 个高级定时器、2 个 DMA 限制器(共 12 个通道)、3
19、 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 12 位 ADC、1 个 12 位 DAC、1 个 SDIO 接口、1 个 FSMC 接口以及 112 个通用 IO 口(144个引脚),2.03.6V电源和IO电压 上电复位,掉电复位和可编程的电压监控及强大的时钟系统:416M的外部高速晶振、内部8MH真的高速RC振荡器、内部40KHz低速RC振荡器,看门狗时钟等。2个12位DA 12个DMA通道等。 2.3 VS1053音频模块的功能特性 在以上硬件基础上,本次设计额外选用的ATK-VS1053是ALIENTEK开发的一款高性能音频编解码模块,可实现对MP3
20、/WMA/OGG/WAV/MIDI等音频格式的解码,同时还支持ADPCM等格式的编码。VS1053拥有一个高性能的DSP处理核VS_DSP,16K的指令RAM,0.5K的数据RAM,通过SPI限制,具有8个可用的通用IO口和一个串口,内部还夹带了一个可变采样率的立体声ADC、一个高性能立体声DAC及音频耳机放大器。此外模块资源自带耳机驱动器 ,加载patch拓展其他功能音量调整的功能。 只需通过SPI口向VS1053输入音频数据它便可以自动解码,因而在此无需详解音频放大与解码电路的原理。ATK-VS1053模块通过P1连接开发板,外部供应5V电源,同MCU连接的7根线分别是 VS_RST: V
21、S1053的复位信号线,低电平有效。VS_DREQ: 数据恳求信号(高电平有效),用来通知主机,VS1053是否可以接收数据。VS_XCS: 吩咐片选(低电平有效)。VS_XDCS:数据片选(低电平有效)。VS_MISO, VS_MOSI,VS_SCK: SPI信号线连接STM32。 下图为与开发板的硬件连接 图2.2 硬件连接图 3.软件设计 3.1 MDK简介 MDK 源自德国的 KEIL 公司,也称MDK-ARM、 RealView MDK、uVision 5等。是keil 4的扩展版本,包含了部分ARM,为基于Cortex-M、ARM7、ARM9处理器设备供应的一个完整的开发环境,目前
22、在全球 MDK 被超过 10 万的嵌入式开发工程师运用。其最新版本运用 uVision5 IDE 集成开发环境,是目前针对 ARM 处理器,尤其是 Cortex M 内核处理器的最佳开发工具。 打算步骤: (1)新建工程项目的文件夹与子文件(user、core、obj等) (2)MDK新建项目,选择目标CPU,添加CMSIS核心。(3)添加启动文件、工程文件和外设驱动程序等。(4)配置目标选项。 3.2 烧录方式 ST-LINK烧录程序 1.安装ST-LINK驱动 2.一端用USB连接电脑,一端用排针连接开发板3.打开Keil进行相应配置 4.编译程序 一般ISP串口下载 1.开发板USB口通
23、过USB线连接电脑,PA9、PA10连接到发送接收引脚, boot0、boot1接地 2.USB串口驱动安装 3.打开串口下载软件FlyMcu选中串口起先编码。 3.3 GPIO与配置寄存器 GPIO即通用型输入输出引脚。Stm32F103ZET6每组IO口有16个,大部分IO口都具有复用功能如PA9、PA10还可作为串口发送接收引脚与定时器引脚。一共有7组IO口(GPIOA,GPIOB.GPIOG),每组GPIO端口的寄存器包括两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx
24、_BSRR),一个16位复位寄存器(GPIOx_BRR),一个32位锁定寄存器(GPIOx_LCKR)。每个IO端口位可以自由编程。 GPIO内部结构: 图2.3 GPIO结构原理图 3.4 Stm32的寄存器与库函数版本 Stm32的开发操作分为寄存器版本和库函数版本,二者可同时协作运用。库函数是限制寄存器操作的语句被封装成函数的函数集合。只需调用填入参数调用函数,由函数帮助操作寄存器且实现相应动作(面对对象);而寄存器操作是干脆操作开启寄存器引脚上的功能 须要频繁查阅手册找到GPIO的基地址与该地址偏移计算出该寄存器地址等(面对过程),所以要娴熟运用须要经过大量的查阅经验、明确地了解每个数
25、据位的物理意义。对于初学者后者更为困难,但活用后代码效率更高。库函数的本质其实也是对外设寄存器的干脆编程。 3.5 MDK开发运用较多的C语言学问 1.位操作 :按位与 |:按位或 :按位异或 :取反 : 左移 :右移 2.define宏定义 预处理吩咐,程序替换define定义的内容,可提高代码的可读性,使程序更加规范合理。 格式:#define 标识符 字符串 2. ifdef 预处理吩咐,推断某个宏是否被定义,假如已定义,则执行随后语句;若未被定义,执行另一语句。格式:#ifdef 标识符 . #else . #endif 3. typedef 作用是定义一种数据类型的别名,类型包括内部
26、数据类型(int、char)与自定义数据类型(struct),同时可以用来声明指针型的多个对象。如 typedef struct _IO uint32_t CRL; _IO uint32_t CRH; _IO uint32_t IDR; _IO uint32_t ODR; _IO uint32_t BSRR; _IO uint32_t BRR; _IO uint32_t LCKR; GPIO_TypeDef; 4. 结构体 结构体作为一种构造类型,作用是将不同的数据类型整合为一个有机整体,使程序管理更加便利,增加程序扩展性和可读性 如 GPIO寄存器结构体 struct _IO uint32_
27、t CRL; _IO uint32_t CRH; _IO uint32_t IDR; _IO uint32_t ODR; _IO uint32_t BSRR; _IO uint32_t BRR; _IO uint32_t LCKR; 5. static static可修饰变量和方法及申明的局部变量和全局变量,使之具备静态记忆功能。数据在函数调用结束后不会被释放,它的值会保留下来,本质是静态资源分类。 4. 程序设计 4.1 所需学问 (1)汉字显示原理(2)SPI通信与相关接口(3)读写SD卡 (4)驱动V1053模块 4.1.1 汉字显示 汉字显示原理即是在液晶上只让一部分点显示出来,其余点
28、不显示。因此要显示某汉字要优先得到该汉字的点阵数据,其次将数据解析成汉字。试验选用GBK码作为汉字内码,GBK全称为汉字内码扩展规范,是对GB2312编码基础兼容上的扩展,同时支持国际标准GB13000-1中的全部中日韩文字与国际标准ISO/IEC10646-1,其高兼容性和规范性是作为选用的缘由。每个GBK码由2个字节GBKH和GBKL组成,分别代表凹凸位.第一个字节为0X81-0XFE,其次个字节为两部分0X40-0X7E和0X80-0XFE,故编码范围为0X8140-0XFEFE,总共包括23940个汉字。编码规则: 首先找到汉字的高位,用GBKH-0x81确定该汉字在哪个区,然后依据
29、当 GBKL<0X7F 时:Hp=(GBKH-0X81)*190+GBKL-0X40)*(size*2); 当 GBKL>0X80 时:Hp=(GBKH-0X81)*190+GBKL-0X41)*(size*2); size是每个汉字占用的字节数,例如大小16*16的汉字,它占用的空间是16*2=32个字节。依据算法计算出汉字字库的起始地址 确定GBK对应的汉字 设置字体大小生成点阵字库 查找将点阵数据解析显出出汉字 图4.1 显示汉字获得字模 为此利用字库制作软件制作生成GBK字库。生成点阵字库后,用文件系统读取字库,然后存到SPI-Flash中。 存字库(fontupd.c)
30、显示汉字(text.c): Show_Str Show_Font Get_HzMat 解析显示。 图4.2 设置参数创建字库 4.1.2 SPI相关 SPI即串行外围设备接口,是一种全双工,高速同步的通信总线。同时发出接收数据,使外设的读和写操作同步完成。可以当作主机或从机工作;并且在芯片的管脚上只占用MISO(主设备数据输入,从设备数据输出)、MOSI (主设备数据输出,从设备数据输入)SCLK (时钟信号,由主设备产生)、CS(从设备片选信号,由主设备限制) 四根线通信。主要作用包括:读写FLASH芯片与SD卡、和液晶显示屏建立通信、供应频率可编程时钟、总线竞争爱护等。 常用相关库函数:
31、SPIx_Init() /初始化函数 SPIx_ReadWriteByte(0xFF) /供应时序,让MOSI维持高电平 SPIx_Cmd() /使能函数 SPIx_IRQHandler() /中断 SPIx_DataSizeConfig() /数据字节 SPI_I2S_SendData(); SPI_I2S_ReceiveData() /发送接收 4.1.3 SD卡相关 SD卡是本设计里不行或缺的重要部件,试验中用来存放音频文件。依据容量大小分SD卡分为高容量卡SDHC(2-32G)、SDXC(32G-2T)和标准容量卡SDSC(0-2G),它包含5个寄存器 其中CSD(卡数据寄存器)与SC
32、R(配置寄存器)为SD供应一些特定数据,被运用较多。SD卡有9个引脚和外部通信,且接口简洁,支持SPI和SDIO两种模式。 SDIO驱动SD卡首要步骤是进行SD卡初始化。发送CMD8吩咐来推断是否为SD2.0 设置VHS为告知SD卡主机的供电范围,之后发送CMD55与ACMD41进一步确认SD卡的操作电压范围及是否支持SDHC,初始化完成后 再来通过CMD16指令设置数据块大小,并通过其他指令查询状态进行多块读写等操作。 常用相关库函数: SD_Init / SD卡初始化 SD_ReadDisk /读函数 SD_WriteDisk /写函数 4.1.4 调用V1053 主要库函数: VS_HD
33、_Reset / 硬件复位 VS_Soft_Reset /软件复位函数 VS_WR_Cmd(u8,address,u16 data)/写吩咐 VS_WR_Data(u8 data) /写数据 VS_Send_MusicData /发送音频数据 VS_Restart_Play /切歌 VS_Set_All /设置封装函数(音量、凹凸音 环境等参数) 4.2 实现功能和实物展示 (1)显示歌曲名、时长、码率、歌曲总数等信息。(2)通过按键切换歌曲。(3)支持WAV、OGG、MP3等多音频格式。(4)因按键个数限制只可提升音量。 5.总结 该设计充分利用了STM32F103与ATK-V1053模块来
34、实现一个简洁的MP3播放器。设计和操作相对简洁。MP3播放器的功能基本完成。通过1053模块实现音乐播放和WAV录音功能。主界面设计得比较简陋,没有达到多功能MP3播放器的设计要求,无法实现自如切换录音和显示图片等功能。一方面是本人实力有限,另一方面,在单片机的接口和计算运用方面还存在很多不足,仍旧不能适应困难的限制算法和故障诊断。这是在将来学习阶段须要加强的一个方面。 在本次毕业设计中,我对单片机的基本原理、C语言设计思路、单片机Stm32的开发过程与思路有了更深化的了解和驾驭。这提高了我对硬件电路设计和软件设计的理解,实现了对这部分的更全面、更全面的理解,对以后的相关程度的学习有很大的帮助
35、。在设计过程中,因为基础学问不扎实和专业学问的欠缺我遇到了许多自己解决不了的问题,这期间我查阅了不少有关文件手册,观看了视频、登录论坛重新学习探讨,找寻相对的问题的解决方案并逐一解决问题。另一方面,我的老师和同学给了我许多好用的建议和看法,提高了我思索的实力和自己解决问题的实力。在一般状况下,经过设计调试测试,虽然所预期的功能效果没有完全达成,我对整套产品是大体满足的。 参考文献 1正点原子.STM32F1开发指南(精英版). 2正点原子.STM32中文参考手册. 3王静霞. 单片机应用技术C语言版M.北京:电子工业出版社,2009:12-23. 4张友德.单片微型机原理M、应用与试验M.上海:复旦高校出版社,2005:2-8. 5谭浩强.C程序设计教程(第2版)M.北京:清华高校出版社,2013:8. 6杜树春.基于Proteus和Keil C51的单片机设计与仿真M.北京:电子工业出版社, 2012:21-30. 7杨雪梅,张慧.基于STM32的MP3播放器设计A. 8郭天祥.新概念51单片机C语言教程(第2版)M.电子工业出版社. 9李全利. 单片机原理及接口技术M.北京:高等教化出版社,2008:6-20. 10pigdwh.自定义,结构体,枚举,联合的总结 CSDN论坛.