OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 关于语言模块VS1053B内部寄存器的参数配置

共3条 1/1 1 跳转至

关于语言模块VS1053B内部寄存器的参数配置

助工
2012-11-30 16:29:22    评分

关于对语言模块VS1053B内部寄存器的配置

 

VS1053B的内部共有1616位的可编程寄存器,这些寄存器的基本参数如下表所示:

1)  对于寄存器0:这里采用系统复位后的默认设置—0x4800,这其中有一个软复位功能位,当其被置位时,可使内部固件进行复位,具体的实现函数如下所示:

void softRest()

{

  unsigned long SRreg=SPI.transfer(50331648);

 SRreg=SRreg | 0x0004;

 SRreg=(0x02<<24) + SRreg;

 SRreg=SPI.transfer(SRreg);

}

2 对于寄存器1:采用默认设置即可,这里还具有设置耳机音量增高的功能,具体的实现函数如下所示:

         Void volumeAmp(char ampdb)

         {

                   unsigned long VAreg= SPI.transfer(50397184);

                   switch (ampdb)

                   {

                     case 0: break;

                     case 1: VAreg=VAreg | 0x1000;

                                     VAreg=(0x02<<24) + (0x01<<16) + VAreg;

                                     VAreg=SPI.transfer(VAreg);

                                     break;

                   case 2: VAreg=VAreg | 0x2000;

                              VAreg=(0x02<<24) + (0x01<<16) + VAreg;

                              VAreg=SPI.transfer(VAreg);

                              break;

                   default: break;

                   }

         }

3 寄存器:2:用于高低音音效的设置,这里关闭即可。

4 寄存器3:改变时钟的频率,当解码器固件在解码WMAAAC时,需要临时提高时钟频率的时候,就能用到该寄存器了,这里暂且不用,就不多介绍了。

5 寄存器4:记录解码时间(单位是S)。

6 寄存器5:采样频率的设置,这一点很重要,直接决定着解码器再解码数据时所采用的采样率和通道数,具体的设置是这样的:

         SCI_AUDATA15:1位决定着解码的采样率,0位决定着解码采用的通道数;

         首先,判断SCI_AUDATA.0是否为0,若为0则解码输出为单声道,且采样率=SCI_AUDATA;

         若为1则解码输出为双声道,且采样率=SCI_AUDATA-1

         默认的情况下,SCI_AUDATA的值=1 1111 0100 00000x1F40=8000(Hz)。及默认的采     频率为8K Hz的经典语言采样速率。该部分的函数为设置采样率和通道数的函数,具体

         采样率的设定在参照各种音频文件对采样速率的要求后再作设定。

7 寄存器67:这是一对对VS1053B内置的RAM进行读写的寄存器,寄存器6SCI_WRAM负责16位数据或32位指令的存储,寄存器7SCI_WRAMADDR负责引导对SCI_WRAM进行读写的基地址,并且其具有自动增加的功能。具体的RAM的使用如下表所示:

         这里提供给用户使用的区域在上面列表中的XY和指令存储器,其它区域可以访问,但是不应该对它们写入,除非采用其它特殊的方法。

8)寄存器8和寄存器9:这也是一对寄存器,其中,SCI_HDAT0用来标识声音文件的类型,如下表所示:

声音文件的类型

SCI_HDAT0

SCI_HDAT1

WAV

0x7665(“ve”)

RIFF WAVE格式的数据速率(字节/秒);

单声道或双声道8位或16PCM

单声道或双声道IMA ADPCM

AAC ADTS

0x4154(“AT”)

平均数据速率(字节/秒)

AAC ADIF

0x4144(“AD”)

AAC .mp4/.m4a

0x4D34(“M4”)

WMA

0x574D(“WM”)

测量的数据速率(字节/秒)

MIDI

0x4D54(“MT”)

平均数据速率(字节/秒)

Ogg Vorbis

0x4F67(“Og”)

平均数据速率(字节/秒)

MP3

0XFFE00xFFFF之间

平均数据速率(字节/秒)

对于MP3文件,SCI_HDAT1会在0Xffe00xFFFF之间,SCI_HDAT1/0包含了下列信息:

         “采样率”区域在SCI_HDAT0里的解释如下表所示:

         “比特率”区域在SCI_HDAT0里面的解释如下:(不过对于可变比特率流,其值是在不断变化的)

         注意:比特率的计算在歌曲之间是不会自动复位的,但它除了软件和硬件复位外,还可以通过对SCI_DECODE_TIME的写操作来复位,因此,要想修改此寄存器的值就应该写两次,否则会被认为是进行重置ByteRate的操作。

9 寄存器10SCI_AIADDR寄存器,其表示应用程序代码的起始地址,它应该和早先的SCI_WRAMADDRSCI_WRAM寄存器一起写入,如果不使用应用程序代码,则此寄存器就不应该初始化,或者应该初始化为0,详情参考:“VS10XX应用注意事项”(Application Notes for VS10XX)。

10 寄存器11SCI_VOL寄存器,其用于播放器的硬件音量的控制,高字节是控制左通道音量的,低字节是控制右通道音量的,最大的音量是0,无声是0xFEFE,为0xFFFF时将使模拟单元进入掉电模式,具体的函数如下所示:

         VOLChange(unsigned char volleft, unsigned char volright)

         {

           unsigned long VOLreg=(0x02<<24) + (0x0b<<16) + (volleft<<8) + volright;

           VOLreg=SPI.transfer(VOLreg);

         }

11 寄存器12SCI_AICTRL[x]寄存器(x=[0..3]),这些寄存器组可以用来访问用户的应用程序,同时,它们也可以被IMA ADPCM录音模式所使用。

至此,VS1053B mp3模块的内部寄存器功能介绍完毕。。。
有关系统架构更详细的介绍详见:
 andery88的【Sakura进程】帖--基于SAKURA开发板的语音播放平台的设计
http://forum.eepw.com.cn/thread/222742/1
继续学习中。。。同时希望EEPW友们提出宝贵意见和建议。。。

 




关键词: 关于     语言     模块     VS1053B     内部     寄存器         

高工
2012-11-30 17:40:15    评分
2楼
很好·······

高工
2012-11-30 20:57:48    评分
3楼

支持一个。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]