我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1628|回复: 3

基于Cortex-M3的MP3播放器设计 - 消费电子 - 电子工程师俱乐部

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:42:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<strong>引言</strong>

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卡进行读写操作,以方便拷贝音频文件。

<strong>1 STM32处理器</strong>

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内核的基础上扩展了高性能的外围设备。

<strong>2 VSl003 MP3/WMA音频编解码器</strong>

VSl003内部包含1个高性能、低功耗的DSP处理核(VSDSP),1个工作内存,1片可供用户程序使用的5.5KB RAM,1个串行SPI总线接口,1个高质量的采样频率可调的过采样DAC以及1个16位的采样ADC。VSl003的内部结构如图1所示。


<ignore_js_op>





2010-4-13 10:56:48 上传
<strong>下载附件</strong> (11.9 KB)




</ignore_js_op>


MP3播放过程是STM32通过SPIl接口将数据从SD卡中取出,然后通过SPl2接口送至解码芯片VSl003解码播放。这里解码模块单独使用一个 SPI接口,以减小干扰和噪声、提高音质。

<strong>3 系统硬件设计</strong>

本系统在硬件上分为6个模块:微控制器STM32F103、解码模块VSl003、存储模块SD卡、控制摇杆Joystick、USB接口和显示屏 LCD。系统硬件框架如图2所示。


<ignore_js_op>





2010-4-13 10:56:48 上传
<strong>下载附件</strong> (8.91 KB)




</ignore_js_op>


下面分别介绍系统的存储模块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。

<strong>4 系统软件设计</strong>

本系统的软件由集成开发工具 RealView MDK专业版开发,它具有强大的编译、链接和调试功能。软件结构如图3所示。本系统的工作过程大致为:STM32通过SPIl从SD卡中读取 MP3/WMA文件,将所读取的数据流通过SPl2发送到VSl003解码器中播放;PC机可通过USB总线读写SD卡的内容,传送MP3/WMA等文件;LCD显示屏用于显示MP3的文件名、播放状态。五维摇杆左右摇动控制播放上一首/下一首,上下摇动控制音量,按下则控制播放/暂停。


<ignore_js_op>





2010-4-13 10:56:48 上传
<strong>下载附件</strong> (4.57 KB)




</ignore_js_op>


由于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的实现:


<ignore_js_op>





2010-4-13 10:56:48 上传
<strong>下载附件</strong> (12.64 KB)




</ignore_js_op>


<ignore_js_op>





2010-4-13 10:56:48 上传
<strong>下载附件</strong> (2.56 KB)




</ignore_js_op>


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的连接是否完好。

<strong>结语</strong>

本文提出了一种基于STM32的MP3播放器设计方案,并使用ARM开发工具RealView MDK实现了该方案的原型。尽管该方案无法作为一个通用MP3的方案,但是对于某些音频需要的工业控制、汽车电子、医疗电子等方案具有一定的参考性。另外,本系统综合使用了STM32处理器的多个外围接口,也可供读者学习参考。

<strong>参考文献</strong>

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)
回复

使用道具 举报

该用户从未签到

11

主题

41

回帖

14

积分

二级逆天

你好

积分
14

社区居民

QQ
发表于 2014-9-20 17:31:39 | 显示全部楼层
努力挣钱
回复

使用道具 举报

该用户从未签到

12

主题

65

回帖

47

积分

二级逆天

积分
47

终身成就奖特殊贡献奖社区居民原创先锋奖幽默大师奖灌水天才奖贴图大师奖金点子奖新人进步奖优秀斑竹奖宣传大使奖

QQ
发表于 2014-9-21 20:49:17 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2024-9-14 20:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    38

    主题

    1646

    回帖

    4174

    积分

    二级逆天

    积分
    4174

    社区居民终身成就奖社区劳模忠实会员最爱沙发社区明星宣传大使奖

    QQ
    发表于 2014-9-22 08:50:49 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表