单片机实现
MP3
播放的方法
有一个东西½一定听说过或用过,那就
MP3
播放器。MP3 播放器以其小巧的½积、强
大的功½、优异的音质倍受人们的青睐。如果把它嵌入到我们的单片机系统中,实现音频输
出,那么对系统的增色是不言而喻的。单独拿单片机来说,要解码MP3 文件,是不可½的,
因为从处理速度和资源各个方面½是不½满足要求的。所以要依赖于专用
MP3
解码芯片,
而单片机要½的就是对其进行控制。这里我们围绕芬兰
VLSI
公司出品的
VS1003
来进行解
MP3
的实现方法。
1、VS1003
芯片
1)芯片简介
VS1003是由荷兰VLSI公司出品的一款单芯片的MP3/WMA/MIDI音频解码和
ADPCM编码芯片,其拥有一个高性½½功耗的DSP处理器核VS_DSP,5K的指令
RAM,0.5K的数据RAM,串行的控制和数据输入接口, 4个通用IO口,一个UART
口;同时片内带有一个可变采样率的ADC、一个立½声DAC以及音频耳机放大器。
VS1003通过一个串行接口来接收输入的比特流,它可以½为一个系统的从机。
输入的比特流被解码,然后通过一个数字竟是控制器到达一个18½过采样多½ε-
ΔDAC。通过串行总线控制解码器。除了基本的解码,在用户RAM中它还可以做其
他特殊应用,例如DSP音效处理。
2)芯片实物与 VS1003 MP3
模块
3)芯片封装
以下的讲述½是针对于
LQFP48
封装的。
4)MP3
模块接口
5)VS1003
特性
1.½解码 MPEG1
与
MPEG2
音频层
III(CBR+VBR+ABR);WMA 4.0/4.1/7/8/9
5~384kbps
所有流文件;WAV
(PCM+IMA
ADPCM)
;产生 MIDI/SPMIDI
文件。
2.对话筒输入或线路输入的音频信号进行 IMA ADPCMM
编码
3.支持 MP3
和
WAVV
流
4.高½音控制
5.单时钟 12~13MHz
6.内部 PLLL
锁相环时钟倍频器
7.½功耗
8.内含高性½片上立½声数模½换器,两声道间无相½差
9.内含½驱动 30
欧负½½的耳机驱动器
10.模拟,数字,I/O
单独供电
11.为用户代码和数据准备的 5.5KB
片上
RAM
12.串行的控制/数据接口
13.可被用½微处理器的从机
14.特殊应用的 SPI Flash
引导
15.借高度用途的 UART
接口
16.新功½可以通过½件和 4 GPIO
添加
6)VS1003
的引脚定义
管脚名称
MICP
MICN
XRESET
DGND0
LQFP48
1
2
3
4
管脚类型
AI
AI
DI
DGND
管脚功½
同相差分话筒输入,自偏压
反相差分话筒输入,自偏压
½电平有效,异步复½端
处理器核与
I/O
地
CVDD0
IOVDD0
CVDD1
DREQ
GPIO/DCLK
GPIO3/SDATA
XDCS/BSYNC
IOVDD1
VCO
DGND1
XTALO
XTALI
IOVDD2
DGND2
DGND3
DGND4
XCS
CVDD2
RX
TX
SCLK
SI
SO
CVDD3
TEST
GPIO0/SPIBOOT
GPIO1
AGND0
AVDD0
RIGHT
AGND1
AGND2
GBUF
AVDD1
RCAP
AVDD2
LEFT
AGND3
LINE IN
5
6
7
8
9
10
13
14
15
16
17
18
19
20
21
22
23
24
26
27
28
29
30
31
32
33
34
37
38
39
40
41
42
43
44
45
46
47
48
CPWR
IOPWR
CPEW
DO
DIO
DIO
DI
IOPWR
DO
DGND
AO
AI
IOPWR
DGND
DGND
DGND
DI
CPWR
DI
DO
DI
DI
DO3
CPWR
DI
DIO
DIO
APWR
APWR
AO
APWR
APWR
AO
APWR
AIO
APWR
AO
APWR
AI
处理器核电源
I/O
电源
处理器核电源
数据请求,输入总线
通用
I/O2 /串行数据总线时钟
通用
I/O3 /串行数据总线数据
数据片选端/字节同步
I/O
电源
时钟压控振荡器VCO 输出
处理器核与I/O 的地
晶振输出
晶振输入
I/O
电源
处理器核与I/O 地
处理器核与I/O 地
处理器核与I/O 地
片选输入,½电平有效
处理器核电源
UART接收口,不用时接IOVDD
UART发送口
串行总线的时钟
串行输入
串行输出
处理器核电源
保留做测试,连接至IOVDD
通用I/O0
/SPIBOOT,½用100K
下拉电阻
通用I/O1
模拟地,½噪声参考地
模拟电源
右声道输出
模拟地
模拟地
公共地缓冲器
模拟电源
基准滤波电容
模拟电源
左声道输出
模拟地
线路输入
7)VS1003
的功½寄存器
VS1003
共有
16
个
16
½的寄存器,地址分别为
0X0~0XF;除了模式寄存器
(MODE,
0X0)
和状态寄存器
(STATUS,
0X1)
在复½后的初始值分别为
0X800
和
OX3C
外,其½的寄存器在
VS1003
初始化后的值均为
0。下面将 VS1003
各
寄存器逐一进行介绍。
1.MODE(地址:0X0
可读写)
bit0:SM_DIFF
SM_DIFF=0
正常音频相½
SM_DIFF=1
左声道反½
½
SM_DIFF
½½时,VS1003 将左声道反相输出,立½声输入将产生环
绕效果,对于单声道输入将产生差分(反相)左/右声道信号。
bit1:SM_SETTOZERO
½零。
bit2:SM_RESET
SM_RESET=1,VS1003
½复½。½复½之后该½会自动清零。
bit3:SM_OUTOFWAV
SM_OUTOFWAV=1,停止 WAV
解码。
½ ½ 要 中 途 停 止
WAV
、
WMA
或 者
MIDI
文 件 的 解 码 时 , ½ ½
SM_OUTOFWAV,并向 VS1003
持续发送数据(对于
WAV
文件发送
0)
直到将
SM_OUTOFWAV
清零;同时
SCI_HIDAT1
也将被清零。
bit4:SM_PDOWN
SM_PDOWN=1,
½件省电模式,
该模式不及硬件省电模式
(可由
VS1003
的
XRESET
来激活)
。
bit5:SM_TESTS
SM_TESTS=1,进入 SDI
测试模式。
bit6:SM_STREAM
SM_STREAM=1,½½ VS1003
的流模式。
bit7:SM_PLUSV
SM_PLUSV=1,MP3+V
解码½½。
bit8:SM_DACT
SM_DACT=0,SCLK
上升沿有效;SM_DACT=1,SCLK 下降沿有效。
bit9:SM_SDIORD
SM_SDIORD=0,SDI
总线字节数据
MSB
在前,即须先发送
MSB;
SM_SDIORD=1,SDI
总线字节数据
LSB
在前,即须先发送
LSB;
该½的设½不会½响
SCI
总线。
bit10:SM_SDISHARE
SM_SDISHARE=1,SDI
与
SCI
将 共 用 一 个 片 选 信 号 ( 同 时
SM_SDINEW=1)
即将
XDCS
与
XCS
这两根信号线合为一条,
,
½省去一
个
IO
口。
bit11:SM_SDINEW
SM_SDINEW=1,VS1002
本地模式(新模式)
。VS1003 在启动后默认进
入该模式。
(这里所说的模式指的是总线模式。
)
bit12:SM_ADPCM
SM_ADPCM=1,ADPCM
½音½½。
同时½½
SM_ADPCM
和
SM_RESET
将½½
VS1003
的
IMA ADPCM
½
音功½。
bit13:SM_ADPCM_HP
SM_ADPCOM_HP=1
, ½ ½
ADPCM
高 通 滤 波 器 。 同 时 ½ ½
SM_ADPCM_HP、SM_ADPCM
和
SM_RESET
将开启
ADPCM
½音用高
通滤波器,对½音时的背景噪音有一定的抑制½用。
bit14:SM_LINE_IN
½音输入选择,SMLINE_IN=1,选择线入(line
in);SM_LINE_IN=0,选
择麦克风输入(默认)
。
2.SCI_STATUS(地址:0X1
可读写)
SCI_STATUS
为
VS1003
的状态寄存器,提供
VS1003
½前状态信息。
3.SCI_BASS(地址:0X2
可读写)
重音/高音设½寄存器。
VS1003
的内½的重音增强器
VSBE
是种高质量的重音增强
DSP
算法,
½
够最大限度的避免音频削波。½
SB_AMPLITUDE(bit:7~4)不为零时,重音
增 强 器 将 ½ ½ 。 可 以 根 据 个 人 需 要 来 设 ½
SB_AMPLITUDE
。 例 如 ,
SCI_BASS=0x00f6
, 即 对
60Hz
以 下 的 音 频 信 号 进 行
15dB
的 增 强 。 ½
ST_AMPLITUDE
(
bit:15~12
) 不 为 零 时 , 高 音 增 强 将 ½ ½ 。 例 如 ,
SCI_BASS=0x7a00,即 10kHz
以上的音频信号进行
10.5dB
的增强。
评论