新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机实现MP3播放的方法

单片机实现MP3播放的方法

作者: 时间:2016-12-02 来源:网络 收藏

6)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的增强。

4.SCI_CLOCKF(地址:0X3 可读写)

bit15~bit13:SC_MULT

时钟输入XTALI的倍频设置,设置之后将启动VS1003内置的倍频器。

bit12~bit11:SC_ADD

用于在WMA流解码时给倍频器增加的额外的倍频值。

bit10~bit0:SC_FREQ

当XTALI输入的时钟不是12.288M时才需要设置该位段,其默认值为0,即VS1003默认使用的是12.228M的输入时钟。

5.SCI_DECODE_TIME(地址:0X4 可读写)

解码时间寄存器。当进行正确的解码时,读取该寄存器可以获得当前的解码时长(单位为秒)。可以更改该寄存器的值,但是新值须要对该寄存器进行两次写操作。在每次软件复位或是WAV(PCM、IMA ADPCM、WMA、MIDI)解码开始与结束时SCI_DECODE_TIME的值将清零。

6.SCI_AUDATA(地址:0X5 可读写)

当进行正确的解码时,该寄存器的值为当前的采样率(bit:15~bit1)和所使用的声道(bit0)。采样率须为2的倍数;bit0=0,单声道数据,bit0=1,立体声数据。写该寄存器半直接改变采样率。

7.SCI_WRAM(地址:0X6 可读写)

读寄存器用来加载用户应用程序和数据到VS1003的指令的数据RAM中。起始地址在SCI_WRAMADDR中进行设置,且必须先于读写 SCI_WRAM。对于16位的数据可以在进行一次SCI_WRAM的读写中完成;而对32位的指令字来说则需要两次连续读写。字节顺序是大端模式,即高字节在前,低字节在后。在每一次完成全字读写后,内部指针将自动增加。

8. SCI_WRAMADDR(地址:0X7 可读写)

用于设置RAM读写的首地址。

9.SPI_HDAT0gng SPI_HDAT1(地址:0X8 只读)

这两个寄存器用来存放所解码的音频文件的相关信息,为只读寄存器。

当为WAV文件时,SPI_HDAT0=0X7761,SPI_HDAT1=0X7665;

当为WMA文件时,SPI_HDAT0的值为解码速率(字节/秒),要转换为位率的话则将SPI_HDAT0的值乘8即可,SPI_HDAT1=0X574D;

当为MIDI文件时,SPI_HDAT0的值可以参考VLSI的技术文档第33页,SPI_HDAT1=0X4D54;

当为MP3文件时,SPI_HDAT0和SPI_HDAT1包含较为复杂的信息(来自于解压之后的MP3文件头),包括当前正在 解码的MP3文件的采样率、位率等,具体请参考数据手册的第33页到第34页。复位后SPI_HDAT0和SPI_HDAT1将清零。

10.SCI_AIADDR(地址:0XA 可读写)

用户应用程序的起始地址,初始化先于SCI_WRAMADDR和SCI_WRAM。如果没有使用任何用户应用程序,则该寄存器不应进行初始化,或是将其初始化为零。

11.SCI_VOL(地址:0XB 可读写)

音量控制寄存器。高八位用于设置左声道,低八位用于设置右声道。设置值为最大竟是的衰减倍数,步进值为0.5dB,范围为0到255.最大竟是的设置值为 0x0000,而静音为0xffff。例如,左声道:-2.0dB,右声道:-3.5dB,则SCI_VOL=(4X256)+7=0x0407。硬件复位将使SCI_VOL清零(最大音量),而软件复位将不改变音量设置值。

(设置静音(SCI_COL=0XFFFF)将关闭模拟部分的供电。)

12.SCI_AICTRL[X](地址:0XC~0XF 可读写)

用于访问用户应用程序。

7)VS1003有应用电路

2、VS1003的驱动方法

这里就来介绍单片片对VS1003的控制方法,最终实现MP3播放。

1)准备工作

在对VS1003进行驱动之前,我们需要确保以下几点已经没问题,否则后面的工作都将是没有意义的。

1.VS1003各部分的供电电压与输出电压值是不同的。

供电部分

最小电压

推荐电压

最大电压

AVDD(模拟部分)

2.5V

2.8V

3.6V

CVDD(数字部分,内核)

2.4V

2.5V

2.7V

IOVDD(I/O电压)

CVDD-0.6V

2.8V

3.6V

2.VS1003与单片机正确可靠连接。

VS1003与单片机连接的引脚主要有7个,分别为 SO、SI、SCLK、/XCS、/XRESET、DREQ、/XDCS。只有保证它们与单片机正确可靠的连接,才能对VS1003进行有效的操作与控制。

2)写命令操作

要控制VS1003首先要实现的就是写命令,这是控制是否成功的前提。关于通信接口部分,是一种同步串行接口方式(SPI从机模式),它要求SCLK信号必须由外部电路产生,数据(SDATA)在SCLK的上升沿或下降沿时被写入。在笔者的实验中,采用的是软件模拟SPI,读者也可以选用带有硬件SPI的单片机(如STC12系列、AVR系列等),驱动效果会更好。写命令的过程如下:

1.等待DREQ为高(当DREQ为低时,说明芯片还没有就绪)

2.将XCS(命令片选)拉低

3.写入0x02

4.写入寄存器地址

5.分别写入数据的高字节与低字节

6.将XCS置高

实现代码如下:

void wr_commad(unsigned char addr,unsigned char hdat,unsigned char ldat )

{

DREQ=1;

while(!DREQ);

XCS=0;

spi_write(0x02);

spi_write(addr);

spi_write(hdat);

spi_write(ldat);

XCS=1;

}



关键词:单片机MP3播

评论


技术专区

关闭