VS1003B MP3 Board 使用手册
1. 特性参数 ........................................................................................................................ 2
2. 使用说明 ........................................................................................................................ 2
2.1 模块引脚说明 .......................................................................................................................... 2
2.2 模块使用说明 .......................................................................................................................... 3
SPI 通信 ........................................................................................................................... 3
2.3.1.
2.3.2.
SCI 寄存器 ....................................................................................................................... 5
2.3.3. 播放音频文件 .................................................................................................................. 7
3. 结构尺寸 ........................................................................................................................ 8
4. 其他 ................................................................................................................................ 8
参数
3.3V 工作
WMA 4.0/4.1/7/8/9 5-384kbps 所有流文件、MP3 和 WAV 流
IMA ADPCM 编码
支持
5.5KB 片上 RAM
18 位
音量控制、高低音控制
1. 特性参数
特性
接口特性
解码格式
编码格式
板载录音
存储
DAC 分辨率
其他特性
2. 使用说明
2.1 模块引脚说明
与 MCU 连接
3.3V
GND
MOSI
MISO
SCK
I/O1
I/O2
I/O3
I/O4
说明
通用 GPIO 0
通用 GPIO 1
通用 GPIO 2
通用 GPIO 3
模拟地
左声道输出
说明
3.3V 供电
电源地
SPI 总线数据输入线
SPI 总线数据输出线
SPI 总线时钟线
片选输入(低电平有效)
数据片选/字节同步
数据请求
复位引脚(硬件复位,低电平有效)
黑色弯排针管脚:
管脚名称
3.3V
GND
MISO
MOSI
SCLK
xCS
xDCS
DREQ
xRSET
黄色排针:
管脚名称
P0
P1
P2
P3
AGND
OUT
如果在引导时间里, GPIO0 被上拉电阻拉到高电平, VS1003 尝试从外部 SPI 存储器中引
导, SPI 引导重定义的管脚如下:
正常模式 SPI 引导模式
正常模式
SPI 引导模式
GPIO0
GPIO1
DREQ
GPIO2
xCS
CLK
MOSI
MISO
必须有 16 位地址(即至少 1KB)的 SPI 串行 EEPROM。 SPI 时钟速度在 VS1003 工作在
12.288MHz 时为 245KHz。 此存储器中的前三字节必须是 0x50,0x26,0x48。
2.2 模块使用说明
2.3.1.
SPI 通信
VS1003B MP3 Board 模块通过 SPI 接口与外部控制器连接, VS1003 的控制以及音频数
据都是通过 SPI 接口,VS1003 通过 7 根信号线共同控制器,分别是:xRSET、XCS、XDCS、
SI、 SO、SCK 和 DREQ。其中 xRSET 是 VS1003 的复位控制线,低电平有效。DREQ 是数据请
求线,用于通知控制器 VS1003 是否可以接收数据。 SI(MOSI)、 SO(MISO)、 SCK 则是 VS1003
的 SPI 通信接口,他们在 XCS 和 XDCS 的控制下执行不同的数据通信。
VS1003 的 SPI 支持两种模式:1,VS1002 有效模式(即新模式)。2,VS1001 兼容模式。这
里我们仅介绍 VS1002 有效模式(此模式也是 VS1003 的默认模式)。下表是在新模式下 VS1003
的 SPI 信号线功能描述:
SDI 管脚
SCI 管脚
描述
XDCS
XCS
SCK
SI
SO
低电平有效片选输入, 高电平强制使串行接口进入 standby 模式, 结
束当前操作。SO 变成高阻态。如果 SM_SDISHARE 位设置为 1,则
不使用 XDCS,而有 XCS 内部反相后代替 XDCS。不过不推荐这种
设置方式。
串行时钟输入。 SCK 在传输的时候可以被打断,但是必须保持
XCS/XDCS 低电平不变,否则传输将中断。
串行数据输入。在片选有效的情况下, SI 在 SCK 的上升沿处采样。
所以, MCU 必须在 SCK 的下降沿上更新数据
串行输出, 在读操作时, 数据在 SCK 的下降沿处从此脚移出;在写
操作时为高阻态。
VS1003 的 SPI 数据传送,分为 SDI 和 SCI,SDI 用来传输数据, SCI 用于传输命令。 SDI
数据传输非常简单,就是标准 SPI 通信,不过 VS1003 的数据传输都是通过 DREQ 控制,主
机必须在判断 DREQ 有效(高电平有效)后,才可以发送数据,每次可以发送 32 字节。
SCI 串行总线命令接口包含了一个指令字节、一个地址字节和一个 16 位的数据字。读
写操作可以读写单个寄存器,在 SCK 的上升沿读出数据位,所以主机必须在下降沿刷新数据。
SCI 的字节数据总是高位在前低位在后。第一个字节指令字节,只有 2 个指令,也就是读和
写,读指令为:0X03,写指令为:0X02。
SCI 读时序如图所示:
从上图可以看出,向 VS1003 读取数据,通过先拉低 XCS,然后发送读指令(0X03)再
发送一个地址,最后,我们在 SO 线( MISO)上就可以读到输出的数据了。而同时 SI( MOSI)
上的数据将被忽略。
SCI 的写时序如下图:
SCI 写时序和 SCI 读时序类似,都是先发指令,再发地址。不过写时序中,我们的指令
是写指令(0X02),并且数据是通过 SI 写入 VS1003 的,SO 则一直维持低电平。在上两个
图中,DREQ 信号上都产生了一个短暂的低脉冲,也就是执行时间。这段时间,是不允许外
部打断的。
2.3.2.
SCI 寄存器
VS1003 总共有 16 个 SCI 寄存器,通过这些寄存器实现 VS1003 的各种控制,VS1003 的
所有 SCI 寄存器如下表所示:
SCI 寄存器
寄存器
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0X0F
类型
RW
RW
RW
RW
RW
RW
RW
RW
R
R
RW
RW
RW
RW
RW
RW
复位值
0x0800
0X003C
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
0X0000
缩写
MODE
STATUS
BASS
CLOKF
DECODE_TIME
AUDATA
WRAM
WRAMADDR
HDAT0
HDAT1
AIADDR
VOL
AICTRL0
AICTRL1
AICTRL2
AICTRL3
描述
控制模式
VS1003 状态
内置高低音增强器
时钟频率+倍频数
解码时间
各种音频数据
RAM 写/读
RAM 读写地址
流头数据 0
流头数据 1
用户代码起始地址
音量控制
应用控制寄存器 0
应用控制寄存器 1
应用控制寄存器 2
应用控制寄存器 3
以下介绍几个主要的寄存器:
MODE 寄存器:该寄存器用于控制 VS1003 的模式,改寄存器的初始值为 0x0800,MODE 的各
位描述如下:
位
0
名称
SM_DIFF
功能
差分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SM_LAYER12
允许 MPEG layers I&II
SM_RESET
解码
软件复位
SM_CANCEL
取消当前文件的解码
SM_EARSPEAKER_LO
EarSpeaker 低位设定
SM_TESTS
允许 SDI 测试
SM_STREAM
流模式
SM_EARSPEAKER_HI
EarSpeaker 高位设定
SM_DACT
DCLK 的有效边沿
SM_SDIORD
SDI 位顺序
SM_SDISHARE
SM_SDISHARE
SM_SDINEW
VS1002 本地 SPI 模式
SM_ADPCM
ADPCM 录音激活
SM_ADPCM_HP
ADPCM 高通滤波允许
SM_LINE_IN
ADPCM 音源选择
SM_CLK_RANGE
SM_CLK_RANGE
值
说明
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
正常的相同音频
左通道想相反
不允许
允许
不复位
复位
不取消
取消
关闭
激活
不允许
允许
不是
是
关闭
激活
上升沿
下降沿
MSB 在前
MSB 在后
不共享
共享
非本地模式
本地模式(新模式)
不激活
激活
不允许
允许
麦克风
线路输入
12…13Mhz
24…26Mhz
这个寄存器,我们这里只关注第 2 位和第 11 位,也就是 SM_RESET 和 SM_SDINEW。
这里 SM_RESET,可以提供一次软复位,建议在每播放一首歌曲之后,软复位一次。
SM_SDINEW 为模式设置位,这里我们选择的是新模式,所以设置该位为 1(默认的设置)。
单纯播放音乐的时候,我们只需要设置这两个位就差不多了,其他位的设置,请参考 VS1003
的数据手册
BASS 寄存器,该寄存器可以用于设置 VS1003 的高低音效。该寄存器的各位描述如表所示:
名称
位
描述
ST_AMPLITUDE
15:12
高音控制,1.5dB 步进( -8..7, 0 表示关闭)
ST_AMPLITUDE
SB_AMPLITUDE
SB_FREQLIMIT
11:8
7:4
3:0
最低频限 1000Hz 步进(0..15)
低音加重,1dB 步进(0..15, 0 表示关闭)
最低频限 10Hz 步进(2..15)
通过这个寄存器以上位的一些设置,我们可以随意配置自己喜欢的音效(其实就是高低
音的调节)。
CLOCKF 寄存器,这个寄存器用来设置时钟频率、倍频等相关信息,该寄存器的各位描
述如表所示:
15:13
SC_MULT
时钟倍频数
CLOCKF 寄存器
12:11
SC_ADD
允许倍频
10:0
SC_FREQ
时钟频率
CLKI=XTALI× (SC_MULT×
倍频增量
当外部时钟频率不为
位
名称
描述
说明
0.5+1)
=SC_ADD*0.5
12.288Mhz 时,外部时钟的频
率。外部时钟频率为 12.288Mhz
时,此部分设置为 0
SC_FREQ 是以 4Khz 为步进的一个时钟寄存器,当外部时钟不是 12.288M 的时候,其
计算公式为:
SC_FREQ=(XTALI-8000000)/4000
式中为 XTALI 的单位为 Hz。上表中 CLKI 是内部时钟频率, XTALI 是外部晶振的时钟频率。
由于我们使用的是 12.288M 的晶振,所以 SC_FREQ = 0;
DECODE_TIME 寄存器。该寄存器是一个十六位的寄存器,用于存放解码时间,以秒钟
为单位,我们通过读取该寄存器的值,就可以得到解码时间了。不过它是一个累计时间,所
以我们需要在每首歌播放之前把它清空一下,以得到这首歌的准确解码时间。
VOL 寄存器,该寄存器用于控制 VS1003 的输出音量,该寄存器可以分别控制左右声
道的音量,每个声道的控制范围为 0~254,每个增量代表 0.5db 的衰减,所以该值越小,
代表音量越大。比如设置为 0X0000 则音量最大,而设置为 0XFEFE 则音量最小。注意:如
果设置 VOL 的值为 0XFFFF, 将使芯片进入掉电模式!
其他寄存器,这里就不一一介绍了,请大家参考 VS1003 的数据手册,里面有每个寄存
器的详细介绍。
2.3.3. 播放音频文件
用模块播放音频文件非常的简单,一般的音频文件(MP3/WMA/OGG/WAV/MIDI/AAC 等),
只需要简单的 3 步操作即可实现音频播放。
(1)复位 VS1003
这里包括了硬复位和软复位,是为了让 VS1003 的状态回到原始状态,准备解码下一首
歌曲。这里建议在每首歌曲播放之前都执行一次硬件复位和软件复位,以便更好的播放音乐。
(2)配置 VS1003 相关寄存器
配置的寄存器包括 VS1003 的模式寄存器(MODE)、时钟寄存器(CLOCKF)、音调寄存
器(BASS)、音量寄存器(VOL)等。
(3)发送音频数据
当经过以上两步配置以后,我们剩下来要做的事情,就是往 VS1003 里面扔音频数据了,
只要是 VS1003 支持的音频格式,直接往里面丢就可以了,VS1003 会自动识别,并进行播放。
不过发送数据要在 DREQ 信号的控制下有序的进行,不能乱发。只要 DREQ 变高,就向 VS1003
发送 32 个字节。然后继续等待 DREQ 变高,直到音频数据发送完。
3. 结构尺寸
VS1003B MP3 Board 模块的尺寸图如下:
4. 其他
购买地址:
http://www.waveshare.net/shop/VS1003B-MP3-Board.htm
资料地址:
http://www.waveshare.net/wiki/VS1003B_MP3_Board