单片机实现MP3播放的方法.docx

上传人:b****2 文档编号:1565917 上传时间:2022-10-23 格式:DOCX 页数:14 大小:279.74KB
下载 相关 举报
单片机实现MP3播放的方法.docx_第1页
第1页 / 共14页
单片机实现MP3播放的方法.docx_第2页
第2页 / 共14页
单片机实现MP3播放的方法.docx_第3页
第3页 / 共14页
单片机实现MP3播放的方法.docx_第4页
第4页 / 共14页
单片机实现MP3播放的方法.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机实现MP3播放的方法.docx

《单片机实现MP3播放的方法.docx》由会员分享,可在线阅读,更多相关《单片机实现MP3播放的方法.docx(14页珍藏版)》请在冰豆网上搜索。

单片机实现MP3播放的方法.docx

单片机实现MP3播放的方法

单片机实现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)芯片实物与SiriuS板上的VS1003

3)芯片封装

以下的讲述都是针对于LQFP-48封装的。

4)VS1003特性

1.能解码MPEG1与MPEG2音频层III(CBR+VBR+ABR);WMA4.0/4.1/7/8/95~384kbps所有流文件;WAV(PCM+IMAAD-PCM);产生MIDI/SP-MIDI文件。

2.对话筒输入或线路输入的音频信号进行IMAADPCMM编码

3.支持MP3和WAVV流

4.高低音控制

5.单时钟12~13MHz

6.内部PLLL锁相环时钟倍频器

7.低功耗

8.内含高性能片上立体声数模转换器,两声道间无相位差

9.内含能驱动30欧负载的耳机驱动器

10.模拟,数字,I/O单独供电

11.为用户代码和数据准备的5.5KB片上RAM

12.串行的控制/数据接口

13.可被用作微处理器的从机

14.特殊应用的SPIFlash引导

15.借高度用途的UART接口

16.新功能可以通过软件和4GPIO添加

5)VS1003的引脚定义

管脚名称

LQFP-48

管脚类型

管脚功能

MICP

1

AI

同相差分话筒输入,自偏压

MICN

2

AI

反相差分话筒输入,自偏压

XRESET

3

DI

低电平有效,异步复位端

DGND0

4

DGND

处理器核与I/O地

CVDD0

5

CPWR

处理器核电源

IOVDD0

6

IOPWR

I/O电源

CVDD1

7

CPEW

处理器核电源

DREQ

8

DO

数据请求,输入总线

GPIO/DCLK

9

DIO

通用I/O2/串行数据总线时钟

GPIO3/SDATA

10

DIO

通用I/O3/串行数据总线数据

XDCS/BSYNC

13

DI

数据片选端/字节同步

IOVDD1

14

IOPWR

I/O电源

VCO

15

DO

时钟压控振荡器VCO输出

DGND1

16

DGND

处理器核与I/O的地

XTALO

17

AO

晶振输出

XTALI

18

AI

晶振输入

IOVDD2

19

IOPWR

I/O电源

DGND2

20

DGND

处理器核与I/O地

DGND3

21

DGND

处理器核与I/O地

DGND4

22

DGND

处理器核与I/O地

XCS

23

DI

片选输入,低电平有效

CVDD2

24

CPWR

处理器核电源

RX

26

DI

UART接收口,不用时接IOVDD

TX

27

DO

UART发送口

SCLK

28

DI

串行总线的时钟

SI

29

DI

串行输入

SO

30

DO3

串行输出

CVDD3

31

CPWR

处理器核电源

TEST

32

DI

保留做测试,连接至IOVDD

GPIO0/SPIBOOT

33

DIO

通用I/O0/SPIBOOT,使用100K下拉电阻

GPIO1

34

DIO

通用I/O1

AGND0

37

APWR

模拟地,低噪声参考地

AVDD0

38

APWR

模拟电源

RIGHT

39

AO

右声道输出

AGND1

40

APWR

模拟地

AGND2

41

APWR

模拟地

GBUF

42

AO

公共地缓冲器

AVDD1

43

APWR

模拟电源

RCAP

44

AIO

基准滤波电容

AVDD2

45

APWR

模拟电源

LEFT

46

AO

左声道输出

AGND3

47

APWR

模拟地

LINEIN

48

AI

线路输入

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的IMAADPCM录音功能。

bit13:

SM_ADPCM_HP

SM_ADPCOM_HP=1,使能ADPCM高通滤波器。

同时置位SM_ADPCM_HP、SM_ADPCM和SM_RESET将开启ADPCM录音用高通滤波器,对录音时的背景噪音有一定的抑制作用。

bit14:

SM_LINE_IN

录音输入选择,SMLINE_IN=1,选择线入(linein);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、IMAADPCM、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_HDAT0gngSPI_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包含较为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1