基于Cortex-M3的MP3播放器设计
时间:04-13
来源:互联网
点击:
引言
STM32系列微控制器采用ARM公司最新的Cortex—M3内核。VSl003音频解码芯片为VSlOxx系列的第三代产品,是芬兰VLSI Solution公司生产的单片MP3/WMA/MIDI解码和ADPCM编码芯片。本文采用STM32系列微控制器,结合解码芯片VSl003、SD 卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VSl003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过摇杆控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。
1 STM32处理器
Cortex—M3是ARM公司最新推出的基于ARMv7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。
ARMv7架构采用了Thumb一2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案完整的代码兼容性。 Thumb一2技术比纯ARM代码少使用31%的内存,减小了系统开销,同时能够提供比Thumb技术高出38%的性能。
在中断处理方面,Cortex—M3集成了嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是Cortex—M3处理器的一个紧耦合部分,可以配置1~240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。同时,抢占(Pre—eruption)、尾链(Tail-chaining)、迟到技术(Late—arri- ving)的使用,大大缩短了异常事件的响应时间。Cortex—M3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。
Cortex—M3体系架构提出了新的单线调试技术,Cortex—M3处理器的跟踪调试是通过调试访问端口(Debug Access Port,DAP)来实现的。DAP端口可以作为串行线调试端口(SW—DP)或串行JTAG调试端口(SWJ—DP,允许JTAG或SW协议)使用。其中SW—DP只需要时钟和数据2个引脚,实现低成本跟踪调试,避免使用多引脚进行JTAG调试,并全面支持RealView编译器和RealView调试产品。此外Cortex—M3还具备高度集成化的特点,大大减小了芯片面积,内部集成了许多紧耦合系统外设,合理利用了芯片空间,使系统满足下一代产品的控制需求。
STM32系列是基于Cortex—M3核的微控制器,它在Cortex—M3内核的基础上扩展了高性能的外围设备。
2 VSl003 MP3/WMA音频编解码器
VSl003内部包含1个高性能、低功耗的DSP处理核(VSDSP),1个工作内存,1片可供用户程序使用的5.5KB RAM,1个串行SPI总线接口,1个高质量的采样频率可调的过采样DAC以及1个16位的采样ADC。VSl003的内部结构如图1所示。
MP3播放过程是STM32通过SPIl接口将数据从SD卡中取出,然后通过SPl2接口送至解码芯片VSl003解码播放。这里解码模块单独使用一个 SPI接口,以减小干扰和噪声、提高音质。
3 系统硬件设计
本系统在硬件上分为6个模块:微控制器STM32F103、解码模块VSl003、存储模块SD卡、控制摇杆Joystick、USB接口和显示屏 LCD。系统硬件框架如图2所示。
下面分别介绍系统的存储模块SD卡、解码芯片VSl003与STM32的硬件连接情况。
3.1 SD卡与STM32的连接
该系统使用STM32内部接口SPIl与SD卡进行通信,下面介绍其引脚连接情况。
PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。SPI在和SD卡进行通信时,需要将PE3拉低才能对SD卡进行操作。
PA7:映射为STM32内部接口SPIl的主输出从输入(MOSI)信号线。这里STM32是主设备,SD卡是从设备。数据流的传输方向是从STM32 传输给SD卡。该信号线用于传输一些控制命令来完成SD卡的操作,如读、写等。
PA5:已连接到STM32内部接口SPIl的时钟(SCLK)信号线。可设置SPI的时钟频率来调整读取SD卡数据的快慢。
PA6:已连接到STM32内部接口SPIl的主输入从输出(MISO)信号线。数据的传输方向是从SD卡传输给STM32,主要返回SD卡的一些状态、内部寄存器值等。
PCI2:用于检测SD卡是否完全插入。当SD卡完全插入时,PCl2为低电平,否则为高电平。
3.2 VSl003与STM32的连接
该系统使用STM32内部接口SPl2与VSl003进行通信,下面介绍其引脚连接情况。
PA3:VSl003的中断请求引脚。当VSl003内部数据已处理完毕,需要新的数据时,将DREQ拉高。STM32根据这个信号来给VSl003发送新的数据流。
PBl3:已连接到STM32内部接口SPI2的时钟(SCLK)信号线。
PBl4:已连接到STM32内部接口SPI2的主输入从输出(MISO)信号线。这里STM32是主设备,VSl003是从设备。数据流的传输方向是从 VSl003传输给STM32。主要用于读取VSl003的一些状态和内部寄存器值,比如寄存器测试返回的内部寄存器的值。
PBl5:已连接到STM32内部接口SPl2的主输出从输入(MOSI)信号线。这里STM32是主设备,VSl003是从设备。数据流方向是从 STM32传输给VSl003,主要传输给VSl003一些控制命令、MP3/WMA数据流等。
PAl:低电平有效,如果拉低该引脚,那么通过SPI传输的是控制信号。控制信号包括读写VSl003的内部寄存器、对VSl003进行初始化、设置左右声道音量等。PA2:低电平有效,如果拉低该引脚,那么通过SPI传输的是数据信号。比如在向VSl003传输MP3/WMA的数据流时需要拉低该引脚。
PA0:低电平有效,拉低该引脚则硬件复位VSl003。
STM32系列微控制器采用ARM公司最新的Cortex—M3内核。VSl003音频解码芯片为VSlOxx系列的第三代产品,是芬兰VLSI Solution公司生产的单片MP3/WMA/MIDI解码和ADPCM编码芯片。本文采用STM32系列微控制器,结合解码芯片VSl003、SD 卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VSl003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过摇杆控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。
1 STM32处理器
Cortex—M3是ARM公司最新推出的基于ARMv7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。
ARMv7架构采用了Thumb一2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案完整的代码兼容性。 Thumb一2技术比纯ARM代码少使用31%的内存,减小了系统开销,同时能够提供比Thumb技术高出38%的性能。
在中断处理方面,Cortex—M3集成了嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是Cortex—M3处理器的一个紧耦合部分,可以配置1~240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。同时,抢占(Pre—eruption)、尾链(Tail-chaining)、迟到技术(Late—arri- ving)的使用,大大缩短了异常事件的响应时间。Cortex—M3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。
Cortex—M3体系架构提出了新的单线调试技术,Cortex—M3处理器的跟踪调试是通过调试访问端口(Debug Access Port,DAP)来实现的。DAP端口可以作为串行线调试端口(SW—DP)或串行JTAG调试端口(SWJ—DP,允许JTAG或SW协议)使用。其中SW—DP只需要时钟和数据2个引脚,实现低成本跟踪调试,避免使用多引脚进行JTAG调试,并全面支持RealView编译器和RealView调试产品。此外Cortex—M3还具备高度集成化的特点,大大减小了芯片面积,内部集成了许多紧耦合系统外设,合理利用了芯片空间,使系统满足下一代产品的控制需求。
STM32系列是基于Cortex—M3核的微控制器,它在Cortex—M3内核的基础上扩展了高性能的外围设备。
2 VSl003 MP3/WMA音频编解码器
VSl003内部包含1个高性能、低功耗的DSP处理核(VSDSP),1个工作内存,1片可供用户程序使用的5.5KB RAM,1个串行SPI总线接口,1个高质量的采样频率可调的过采样DAC以及1个16位的采样ADC。VSl003的内部结构如图1所示。
MP3播放过程是STM32通过SPIl接口将数据从SD卡中取出,然后通过SPl2接口送至解码芯片VSl003解码播放。这里解码模块单独使用一个 SPI接口,以减小干扰和噪声、提高音质。
3 系统硬件设计
本系统在硬件上分为6个模块:微控制器STM32F103、解码模块VSl003、存储模块SD卡、控制摇杆Joystick、USB接口和显示屏 LCD。系统硬件框架如图2所示。
下面分别介绍系统的存储模块SD卡、解码芯片VSl003与STM32的硬件连接情况。
3.1 SD卡与STM32的连接
该系统使用STM32内部接口SPIl与SD卡进行通信,下面介绍其引脚连接情况。
PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。SPI在和SD卡进行通信时,需要将PE3拉低才能对SD卡进行操作。
PA7:映射为STM32内部接口SPIl的主输出从输入(MOSI)信号线。这里STM32是主设备,SD卡是从设备。数据流的传输方向是从STM32 传输给SD卡。该信号线用于传输一些控制命令来完成SD卡的操作,如读、写等。
PA5:已连接到STM32内部接口SPIl的时钟(SCLK)信号线。可设置SPI的时钟频率来调整读取SD卡数据的快慢。
PA6:已连接到STM32内部接口SPIl的主输入从输出(MISO)信号线。数据的传输方向是从SD卡传输给STM32,主要返回SD卡的一些状态、内部寄存器值等。
PCI2:用于检测SD卡是否完全插入。当SD卡完全插入时,PCl2为低电平,否则为高电平。
3.2 VSl003与STM32的连接
该系统使用STM32内部接口SPl2与VSl003进行通信,下面介绍其引脚连接情况。
PA3:VSl003的中断请求引脚。当VSl003内部数据已处理完毕,需要新的数据时,将DREQ拉高。STM32根据这个信号来给VSl003发送新的数据流。
PBl3:已连接到STM32内部接口SPI2的时钟(SCLK)信号线。
PBl4:已连接到STM32内部接口SPI2的主输入从输出(MISO)信号线。这里STM32是主设备,VSl003是从设备。数据流的传输方向是从 VSl003传输给STM32。主要用于读取VSl003的一些状态和内部寄存器值,比如寄存器测试返回的内部寄存器的值。
PBl5:已连接到STM32内部接口SPl2的主输出从输入(MOSI)信号线。这里STM32是主设备,VSl003是从设备。数据流方向是从 STM32传输给VSl003,主要传输给VSl003一些控制命令、MP3/WMA数据流等。
PAl:低电平有效,如果拉低该引脚,那么通过SPI传输的是控制信号。控制信号包括读写VSl003的内部寄存器、对VSl003进行初始化、设置左右声道音量等。PA2:低电平有效,如果拉低该引脚,那么通过SPI传输的是数据信号。比如在向VSl003传输MP3/WMA的数据流时需要拉低该引脚。
PA0:低电平有效,拉低该引脚则硬件复位VSl003。
STM32 ARM Cortex LCD USB 嵌入式 解码器 DSP 总线 DAC ADC 汽车电子 电子 MCU 单片机 相关文章:
- STM32F103x的USB多路数据采集系统设计(09-08)
- 十几款创意机器人制作热推,呆萌炫酷通通有!(06-09)
- 15个图像采集系统的经典设计应用案例(07-15)
- 利用MEMS麦克风阵列定位并识别音频或语音信源的技术方案(10-17)
- DIY电子项目创意设计汇总(电路城原创精选)(10-25)
- 基于STM32智能家居系统的设计与实现(02-12)