您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > MP3-stm32-资料
Cortex-M3是ARM公司为要求高性能(1.25DhrystoneMIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的内核。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集和大幅度提高中断响应的紧耦合嵌套向量中断控制器,所有新功能都同时具有业界最优的功耗水平。本系统是基于Cortex-M3内核的STM32微控制器的mp3播放器,在硬件方面主要有VS1003硬件音频解码器和12864点阵液晶屏,在软件方面主要有VS1003的驱动,SD卡工作在SPI模式下的读写驱动,FAT文件系统的移植,12864液晶的驱动,(嵌入式操作系统ucOSii的移植以及嵌入式图形管理器ucGUI的移植)。首先将MP3歌曲文件从内存中取出并读取存储器上的信号→到解码芯片对信号进行解码→通过数模转换器将解出来的数字信号转换成模拟信号→再把转换后的模拟音频放大→低通滤波后到耳机输出口,输出后就是我们听到的音乐。STM32不同的外设是挂载在不同的总线上的,见图5-8。有AHB总线、APB2总线、APB1总线从芯片角度来说,时钟源分为内部时钟与外部时钟源,内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号。所以,STM32有以下4个时钟源:高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,但不稳定。低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。野火M3实验板上用的是32.768KHz,6p负载规格的晶振。低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。1)用户闪存=芯片内置的Flash。2)SRAM=芯片内置的RAM区,就是内存啦。3)系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:BOOT1=xBOOT0=0从用户闪存启动,这是正常的工作模式。BOOT1=0BOOT0=1从系统存储器启动,这种模式启动的程序功能由厂家设置。BOOT1=1BOOT0=1从内置SRAM启动,这种模式可以用于调试。软件部分:3.2主模块该模块是系统执行最顶层的模块,进行系统的初始化,然后实现系统功能。3.4SD卡读写驱动与FAT文件系统SD卡主要引脚和功能为:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。SD卡命令的格式如表1所示,其中相关参数可以查阅SD卡规范。为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55。本模块主要实现了SPI模式下的SD卡读写接口,并基于此移植了FAT文件系统,以便应用程序对文件的访问。3.4.2目录结构mmc.c文件包含SPI模式下读写SD卡的驱动。ff.c文件是移植到本系统上的FAT文件体统。crc.c文件是数据传输是采用的CRC循环冗余检验方式。FAT32文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。就本设计而言,我们只需要从系统区获得存储介质(即SD卡)中文件根目录的所在,然后通过根目录逐个找到我们相应所需要找到的文件。3.5VS1053音频解码驱动:本模块的功能是SPI模式下驱动VS1053实现硬件音频解码。3.5.2目录结构vs1003.c文件提供了硬件解码芯片的驱动。3.6液晶显示接口本模块主要提供了人机接口方面的驱动和接口,是信息可以直观的显示出来。VS1003特性:能解码MPEG1和MPEG2音频层III(CBR+VBR+ABR);WMA4.0/4.1/7/8/95-384kbps所有流文件;WAV(PCM+IMAAD-PCM);产生MIDI/SP-MIDI文件。对话筒输入或线路输入的音频信号进行IMAADPCM编码支持MP3和WAV流高低音控制单时钟操作12..13MHz内部PLL锁相环时钟倍频器低功耗内含高性能片上立体声数模转换器,两声道间无相位差内含能驱动30欧负载的耳机驱动器模拟,数字,I/O单独供电为用户代码和数据准备的5.5KB片上RAM串行的控制,数据接口可被用作微处理器的从机特殊应用的SPIFlash引导供调试用途的UART接口新功能可以通过软件和4GPIO添加SPI接口是在CPU和外围低速器件之间进行同步串行数据传输SPI以全双工模式工作,这意味着,数据可同时双向传输。SPI最常用于中央处理单元(CPU)跟外围设备之间的通信系统,也可使用SPI连接两个微处理(MCU)。外围设备包括FLASH、RAM、A/D转换器、LCD显示驱动器、网络控制器等在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几MbpsSPI接口是以主从方式工作的,这种模式通常有一个主器件(Master)和一个或多个从器件(Slave)串行时钟线(SCK)主机输入/从机输出数据线MISO主机输出/从机输入数据线MOSI(有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。低电平有效的从机选择线SS有的SPI接口芯片带有中断信号线INT或INT4.2FAT文件系统MP3播放器支持FAT文件系统,以便识别读出SD上的音乐文件;理解文件系统存储数据的原理,协议,格式等;根据对文件系统的掌握,通过跑在μC/OS-II实时操作系统上的mp3驱动程序和应用程序,将存储在SD卡上mp3数据文件读取出来,并进行正常的播放工作5.系统调试本次MP3播放器的调试主要手段为:1)通过串口线连接PC电脑,并在电脑屏幕上打印MP3播放器运行过程的参数协助调试;2)通过JTAG接口调试;3)通过指示灯的状态协助调试;4)扩展接口连接液晶屏协助调试。3.12JTAG调试接口JTAG的主要功能有两种,或者说JTAG主要有两大类:1)一类用于测试芯片的电气特性,检测芯片是否有问题;2)另一类用于Debug,对各类芯片以及其外围设备进行调试;JTAG端口由5个标准的管脚组成:TCK,TMS,TDI,TDO和TRST,其信号连接如图16所示。TCK:时钟信号,为TAP的操作提供了一个独立的、基本的时钟信号。TMS:模式选择信号,用于控制TAP状态机的转换。TDI:数据输入信号。TDO:数据输出信号。TRST:复位信号(这个信号接口在IEEE1149.1标准里并不是强制要求的,因为通过TMS也可以对TAPController进行复位。)首先将MP3歌曲文件从内存中取出并读取存储器上的信号→到解码芯片对信号进行解码→通过数模转换器将解出来的数字信号转换成模拟信号→再把转换后的模拟音频放大→低通滤波后到耳机输出口,输出后就是我们听到的音乐。MP3文件大体可以分成三个部分:ID3V2,帧,ID3V1。其ID3V2,ID3V1都是介绍歌曲的一些相关信息,如作者,歌词等等。对整个解码工作有用的数据均在数据帧上,其结构如下:帧头CRC数据4字节0-2字节由数据帧算出其帧头结构如下:由上述的帧头信息就可以算出帧长出来:帧长=144*取样率/采样频率+帧长调节对于VS1003B而言,其可以自己计算帧长,所以对此我们只需要从帧头提取出取样率,再加以软件控制就可以了PC12-SDIO-CLK:CLKPC10-SDIO-D2:DATA2PC11-SDIO-D3:CD/DATA3PD2-SDIO-CMD:CMDPC8-SDIO-D0:DATA0PC9-SDIO-D1:DATA1startup/start_stm32f10x_hd.cCMSIS/core_cm3.cCMSIS/system_stm32f10x.cFWlib/stm32f10x_gpio.cFWlib/stm32f10x_rcc.cFWlib/stm32f10x_usart.cFWlib/stm32f10x_sdio.cFWlib/stm32f10x_dma.cFWlib/misc.c将MicroSD卡(以文件系统FATFS访问)里面的mp3文件通过VS1003B解码,然后将解码后的数据送到功放TDA1308后通过耳机播放出来。注意:野火M3-V1的MP3模块是加了功放,野火M3-V3里面去掉了功放TDA1308,因为从VS1003出来的模拟信号足够驱动耳机。PB13-SPI2_SCK:VS1003B-SCLKPB14-SPI2_MISO:VS1003B-SOPB15-SPI2_MOSI:VS1003B-SIPB12-SPI2_NSS:VS1003B-XCSPB11:VS1003B-XRETPC6:VS1003B-XDCSPC7:VS1003B-DREQVS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。串行的控制和数据接口,4个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位ε-ΔDAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以做其他特殊应用,例如DSP音效处理。这些数据口是串行模式的,我们用到了开发板中的SPI2来控制。其中数据经SI接口进去,经解码后由L、R这两个左右声道引脚出来,因为VS1003内部集成了一个DA,所以出来的数据是模拟的,可直接驱动耳机,一般不需要另外加耳机功放。当文件出错或者一曲播放完毕时就跳出for循环,并打印出“播放结束”的调试信息。根据VS1003的要求,在一曲结束后需发送2048个0来确保下一首的正常播放。一曲播放完毕我们关闭vs1003的数据端,关闭打开的文件,等待下一曲的播放,直到目录下的音频文件播放完为止。音量可通过耳机来调,前提是你的耳机要能调节音量才行。
本文标题:MP3-stm32-资料
链接地址:https://www.777doc.com/doc-2888881 .html