ALIENTEK STM32开发板 MP3播放器实验
1 MP3 简介
MP3 是MPEG Audio Layer3 的简称,其实MP3 就是一种音频压缩技术。通过这个技术,MP3 可以将音乐以1:10 甚至1:12 的压缩率压缩,从而大大降低了音乐文件的体积。不过MP3是一种有损压缩,但其压缩过后还是可以保持很好的音质。正是因为MP3 体积小、音质高的特点,使得MP3 格式的音乐在网络上大为传播。MP3 通过丢弃脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据,从而达到了小得多的文件大小。一首60M 左右的WAV 无损音乐,压缩为MP3 后,一般只有3~4M 左右,由此可见MP3 大大节省了我们的存储空间。因为MP3 大行其道,各式各样的MP3 播放器也是层出不穷,这里我们介绍一款音频解码芯片,本章我们将利用这个解码芯片来播放MP3 等音乐。本章我们将通过ALIENTEK 的音频解码模块来做MP3 的播放。该模块的外观图如1 所示:
图1 中,左边的是正面图,右边的是背面图。图中的主控芯片用的是VLSI 的VS1003。VS1003 是由荷兰VLSI 公司出品的一款单芯片MP3/WMA/MIDI/WAV 音频解码和ADPCM 编码芯片,它拥有一个高性能的DSP 处理器核VS_DSP,5K 的指令RAM,0.5K 的数据RAM,通过SPI控制,具有4 个通用IO 口和一个串口,芯片内部还带了一个可变采样率的ADC、一个18 位的立体声DAC 及音频耳机放大器。
VS1003 的特性如下:
●能解码 MPEG 1 和MPEG2 音频层 III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9
5-384kbps 所有流文件;WAV(PCM+IMAAD-PCM);产生MIDI/SP-MIDI 文件。
●对话筒输入或线路输入的音频信号进行IMAADPCM编码
●支持 MP3 和WAV 流
●高低音控制
●单时钟操作12..13MHz
●内部PLL锁相环时钟倍频器
●低功耗
●内含高性能片上立体声数模转换器,两声道间无相位差
●内含能驱动30 欧负载的耳机驱动器
●模拟,数字,I/O 单独供电
●为用户代码和数据准备的5.5KB片上RAM
●串行的控制,数据接口
●可被用作微处理器的从机
●特殊应用的SPI Flash引导
●供调试用途的UART接口
●新功能可以通过软件和4 GPIO 添加
VS1003 通过SPI 接口来接受输入的音频数据流,它可以是一个系统的从机,也可以作为独立的主机。这里我们只把它当成从机使用。我们通过SPI 口向VS1003 不停的输入音频
数据,它就会自动帮我解码了,然后从输出通道输出音乐,这时我们接上耳机就能听到所播放的歌曲了。ALIENTEK 音频解码模块是一个通用的解码模块,除了支持VS1003 以外,还可以支持VS1053。VS1053 的性能比VS1003 更加强劲,不过价格也相对较高。这里我们不做介绍,接来我们看看该模块的原理图,如图2 所示:
VS1003 通过7 根线同主控芯片连接,他们是:VS_RST、VS_DREQ、VS_MISO、VS_MOSI、VS_SCK、VS_XDCS、VS_XCS。
其中VS_RST 是VS1003 的复位信号线,低电平有效。VS_DREQ 是一个数据 请求信号,用来通知主机,VS1003 可以接收数据与否。VS_MISO、VS_MOSI 和VS_SCK 则是VS1003 的SPI接口他们在VS_XCS 和VS_XDCS 下面来执行不同的操作。VS1003 的SPI 支持两种模式:1,VS1002 有效模式(即新模式)。2,VS1001 兼容模式。
这里我们仅介绍VS1002 有效模式(此模式也是VS1003 的默认模式)。
详细介绍请下载文档
关于VS1003 的介绍,我们就介绍到这里,更详细的介绍请看VS1003 的数据手册。接下来我们说说如何控制通过最简单的步骤,来控制VS1003 播放一首歌曲。
1) 复位 VS1003
这里包括了硬复位和软复位,是为了让VS1003 的状态回到原始状态,准备解码下一首歌曲。这里建议大家在每首歌曲播放之前都执行一次硬件复位和软件复位,以便更好的播放
音乐。
2) 配置 VS1003 的相关寄存器
这里我们配置的寄存器包括VS1003 的模式寄存器(MODE)、时钟寄存器(CLOCKF)、音调寄存器(BASS)、音量寄存器(VOL)等。
3) 发送音频数据
当经过以上两步配置以后,我们剩下来要做的事情,就是往VS1003 里面扔音频数据了,只要是VS1003 支持的音频格式,直接往里面丢就可以了,VS1003 会自动识别,并进行播放。不过发送数据要在DREQ 信号的控制下有序的进行,不能乱发。这个规则很简单:只要DREQ变高,就向VS1003 发送32 个字节。然后继续等待DREQ 变高,直到音频数据发送完。经过以上三步,我们就可以播放音乐了。这一部分就先介绍到这里。
2 硬件设计
本章实验功能简介:开机检测SD 卡和字库是否存在,如果检测无问题,则开始循环播放SD 卡根目录的歌曲,在TFTLCD 上显示歌曲名字、播放时间、歌曲总时间、歌曲总数
目、当前歌曲的编号等信息。KEY0 用于选择下一曲,KEY1 用于选择上一曲,而KEY_UP用于暂停/播放。本实验用DS1 来象征性的指示程序的运行(实际是指示一个簇的结束)。
本实验用到的资源如下:
1)STM32F103RBT6。
2)DS1。
3)TFTLCD 液晶模块。
4)SD 卡。
5)KEY0、KEY1、KEY_UP。
6)ALIENTEK MP3 解码模块
除了 6,其他的几个部分,在之前的实例中都已经介绍过了,在此就不多说了,这里们重点看看ALIENTEK MP3 解码模块和ALIENTEK MiniSTM32 开发板的连接。其连接关系如表6 所示:
详细文档和代码见附件:
|