基于Cortex-M3的MP3播放器设计
时间:04-13
来源:互联网
点击:
4 系统软件设计
本系统的软件由集成开发工具 RealView MDK专业版开发,它具有强大的编译、链接和调试功能。软件结构如图3所示。本系统的工作过程大致为:STM32通过SPIl从SD卡中读取 MP3/WMA文件,将所读取的数据流通过SPl2发送到VSl003解码器中播放;PC机可通过USB总线读写SD卡的内容,传送MP3/WMA等文件;LCD显示屏用于显示MP3的文件名、播放状态。五维摇杆左右摇动控制播放上一首/下一首,上下摇动控制音量,按下则控制播放/暂停。
由于SPIl读取SD卡文件的速度远超过VSl003播放数据流的速度,因此VSl003在播放来自SPI2的数据流期间,SPIl能从SD卡中读取下次播放所需的数据,不会产生声音不连续的情况。由于使用了2个SPI接口,相互之间无干扰,且提高了文件系统的效率,因此本系统能得到非常高品质的音乐。
限于篇幅,下面仅介绍软件的两个核心模块。
4.1 SD模块
SD模块主要提供SD卡驱动以及对 FAT文件系统操作的函数,FAT文件系统支持长文件名。该模块主要含有2个文件msd.c和fatl6.c。下面分别介绍其主要函数的功能。
4.1.1 msd.c
该文件用于提供SD卡的驱动,主要包括以下函数。
SPI_Config:配置与SD卡相连接的SPIl及相关GPIO。
MSD_Init:初始化SD卡通信。
Get_Medium_Characteristics:获取SD卡的容量和块大小等相关信息。
MSD_GoIdleState:令SD卡处于空闲态。
MSD_SendCmd:向SD卡发送命令。
MSD_GetResponse:从SD卡获取响应。
MSD_GetStatus:获取SD卡的状态。
MSD_WriteBlock:向SD卡写入1个块的数据。
MSD_ReadBlock:从SD卡读取1个块的数据。
以下是函数MSD_ReadBlock的实现:
4.1.2 fatl6.c
该文件提供对FATl6文件系统的支持,主要包含以下函数。
ReadMBR:读取MBR数据结构。
ReadBPB:读取BPB数据结构。
ReadFAT:读取文件分配表指定项。
ReadBloek:读取SD卡的一个扇区。
FAT_Init:获取FATl6文件系统的基本信息。
DirStartSec:获取根目录的开始扇区号。
DataStartSec:获取数据区的开始扇区号。
ClusConvLBA:获取一个簇的开始扇区号。
LBAConvClus:转换扇区号与簇号之间的关系。
GetFileName:获取指定文件的首扇区号。
ListDateTime:列出文件或子目录创建的时间日期。
SearchFoler:在指定范围内查找文件或子目录。
ListDir:列出指定范围内的文件或子目录及相关信息。
FAT_FileOpen:打开指定文件。
FAT_FileRead:读取文件数据。
4.2 VSl003模块
VSl003模块主要提供对解码芯片VSl003的驱动,为应用层播放音频数据、控制音量声道等提供基本接口。该模块主要含文件vsl003.c。其主要函数的功能如下。
vsl003.c文件主要提供VSL003芯片的驱动,包含以下几个主要函数。
VSL003_Config:配置STM32与VSl003连接的相关引脚,包括SPl2、PA0、PAl、PA2、PA3。
SPIGetChar:通过SPI从VSl003读取1个字节。
SPIPutChar:通过SPI向VSl003写入1个字节。如果是MP3/WMA数据流,则VSl003将开始解码并播放。
Mp3ReadRegister:读取VSl003寄存器的值。
Mp3WriteRegister:写VSl003寄存器。
Mp3Reset:VSl003复位,包括软件复位和硬件复位。
Mp3SoftReset:VSl003软件复位,设置时钟、采样率、重音、音量、立体声等参数,一般在2首乐曲之间需要一次软件复位。
VsSineTest:播放正弦声波,用于测试VSl003和STM32的连接是否完好。
结语
本文提出了一种基于STM32的MP3播放器设计方案,并使用ARM开发工具RealView MDK实现了该方案的原型。尽管该方案无法作为一个通用MP3的方案,但是对于某些音频需要的工业控制、汽车电子、医疗电子等方案具有一定的参考性。另外,本系统综合使用了STM32处理器的多个外围接口,也可供读者学习参考。
参考文献
1. ST Microelectronics RM0008 Reference Manual(Medium and Hight-density STM32F101xx and STM32F103xx Advanced ARM-based 32-bit MCUs) 2008
2. VLSI Solution VS1003 User Mannual.Version 1.03 2008
3. ARM Limited Cortex-M3 Technical Reference Manual 2005
4. 李宁 ARM 开发工具 ReaIView MDK使用入门 2008
作者:武汉理工大学 李宁 熊刚 徐良平
来源:单片机与嵌入式系统应用 2009 (2)
本系统的软件由集成开发工具 RealView MDK专业版开发,它具有强大的编译、链接和调试功能。软件结构如图3所示。本系统的工作过程大致为:STM32通过SPIl从SD卡中读取 MP3/WMA文件,将所读取的数据流通过SPl2发送到VSl003解码器中播放;PC机可通过USB总线读写SD卡的内容,传送MP3/WMA等文件;LCD显示屏用于显示MP3的文件名、播放状态。五维摇杆左右摇动控制播放上一首/下一首,上下摇动控制音量,按下则控制播放/暂停。
由于SPIl读取SD卡文件的速度远超过VSl003播放数据流的速度,因此VSl003在播放来自SPI2的数据流期间,SPIl能从SD卡中读取下次播放所需的数据,不会产生声音不连续的情况。由于使用了2个SPI接口,相互之间无干扰,且提高了文件系统的效率,因此本系统能得到非常高品质的音乐。
限于篇幅,下面仅介绍软件的两个核心模块。
4.1 SD模块
SD模块主要提供SD卡驱动以及对 FAT文件系统操作的函数,FAT文件系统支持长文件名。该模块主要含有2个文件msd.c和fatl6.c。下面分别介绍其主要函数的功能。
4.1.1 msd.c
该文件用于提供SD卡的驱动,主要包括以下函数。
SPI_Config:配置与SD卡相连接的SPIl及相关GPIO。
MSD_Init:初始化SD卡通信。
Get_Medium_Characteristics:获取SD卡的容量和块大小等相关信息。
MSD_GoIdleState:令SD卡处于空闲态。
MSD_SendCmd:向SD卡发送命令。
MSD_GetResponse:从SD卡获取响应。
MSD_GetStatus:获取SD卡的状态。
MSD_WriteBlock:向SD卡写入1个块的数据。
MSD_ReadBlock:从SD卡读取1个块的数据。
以下是函数MSD_ReadBlock的实现:
4.1.2 fatl6.c
该文件提供对FATl6文件系统的支持,主要包含以下函数。
ReadMBR:读取MBR数据结构。
ReadBPB:读取BPB数据结构。
ReadFAT:读取文件分配表指定项。
ReadBloek:读取SD卡的一个扇区。
FAT_Init:获取FATl6文件系统的基本信息。
DirStartSec:获取根目录的开始扇区号。
DataStartSec:获取数据区的开始扇区号。
ClusConvLBA:获取一个簇的开始扇区号。
LBAConvClus:转换扇区号与簇号之间的关系。
GetFileName:获取指定文件的首扇区号。
ListDateTime:列出文件或子目录创建的时间日期。
SearchFoler:在指定范围内查找文件或子目录。
ListDir:列出指定范围内的文件或子目录及相关信息。
FAT_FileOpen:打开指定文件。
FAT_FileRead:读取文件数据。
4.2 VSl003模块
VSl003模块主要提供对解码芯片VSl003的驱动,为应用层播放音频数据、控制音量声道等提供基本接口。该模块主要含文件vsl003.c。其主要函数的功能如下。
vsl003.c文件主要提供VSL003芯片的驱动,包含以下几个主要函数。
VSL003_Config:配置STM32与VSl003连接的相关引脚,包括SPl2、PA0、PAl、PA2、PA3。
SPIGetChar:通过SPI从VSl003读取1个字节。
SPIPutChar:通过SPI向VSl003写入1个字节。如果是MP3/WMA数据流,则VSl003将开始解码并播放。
Mp3ReadRegister:读取VSl003寄存器的值。
Mp3WriteRegister:写VSl003寄存器。
Mp3Reset:VSl003复位,包括软件复位和硬件复位。
Mp3SoftReset:VSl003软件复位,设置时钟、采样率、重音、音量、立体声等参数,一般在2首乐曲之间需要一次软件复位。
VsSineTest:播放正弦声波,用于测试VSl003和STM32的连接是否完好。
结语
本文提出了一种基于STM32的MP3播放器设计方案,并使用ARM开发工具RealView MDK实现了该方案的原型。尽管该方案无法作为一个通用MP3的方案,但是对于某些音频需要的工业控制、汽车电子、医疗电子等方案具有一定的参考性。另外,本系统综合使用了STM32处理器的多个外围接口,也可供读者学习参考。
参考文献
1. ST Microelectronics RM0008 Reference Manual(Medium and Hight-density STM32F101xx and STM32F103xx Advanced ARM-based 32-bit MCUs) 2008
2. VLSI Solution VS1003 User Mannual.Version 1.03 2008
3. ARM Limited Cortex-M3 Technical Reference Manual 2005
4. 李宁 ARM 开发工具 ReaIView MDK使用入门 2008
作者:武汉理工大学 李宁 熊刚 徐良平
来源:单片机与嵌入式系统应用 2009 (2)
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)