VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
1/80VS1053b-OggVorbis/MP3/AAC/WMA/MIDI音频编解码器特性OggVorbis解码;MPEG1&2音频阶层III(CBR+VBR+ABR);阶层I和II可选;MPEG4/2AAC‐LC(+PNS),HE‐AACV2(级别3)(SBR+PS);WMA4.
0/4.
1/7/8/9所有特性注1(profiles)(5‐384kbps);WAV(PCM+IMAADPCM);通用MIDI1/SP‐MIDI格式0的文件用软件插件进行OggVorbis编码(2007第四季可用)"咪/线路"的输入信号可实现IMAADPCM编码(立体声)支持MP3和WAV的数据流EarSpeaker空间效果注2处理低音和高音控制只用一个单独的12.
.
13MHz时钟运作也可以使用一个24.
.
26MHz时钟运作内建PLL时钟乘法器低功耗运作芯片内建高质量和通道间无相位误差的立体声DAC过零交叉注3(Zero‐cross)侦测和平滑的音量调整立体声耳机驱动器可以驱动一个30的负载安静的电源通断功能可扩展外部DAC的I2S接口分离的模拟、数字、IO供电电源供用户代码和数据使用的片内RAM用于控制和数据的串行接口可以作为从模式的辅助处理器使用特殊应用可使用SPIFLASH存储器引导可用于调试的UART接口可用软件增加新功能和提供最多8个GPIO符合RoHS无铅标准的封装(绿色)注1:原文中是profiles,含有轮廓、概要、资料档案等综合性信息的意思,这里将它译为"特性"意思更加贴切一些.
注2:EarSpeakerSpatial在这里指用耳机虚拟出真实现场空间的声音效果.
注3:Zero‐cross指音频信号电平穿越零电位时的交叉点.
例如:8bit的采样数据使用128作为零位值,它代表音频信号0电平,正电平的音频采样值数据大于128,负电平的音频采样值数据小于128,越靠近零位值的采样值表示音频波形振幅越小,反之越大.
如果一连串的采样值从大于128变成小于128,或反过来,就是音频信号电平穿越了零电位.
说明VS1053b是单片OggVorbis/MP3/AAC/WMA/MIDI音频解码器,及IMAADPCM编码器和用户加载的OggVorbis编码器.
它包含了一个高性能、有专利的低功耗DSP处理器内核VS_DSP4、工作数据存储器、供用户应用程序和任何固化解码器一起运行的16KiB指令RAM及0.
5KiB多的数据RAM、串行的控制和输入数据接口、最多8个可用的通用I/O引脚、一个UART、并有一个优质的可变采样率立体声ADC("咪"、"线路"、"线路+咪"或"线路*2")和立体声DAC、和跟随的一个耳机功放及一个公共电压缓冲器.
作为一个系统的从属设备,VS1053b总是通过一个串行输入总线来接收它的输入比特流.
该输入流被解码后始终会通过数字音量控制器送至一个18比特超采样率的注4(oversampling)、多比特的、sigma‐delta型高精度DAC.
此解码器是通过一个串行控制总线来控制的.
除了基本的解码功能之外,它还可以增加特殊功能,象DSP功能之类等到用户的RAM存储器中.
可选的工厂编程单一芯片ID,提供了数字版权管理的基础或单元识别特性.
注4:超采样率oversampling一般是指超过标称采样率整倍数的更高采样率,常用来提高采样精度.
这里是指还原数码声音时,用标称采样率数倍的采样率输出,可以使音频的阶梯陡变趋于平缓,降低数字背景噪音和减小失真,从而获得超过原采样率输出效果的高质量音频.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
2/80目录1许可92声明93定义94特性和说明104.
1最大极限值104.
2推荐工作值104.
3模拟电路特性114.
4功率消耗124.
5数字电路特性.
124.
6开关特性–启动初始化125封装和引脚说明135.
1封装135.
1.
1LQFP‐48136接线图,LQFP‐48167SPI总线187.
1通用187.
2SPI总线引脚说明187.
2.
1VS1002本地模式(新模式)187.
2.
2VS1001兼容模式(不推荐)187.
3数据请求引脚DREQ19VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
3/807.
4串行数据接口的串行协议(SDI)197.
4.
1通用197.
4.
2VS1002本地模式下的SDI(新模式)197.
4.
3VS1001兼容模式下的SDI(不推荐)207.
4.
4被动SDI模式207.
5串行命令接口的串行协议(SCI)207.
5.
1通用.
207.
5.
2SCI读操作217.
5.
3SCI写操作217.
5.
4SCI多重写操作227.
6SPI时序图237.
7SPI使用SM_SDINEW和SM_SDISHARED配置的例子.
247.
7.
1两个SCI写操作247.
7.
2两个SDI字节247.
7.
3在两个SDI字节之间的SCI操作258功能说明268.
1主要特征268.
2支持的音频编解码格式268.
2.
1支持的MP3格式(MPEGlayerIII)268.
2.
2支持的MP1格式(MPEGlayerI)278.
2.
3支持的MP2格式(MPEGlayerII)278.
2.
4支持的OggVorbis格式278.
2.
5支持的AAC格式(ISO/IEC13818‐7和ISO/IEC14496‐3).
288.
2.
6支持的WMA格式30VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
4/808.
2.
7支持的RIFFWAV格式318.
2.
8支持的MIDI格式328.
3VS1053b的数据流动原理348.
4EarSpeaker的空间效果处理358.
5串行数据接口(SDI)368.
6串行控制接口(SCI)368.
7SCI寄存器378.
7.
1SCI_MODE(RW)388.
7.
2SCI_STATUS(RW)408.
7.
3SCI_BASS(RW)418.
7.
4SCI_CLOCKF(RW)428.
7.
5SCI_DECODE_TIME(RW)438.
7.
6SCI_AUDATA(RW)438.
7.
7SCI_WRAM(RW)438.
7.
8SCI_WRAMADDR(W)438.
7.
9SCI_HDAT0和SCI_HDAT1(R)458.
7.
10SCI_AIADDR(RW)468.
7.
11SCI_VOL(RW)478.
7.
12SCI_AICTRL[x](RW)479操作489.
1时钟489.
2硬件复位489.
3软件复位489.
4低功耗模式49VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
5/809.
5播放和解码499.
5.
1播放一个完整文件499.
5.
2取消播放509.
5.
3快速播放509.
5.
4无声的快进和快倒509.
5.
5保持正常的解码时间519.
6供应PCM数据529.
7OggVorbis录音529.
8ADPCM录音539.
8.
1激活ADPCM模式539.
8.
2读取IMAADPCM数据549.
8.
3加上一个RIFF标头559.
8.
4播放ADPCM数据569.
8.
5采样率的考虑569.
9SPI引导579.
10实时MIDI579.
11附加的参数589.
11.
1通用参数599.
11.
2WMA609.
11.
3AAC619.
11.
4Midi629.
11.
5OggVorbis629.
12SDI测试639.
12.
1正弦测试63VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
6/809.
12.
2引脚测试639.
12.
3SCI测试649.
12.
4存储器测试649.
12.
5新的正弦和扫描测试6410VS1053b寄存器6610.
1谁需要阅读这些章节6610.
2处理器内核6610.
3VS1053b存储器映射6610.
4SCI寄存器6610.
5串行数据寄存器6710.
6DAC寄存器6710.
7GPIO寄存器6710.
8中断寄存器6810.
9看门狗v1.
02002‐08‐266910.
9.
1寄存器6910.
10UARTv1.
12004‐10‐097010.
10.
1寄存器7010.
10.
2状态UARTx_STATUS7010.
10.
3数据UARTx_DATA7110.
10.
4数据高8位UARTx_DATAH7110.
10.
5分频UARTx_DIV7110.
10.
6中断和操作7210.
11定时器v1.
02002‐04‐237310.
11.
1寄存器73VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
7/8010.
11.
2配置TIMER_CONFIG7310.
11.
3配置TIMER_ENABLE7410.
11.
4定时器X起始值TIMER_Tx[L/H]7410.
11.
5定时器X计数器TIMER_TxCNT[L/H]7410.
11.
6中断7410.
12VS1053b音频通道7510.
13I2SDAC接口.
7610.
13.
1寄存器7610.
13.
2配置I2S_CONFIG7611VS1053版本修订历史7711.
1在VS1033c和VS1053a/b之间修改的固件,2007‐03‐087712文档版本修订历史7913联系信息80VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
8/80插图列表1引脚分配图,LQFP‐48132VS1053b的LQFP‐48封装图133基于LQFP‐48的典型接线图164BSYNC信号–单字节传送205BSYNC信号–双字节传送206SCI字读取操作217SCI字写入操作218SCI多字写操作229SPI时序图2310两个SCI的操作2411两个SDI字节2412两个SDI字节被一个SCI操作分离的图例2513VS1053b的数据流动图3414EarSpeaker效果扩展的音源和普通头挂式耳机的音效对比图3515RS232串行接口协议7016VS1053b的ADC和DAC数据通道7517I2S接口图解,192kHz76VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
9/801许可MPEGLayer‐3audiodecodingtechnologylicensedfromFraunhoferIISandThomson.
Note:IfyouenableLayerIandLayerIIdecoding,youareliableforanypatentissuesthatmayarisefromusingtheseformats.
JointlicensingofMPEG1.
0/2.
0LayerIIIdoesnotcoverallpatentspertainingtolayersIandII.
VS1053bcontainsWMAdecodingtechnologyfromMicrosoft.
ThisproductisprotectedbycertainintellectualpropertyrightsofMicrosoftandcannotbeusedorfurtherdistributedwithoutalicensefromMicrosoft.
VS1053bcontainsAACtechnology(ISO/IEC13818‐7andISO/IEC14496‐3)whichcannotbeusedwithoutaproperlicensefromViaLicensingCorporationorindividualpatentholders.
VS1053bcontainsspectralbandreplication(SBR)andparametricstereo(PS)technologiesdevelopedbyCodingTechnologies.
LicensingofSBRishandledwithinMPEG4throughViaLicensingCorporation.
LicensingofPSishandledwithCodingTechnologies.
Seehttp://www.
codingtechnologies.
com/licensing/aacplus.
htmformoreinformation.
Tothebestofourknowledge,iftheendproductdoesnotplayaspecificformatthatotherwisewouldrequireacustomerlicense:MPEG1.
0/2.
0layersIandII,WMA,orAAC,therespectivelicenseshouldnotberequired.
DecodingofMPEGlayersIandIIaredisabledbydefault,andWMAandAACformatexclusioncanbeeasilyperformedbasedonthecontentsoftheSCI_HDAT1register.
AlsoPSandSBRdecodingcanbeseparatelydisabled.
2声明Thisisapreliminarydatasheet.
Allpropertiesandfiguresaresubjecttochange.
3定义B字节,8位宽度;b一个比特(一位宽度);Ki"Kibi"=210=1024(IEC60027‐2);Mi"Mebi"=220=1048576(IEC60027‐2);VS_DSPVLSISolution公司的DSP内核;WVS_DSP中的字,指令字是32位宽,数据字是16位宽.
咪mic指麦克风,又称"话筒"、"受话器"等,本文直接译作南方习惯用语:"咪".
线路line在本文中是指用来输送经过放大的模拟信号的导线,译作"线路"或"线路输入".
比特bit指二进制中的一位数字.
本文根据情况会译作"位"、"位元"、"位域"或"比特".
流stream,是指在总线上不停传送的那些数据,因像流水般一直在流动,故称作"流".
ADC/DAC即"模数转换器"/"数模转换器",为了保持译文简洁,本译文将直接使用这两个简写.
标头Header是音频文件放在文件开头的综合性信息快,含有:标题、子标题、类型、数据块大小等和音频相关的综合性信息.
有些复杂的音频文件类型内容中含有多个标头.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
10/804特性和说明4.
1最大极限值参数符号最小最大单位模拟电源供电电压AVDD-0.
33.
6V数字电源供电电压CVDD-0.
31.
85VI/O电源供电电压IOVDD-0.
33.
6V任意非电源引脚上的电流1±50mA任意数字输入引脚上的电压-0.
3IOVDD+0.
32V工作温度-30+85℃储存温度-65+150℃注1大电流可能会造成闩锁效应.
注2绝对不能超过3.
6V.
4.
2推荐工作值参数符号最小典型最大单位工作环境温度-30+85℃模拟和数字地1AGNDDGND0.
0V模拟电源供电电压,REF=1.
23VAVDD2.
52.
83.
6V模拟电源供电电压,REF=1.
65V2AVDD3.
33.
33.
6V数字电源供电电压CVDD1.
71.
81.
85VI/O电源供电电压IOVDD1.
82.
83.
6V输入时钟频率3XTALI1212.
28813MHz内部时钟频率CLKI1236.
86455.
3MHz内部时钟倍数41.
0*3.
0*4.
5*主时钟周期占空比405060%注1在这个设备上必须紧密连接到一起,以避免出现闩锁效应.
注2参考电压可在内部选择1.
23V或1.
65V,请参考章节8.
7.
2.
注3可以用正确速度播放的最大采样率是XTALI/256(或XTALI/512,如果SM_CLK_RANGE被设置的话).
因此,XTALI必须是至少12.
288MHz(24.
576MHz)才能以正确的速度来演奏48KHz.
注4复位时的初始值是1.
0*.
推荐设置为SC_MULT=3.
5*,SC_ADD=1.
0*(SCI_CLOCKF=0x8800).
但不能超出CLKI所允许的最大值.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
11/804.
3模拟电路特性如不另外说明,则:AVDD=3.
3V,CVDD=1.
8V,IOVDD=2.
8V,REF=1.
65V,TA=‐30.
.
.
+85℃,XTALI=12.
.
13MHz,内部时钟倍数是3.
5*.
DAC的测试将以1307.
894Hz满幅1(FullScale)来输出正弦波,测试的频率范围为20.
.
.
20000Hz,模拟输出负载为:左通道至GBUF为30,右通道至GBUF为30.
咪的测试信号幅度48mVpp,fs=1kHz,线路输入测试信号幅度1.
26V,fs=1kHz.
参数符号最小典型最大单位DAC分辨率18bits总谐波失真THD0.
07%三次谐波失真0.
02%动态范围(DAC非静音,A-加权)IDR100dB信噪比(信号满幅)SNR94dB通道隔离度(串扰),600Ω+GBUF80dB通道隔离度(串扰),30Ω+GBUF53dB通道增益失调-0.
50.
5dB频率响应-0.
10.
1dB满幅输出电压(峰峰值)1.
641.
8522.
06Vpp线性相位偏差5模拟输出负载电阻AOLR16303Ω模拟输出负载电容100pF咪输入放大器增益MICG26dB咪输入信号幅度481404mVppAC咪总谐波失真MTHD0.
030.
07%咪信噪比MSNR6070dB咪输入阻抗(每只引脚)45kΩ线路输入信号幅度250028004mVppAC线路输入总谐波失真LTHD0.
0050.
014%线路输入信噪比LSNR8590dB线路输入阻抗80kΩ注1FullScale又称"满刻度"、"全刻度"、"满标度"等.
注2可用单声道差分信号回路+‐到‐+的方式来达到完全的3.
0V输出幅度.
注3模拟输出负载电阻也许会小于此值,但会导致失真而使其性能下降.
注4超过典型幅度值会导致谐波失真增加.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
12/804.
4功率消耗用MPEG1.
0阶层3的128Kbps采样和产生的正弦来测试,输出音量最大.
内部时钟乘数为3.
环境温度为:TA=+25℃.
参数最小典型最大单位电力消耗AVDD,复位0.
65.
0A电力消耗CVDD=1.
8V,复位1220.
0A电力消耗AVDD,正弦波测试,30Ω+GBUF3036.
960mA电力消耗CVDD=1.
8V,正弦测试81015mA电力消耗AVDD,无负载5mA电力消耗AVDD,输出负载30Ω11mA电力消耗AVDD,30Ω+GBUF11mA电力消耗CVDD=1.
8V11mA4.
5数字电路特性参数最小最大单位高电平输入电压0.
7*CVDDIOVDD+0.
31V低电平输入电压-0.
20.
3*CVDDV高电平输出电压在XTALO=-0.
1mA时0.
7*IOVDDV低电平输出电压在XTALO=0.
1mA时0.
3*IOVDDV高电平输出电压在IO=-1.
0mA时0.
7*IOVDDV低电平输出电压在IO=1.
0mA时0.
3*IOVDDV输入漏电流-1.
01.
0ASPI输入频率2CLKI/7MHz所有输出引脚的上升时间,负载电容=50pF50ns注1绝对不能超过3.
6V注2此值为SCI读取操作时的值.
在SCI和SDI写入操作时则允许为CLKI/4.
4.
6开关特性–启动初始化参数符号最小最大单位XRESET信号激活时间2XTALIXRESET信号取消后到软件准备好22000500001XTALI复位时,电源上升至CVDD的时间10V/s注1在VS1053b完成初始化和DREQ信号上升为高电平之前,你不应该发送任何数据或命令给它.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
13/805封装和引脚说明5.
1封装LPQFP‐48是一个无铅和符合RoHS标准的封装.
RoHS是官方指令2002/95/EC的简称,它限制在电子产品和电子设备中使用被确认的有害物质.
5.
1.
1LQFP‐48图1:引脚分配图,LQFP‐48LQFP‐48封装尺寸可在http://www.
vlsi.
fi/查询和下载.
图2:VS1053b的LQFP‐48封装图VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
14/80注1引脚的首要功能是在新模式下激活,次要功能则是在兼容模式下激活.
注2除非下拉电阻被使用,否则将会尝试用SPI引导.
请参阅章节9.
9的描述.
注3如果I2S_CF_ENA被设置为"0",则引脚会被作为GPIO使用.
请参阅章节10.
13中的描述.
端子名称LQFP引脚引脚类型功能描述MICP/LINE11AI咪的差分输入正极,自偏压/线路输入1MICN2AI咪的差分输入负极,自偏压XRESET3DI异步复位,低有效,施密特触发输入DGND04DGND内核和IO接口的地线CVDD05CPWR内核的正电源IOVDD06IOPWRI/O的正电源CVDD17CPWR内核的正电源DREQ8DO数据请求,输入总线GPIO2/DCLK19DIO通用IO2/串行输入数据总线时钟GPIO3/SDATA110DIO通用IO3/串行数据输入GPIO6/I2S_SCLK311DIO通用IO6/I2S总线的SCLKGPIO7/I2S_SDATA312DIO通用IO7/I2S总线的SDATAXDCS/BSYNC113DI数据片选/字节同步IOVDD114IOPWRI/O的正电源VCO15DO只用于测试(时钟VCO输出)DGND116DGND内核和IO接口的地线XTALO17AO晶振输出XTALI18AI晶振输入IOVDD219IOPWRI/O的正电源DGND220DGND内核和IO接口的地线DGND321DGND内核和IO接口的地线DGND422DGND内核和IO接口的地线XCS23DI片选输入(低有效)CVDD224CPWR内核的正电源GPIO5/I2S_MCLK325DIO通用IO5/I2S总线的MCLKRX26DIUART接收,如果不使用请连接到IOVDDTX27DOUART发送SCLK28DI串行总线的时钟SI29DI串行输入SO30DO3串行输出CVDD331CPWR内核的正电源XTEST32DI为测试保留,连接到IOVDDGPIO033DIO通用IO0(SPIBOOT),使用100kΩ下拉电阻2GPIO134DIO通用IO1GND35DGNDI/O地线GPIO4/I2S_LROUT336DIO通用IO4/I2S总线的LROUTAGND037APWR模拟地,低噪声参考AVDD038APWR模拟正电源RIGHT39AO右通道输出AGND140APWR模拟地线AGND241APWR模拟地线GBUF42AO耳机的公共缓冲器,不可连接到地线!
AVDD143APWR模拟正电源RCAP44AIO参考电压的滤波电容AVDD245APWR模拟正电源LEFT46AO左通道输出AGND347APWR模拟地线LINE248AI线路输入2(右通道)VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
15/80引脚类型类型说明DI数字输入,CMOS输入端子DO数字输出,CMOS输出端子1DIO数字输入/输出DO3数字输出,CMOS三态输出端子AI模拟输入AO模拟输出AIO模拟输入/输出APWR模拟正电源引脚DGND内核或I/O地线引脚2CPWR内核正电源引脚IOPWRI/O正电源引脚注1原文中误写为"输入端子".
注2前面的表格中描述为"内核和I/O地线引脚",此处又描述为"内核或I/O地线引脚",意味着它们在使用上并不需要严格区分.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
16/806接线图,LQFP‐48图3:基于LQFP‐48的典型接线图图3显示了一个VS1053的典型接线图.
图注1:可以连接咪输入或线路输入,但不能两者同时连接.
注意:这份连接假设SM_SDINEW是激活的(参看章节8.
7.
1).
如果SM_SDISHARE也被使用,则xDCS应该被连接到低电平或高电平上(参看章节7.
2.
1).
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
17/80公共缓冲器GBUF可以用作耳机输出通道的公共电压(1.
23V).
这样便可取消输出线路上必须使用的大容量电容元件.
因此,VS1053b的音频输出端子可以与耳机的连线直接相连.
GBUF在任何情况下都不允许连接到地线上.
如果不使用GBUF,则左通道和右通道必须要使用耦合电容器.
要保持GBUF的稳定,即使不用GBUF,你也应该总是使用这些电阻和电容.
请参看应用指南中的详细注意事项.
没有使用的GPIO引脚应该接一个下拉电阻.
不使用的线路输入和咪输入则不用连接.
如果不使用UART,RX应该连接到IOVDD上,TX悬空.
请不要在XTALO上连接外部负载.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
18/807SPI总线7.
1通用SPI总线‐起初是用在某些摩托罗拉的设备上,在这里被用于VS1053b的串行数据接口SDI(章节7.
4和8.
5)和串行控制接口SCI(章节7.
5和8.
6).
7.
2SPI总线引脚说明7.
2.
1VS1002本地模式(新模式)这个模式是在VS1053b的SM_SDINEW被设置为1时激活的(启动时的缺省值).
DCLK和SDATA的功能被重新分别配置为GPIO2,GPIO3,不再用于数据传输.
BSYNC功能被修改为数据接口的片选XDCS.
SDI引脚SCI引脚说明XDCSXCS低有效的片选信号.
高电平将强制串行接口结束当前操作,并进入备用模式,它将强行使串行输出进入高阻状态.
如果SM_SDISHARE是1,则XDCS引脚是不使用的,但这个信号是通过将XCS反向来获得的.
SCK串行时钟输入.
此时钟也是用作内部寄存器接口的主时钟.
SCK电平在平时可以是脉冲状或平静的.
不管在哪种情况之下,只要在XCS信号变低之后,首个时钟上升沿将被定义为首个位.
SI串行输入.
如果片选有效,SI是在时钟SCK的上升沿上取样的.
-SO串行输出.
在读取时,数据是逐位移动输出在时钟SCK的下降沿上.
而在写入时,它是处于高阻态的.
7.
2.
2VS1001兼容模式(不推荐)本模式在SM_SDINEW被设置为0时激活.
在此模式下,DCLK,SDATA和BSYNC功能被使用.
SDI引脚SCI引脚说明-XCS低有效的片选信号.
高电平将强制串行接口结束当前操作,并进入备用模式,它将强行使串行输出进入高阻状态.
BSYNC-SDI数据是用BSYNC的上升沿来同步的.
DCLKSCK串行时钟输入.
此时钟也是用作内部寄存器接口的主时钟.
SCK电平在平时可以是脉冲状或平静的.
不管在哪种情况之下,只要在XCS信号变低之后,首个时钟上升沿将被定义为首个位.
SDATASI串行输入.
如果片选有效,SI是在时钟SCK的上升沿上取样的.
-SO串行输出.
在读取时,数据是逐位移动输出在时钟SCK的下降沿上.
而在写入时,它是处于高阻态的.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
19/807.
3数据请求引脚DREQ这个DREQ信号引脚是用来反馈VS1053b的2048字节FIFO是否可以接收数据.
如果它为高电平,则VS1053b可以接收最少32字节的SDI数据或者接收一条SCI命令.
当流缓冲区太满和SCI命令正在执行的期间,DREQ会转换到低电平,此时应该停止向VS1003发送数据和新命令.
由于32字节是一个安全的范围,发送方可以一次发送完32字节的SDI数据之后再去检查DREQ的状态,这样就可以选择低速的单片机作为VS1053b的主控制器.
注意:DREQ可能在任何时间转变状态,甚至在一个字节传送的期间.
因此,DREQ最好只用来确认是否要发送较多的字节,它不应该中断一个已经开始的发送过程.
译者注:只要当前的DREQ被检测有效,就表示VS1053b可以接收最少32字节的数据块(SDI总线),或者一个完整的命令序列(SCI总线).
在你完成这个发送的整个操作过程之前,无须理会DREQ的状态.
注意:在从VS10xx(早期产品)到VS1002的产品内,DREQ只用于SDI.
而在VS1053b中,DREQ也用来反映SCI的状态.
要是在DREQ为低电平的情况下,你发送了SCI命令,因为DREQ是在SDI和SCI之间共享的,你将无法确定SCI命令是否会被执行和SDI数据是否准备好可以接收.
在这种情况下,你必须要在每个SCI命令之后给出一个足够长的延时来确保它们不会被遗漏.
有一份关于SCI的寄存器表在章节8.
7中,它列出了在最坏情况下,对于各个寄存器进行写入操作时所需要处理的最大时间长度.
译者注:这里有个隐含的软件优化方法,即DREQ信号处在高电平的时候,表示SDI和SCI都是可以接收数据的.
因此,你在SDI上发送了32个字节数据之后,还可以立即在SCI上发送一条SCI命令,或者将顺序倒过来也行.
在这个两个连续的不同操作之间,DREQ信号的状态是不用去关心的.
7.
4串行数据接口的串行协议(SDI)7.
4.
1通用这个串行数据接口(SDI)是在"从机模式"下运作的,因此必须要由外部的电路来产生DCLK信号.
数据(SDATA信号)可以任意定义在时钟信号DCLK的上升沿或下降沿上(章节8.
7).
VS1053b假设它的数据输入是字节同步的.
SDI字节传送可以是MSb或LSb在前,这取决于SCI_MODE中内容的定义(章节8.
7.
1).
此固件可以接受SDI所支持的最高比特率.
7.
4.
2VS1002本地模式下的SDI(新模式)在VS1002本机模式下(SM_NEWMODE是1),字节同步是由XDCS完成的.
在一个字节数据传送的过程中,XDCS状态是不允许改变的.
在实际应用中,推荐经常去翻转XDCS信号(注意:这里是指在数据块传送完之后翻转),例如在传送了一个磁盘的数据块之后就这样做一次.
这样的话,即使板上的VS1053b在使用时出了一点小问题,它也能使数据立即重新同步,如此就能保证主控制器和VS1003之间的同步运作了.
如果SM_SDISHARE是1,则XDCS信号是通过XCS输入信号在内部反相后产生的.
在新的设计中,推荐使用VS1002的本机模式.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
20/807.
4.
3VS1001兼容模式下的SDI(不推荐)图4:BSYNC信号–单字节传送当VS1053b运行在VS1001兼容模式下时,对输入的比特流必须要产生一个BSYNC信号来确保位元可以同步.
在第一个DCLK的采样沿上(上升或下降,取决于所选择的极性),BSYNC在此期间为高,标识出此字节的第一位元(如果LSB在前被使用,则此位是LSB,,反之则为MSB).
如果在接收最后一位时BSYNC是"1",则接收器继续保持活动状态和后面的8个位元也同样被接收.
图5:BSYNC信号–双字节传送7.
4.
4被动SDI模式如果SM_NEWMODE是0和SM_SDISHARE是1,这个操作将类似于VS1001兼容模式,但不同处是那些位元只会在BSYNC信号为"1"的期间才被承认.
BSYNC的上升沿仍是用于同步.
7.
5串行命令接口的串行协议(SCI)7.
5.
1通用此串行命令接口SCI(章节8.
6)的串行总线协议包括:一个指令字节、一个地址字节和一个16位的数据字.
每次读取操作或写入操作均可以访问一个寄存器.
由于那些数据位是在SCK的上升沿读取的,所以用户只能在SCK的下降沿上更新数据.
每个字节的MSb总是被首先发送.
在整个传送操作的期间,XCS必须要保持为低电平,但是在必要时,你可以在那些位元的中间暂停.
译者注:这里的暂停是指暂停SCK信号,这样的话,微控制器可以临时去处理别的事物,然后再返回继续传送.
在此期间是不可改变XCS信号状态,否则将导致当前的传送失败.
这种状况多数会出现在用软件模拟的SPI总线上,当微控制器去响应一个中断时,它所模拟的当前SPI传送周期就必须暂停一下,等处理完中断响应后再返回继续模拟这个SPI周期,直到它完全模拟处理完毕.
这些操作是通过8位指令码来指定的.
所支持的指令是读取操作和写入操作,如下表所示:指令名称操作码操作READ0b00000011读取数据WRITE0b00000010写入数据注意:VS1053b在每次的SCI操作开始后会将DREQ设置为低电平,而这段时间的长短将依赖于具体的操作行为.
它在DREQ重新恢复到高电平之前是不允许去启动一个新的SCI/SDI操作的.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
21/807.
5.
2SCI读操作图6:SCI字读取操作VS1053b使用下列时序对寄存器进行读取操作,它显示在图6中.
首先,XCS信号线被拉到低电平来片选此设备.
随后,读取操作码(0x3)加上8位宽度的地址后,组成的16位字通过SI信号线发送到设备.
在地址被读取之后,SI信号线上发送的任何数据都将被芯片忽略.
而被确认的地址中的十六位宽度数据将在SO信号线上移动输出.
XCS信号应该在数据移动送出之后驱动到高电平.
DREQ在读取操作期间会被芯片短暂的拉到低电平,这是非常短的时间,并不需要用户特别的留意.
7.
5.
3SCI写操作图7:SCI字写入操作写入VS1053b寄存器的操作要使用下列顺序,它显示在图7中.
XCS信号线先下拉到低电平表示选中该设备.
将写操作码(0x2)加上8位的字地址通过SI信号线发送到VS1053b.
在这个数据字移位发送的最后一个时钟结束之后,XCS应该上拉到高电平来结束这个写入顺序.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
22/80在最后一个位元发送结束后,在这个寄存器被更新的整个期间,DREQ会被拉到低电平并维持此状态,即图中标识为"execution"的部分.
这个时间长短依赖于各寄存器和它所包含的内容(请参阅章节8.
7中表内的详细描述).
如果该时间长度最大值远超过微控制器可以提供下一条SCI命令或SDI字节所需的时间,则在下一次SCI/SDI的操作开始之前,必须先检查DREQ的状态.
译者注:上面这段文字意思隐含着一个意思,即特定条件下,DREQ在低电平的状态时,VS1053b也可以接收SDI数据和SCI指令.
这种做法通常是不可靠的,即使某些SCI指令确实可以在执行时并不影响下一条SCI指令的接收(请参阅章节7.
3中的最后"译者注"内容描述),但是你可能无法知道这些细节,使用这种不确定的条件,会让你冒上巨大风险.
建议:每次操作前,必须检查DREQ的状态,确保它是高电平之后,再给VS1053b发送SDI或SCI.
除非你能完全理解VS1053b的工作时序,可以保证在不理会DREQ状态的情况下,也知道SCI什么时候应该是空闲的.
这样的话,利用章节8.
7中表内的内容确实可以达到这个目的.
7.
5.
4SCI多重写操作图8:SCI多字写操作如图8所示,考虑到用户会发送多个字到同一个SCI寄存器,VS1053b允许快速的SCI加载.
和单字写入操作的主要区别是:XCS信号在首个数据字的最后一位发送之后不会立即拉高,这样就可以直接发送下一个数据字.
直到最后一个数据字发送之后,才和单字写入操作一样,XCS被驱动到高电平.
译者注:这样处理的目的就是使后续的数据字不再需要附加写操作码和地址码.
当一个字的最后一个位元发送完之后,DREQ在寄存器更新的整个期间被驱动到低电平,即上图中标记为"execution"的那一段.
这个时间长短依赖于寄存器和它所包含的内容(请参阅章节8.
7中表内的详细描述).
如果该时间长度最大值远超过微控制器可以提供下一条SCI命令或SDI字节所需的时间,则在下一次SCI/SDI的操作开始之前,必须先检查DREQ的状态.
译者注:由图中的时序可以看出,DREQ在多重写入操作中仍然起着控制作用.
虽然后续的数据字可以直接传送到SCI总线上,但必须要等DREQ重新升高之后才可以开始传送.
这里的快速加载仅仅省略了"写操作码"+"地址码"的部分,而这个DREQ的约定绝对不可以忽略.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
23/807.
6SPI时序图图9:SPI时序图符号最小最大单位tXCSS5nstSU0nstH2CLKI周期tZ0nstWL2CLKI周期tWH2CLKI周期tV2(+25ns1)CLKI周期tXCSH1CLKI周期tXCS2CLKI周期tDIS10ns注1:25ns是相对于引脚负载电容为100pF时来计算的.
当电容值比较小时,这个时间将非常短.
注意:尽管这个定时器是来自于内部时钟CLKI,但系统在上电时是处于1.
0倍频模式,即晶振频率(CLKI=XTALI).
当你通过SCI_CLOCKF配置了高速时钟和等待DREQ变成高电平后,就有高速的SPI可用了.
注意:由于tWL+tWH+tH是6*CLKI+25ns,所以SCI的最大读取速度是CLKI/7.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
24/807.
7SPI使用SM_SDINEW和SM_SDISHARED配置的例子7.
7.
1两个SCI写操作图10:两个SCI的操作图10显示了两个连续的SCI操作.
注意那个xCS信号在两次写入之间必须升高进入失效状态,而且DREQ绝对要像图中显示的那样来做参考(译者注:图中DREQ信号低电平段后面的那段话意思是–DREQ在开始下一个SCI之前要升起来).
7.
7.
2两个SDI字节图11:两个SDI字节如图所示:由于SDI数据是在xCS的上升沿上同步的.
所以,不管在什么情况下,每个字节都不需要再去单独同步了.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
25/807.
7.
3在两个SDI字节之间的SCI操作图12:两个SDI字节被一个SCI操作分离的图例图12显示了一个SCI操作被嵌入到两个SDI操作之间的状况.
xCS信号的边沿被用来为SDI和SCI同步.
需要被注意的DREQ信号相关细节也显示在图中.
(译者注:图中DREQ信号低电平段后面的那段话意思是–DREQ在下一个传送结束之前为高电平).
译者注:这里有个前提条件,由于DREQ信号是SDI和SCI共同使用的,所以上图表示:在本章节中提到的操作前,SDI和SCI都是可以接收数据的.
在这个条件下,上述的操作才可以正确进行.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
26/808功能说明8.
1主要特征VS1053b是一个建立在私有基础上的数字信号处理器:VS_DSP.
它包含OggVorbis、MP3、AAC、WMA和WAVPCM+ADPCM音频解码、MIDI合成器、串行接口、一个多种速率的立体声DAC和模拟输出的放大器加滤波器,和它们所需要的所有相关代码和数据存储器.
而且AD‐PCM音频编码器可以使用一个麦克风放大器和/或线路级的输入,一个立体声A/D转换器.
还有一个UART可以用来调试.
8.
2支持的音频编码格式定义标记说明+支持的格式支持的格式,但没有经过彻底测试-已经存在但不支持的格式不存在的格式8.
2.
1支持的MP3格式(MPEGlayerIII)MPEG1.
01:采样率/Hz比特率/kbit/s32404856648096112128160192224256320480004410032000MPEG2.
01:采样率/Hz比特率/kbit/s8162432404856648096112128144160240002205016000MPEG2.
51:采样率/Hz比特率/kbit/s816243240485664809611212814416012000110258000注1:支持所有的可变比特流(VBR).
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
27/808.
2.
2支持的MP1格式(MPEGlayerI)注意:阶层I/II的解码必须在寄存器SCI_MODE中明确使能.
(译者注:这是因为受版权限制.
)MPEG1.
0:采样率/Hz比特率/kbit/s326496128160192224256288320352384416448480004410032000MPEG2.
0:采样率/Hz比特率/kbit/s3248566480961121281441601761922242562400022050160008.
2.
3支持的MP2格式(MPEGlayerII)注意:阶层I/II的解码必须在寄存器SCI_MODE中明确使能.
MPEG1.
0:采样率/Hz比特率/kbit/s324856648096112128160192224256320384480004410032000MPEG2.
0:采样率/Hz比特率/kbit/s81624324048566480961121281441602400022050160008.
2.
4支持的OggVorbis格式参数最小最大单位通道数量2窗口大小644096samples采样率48000Hz比特率500kbit/sec仅支持floor1,目前没有已知的编码器还在使用floor0.
所有的单通道和双通道oggvorbis文件都应该用此解码器播放.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
28/808.
2.
5支持的AAC格式(ISO/IEC13818‐7和ISO/IEC14496‐3)VS1053b解码器可以支持MPEG2‐AAC‐LC‐2.
0.
0.
0和MPEG4‐AAC‐LC‐2.
0.
0.
0流,也就是低复杂度和最大两个通道可以解码.
如果一个流中包含了一种素材以上和/或多种素材类型,则你可以选择在16个单通道、16个通道对和16个低频素材中的一个来解码,缺省情况下会选择流中首先出现的素材.
用户可控制的动态范围控制(DRC)能让用户限制或增强素材中可以用来实现DRC的信息.
正弦窗和Kaiser‐Bessel‐derived窗(KBD)均可支持(译者注:这个Kaiser‐Bessel‐derivedwindow可能也被称作"凯撒‐贝塞耳‐派生窗",因找不到确切的译法,这里还是用原文比较合适).
对于MPEG4的伪随机噪音替代(PNS)是支持的,但不支持短帧(120和960个样本).
频带复制(SBR)第3级和参量立体声(PS)第3级均支持(HE‐AACv2).
这个第3级是指可支持最大两个通道和最高采样率为48KHz,包括和不包括SBR、有PS或没有PS.
另外,混频模式(Ra和Rb),IPD/OPD合成和34个频段的协议都可实现.
"降低采样"合成(downsampledsynthesis)模式(使用SBR的核心编码采样率>24kHz和0forautomaticm4a,ADIF,WMAresyncs*/union{struct{u_int32curPacketSize;u_int32packetSize;}wma;struct{u_int16sceFoundMask;/*1e2aSCE'sfoundsincelastclear*/u_int16cpeFoundMask;/*1e2bCPE'sfoundsincelastclear*/u_int16lfeFoundMask;/*1e2cLFE'sfoundsincelastclear*/u_int16playSelect;/*1e2d0=firstany,initializedataacinit*/s_int16dynCompress;/*1e2e-8192=1.
0,initializedataacinit*/s_int16dynBoost;/*1e2f8192=1.
0,initializedataacinit*/u_int16sbrAndPsStatus;/*0x1e301=SBR,2=upsample,4=PS,8=PSactive*/}aac;struct{u_int32bytesLeft;}midi;struct{s_int16gain;/*0x1e2aproposedgainoffsetin0.
5dBsteps,default=-12*/}vorbis;}i;};注意:因为SCI_WRAMADDR和SCI_WRAM接口在读取两个字的变量时没有任何方式的保护.
变量可能在读取高,低部分之间的时候被更新.
出现这个问题是由于低和高的部分被改变了.
如果要判断数值是否正确的话,你应该读取这个数值两次并将结果进行比较.
下面的示例显示了更新发生在读取低和高部分内容之间或读取高的那部分之后,bytesLeft从0x10000减少到0xFFFF所发生的状况.
无效的读取正确的读取无更新地址数值地址数值地址数值0x1e2a0x0000这之后被修改了0x1e2a0x00000x1e2a0x00000x1e2b0x00000x1e2b0x0001这之后被修改了0x1e2b0x00010x1e2a0xffff0x1e2a0xffff0x1e2a0x00000x1e2b0x00000x1e2b0x00000x1e2b0x0001VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
59/80你可以看到:在无效的读取中,低的部分从0x0000回绕(指出现溢出,无论是进位还是借位)变为0xffff,高的部分一直没有变化.
在这种情况下,第二种读取提供了正确的结果,否则总是使用首次读取的数值.
当低的部分可能发生回绕,第二次读取是很必要的,高的部分会出现改变,即低部分是小的部分.
bytesLeft只在一个时间减少(即低部分出现借位时,高低部分会同时改变),因此,仅在低的部分为0时,才需要重新读取.
9.
11.
1通用参数这些参数是所有编解码器共用的,而其它区域的只在相对应的编解码器是活跃时才有效.
当前激活的编解码器可用SCI_HDAT1来确定.
参数地址用途chipID0x1e00‐01用熔丝编程的独一ID号(熔丝的状态拷贝)version0x1e02结构版本–0x0003config10x1e03各种混在一起的不同配置playSpeed0x1e04播放速度:0,1=正常速度,2=倍速,3=三倍速等等byteRate0x1e05平均字节速率endFillByte0x1e06在文件后发送的填充字节jumpPoints[8]0x1e16‐25WMA和AAC的包偏移量latestJump0x1e26最近跳跃点的索引positionMsec0x1e27‐28如果可用,表明文件毫秒级的位置resync0x1e29自动重新同步选择此熔丝编程ID是在启动时读取和复制到chipID领域的.
如果不可用,此值将全部为零.
版本区域可以用来确定结构的其余布局.
当结构改变时,版本号也会改变.
对于VS1053b的结构版本是3.
config1控制MIDI的混响和AAC的SBR、PS设置.
playSpeed使我们能够快进歌曲.
比特流解码的执行只是按照playSpeed来逐帧播放.
例如:如果你能以足够快的速度填充数据,将4写入playSpeed后,播放歌曲的速度将是正常速度的四倍.
写入0或1即可恢复正常的速度.
SCI_DECODE_TIME同样也会将计数速度加快.
目前所有的编解码器都可支持playSpeed的配置.
byteRate包含了每种代码每秒字节数的平均比特率.
该值每秒更新一次,它可以用来估算余下的播放时间.
除MP3,MP2,MP1之外的所有编解码器均可在SCI_HDAT0中获得这个值.
endFillByte表明在发送文件后和设置SM_CANCEL前应该发送什么字节值.
jumpPoints包含32位的文件偏移量.
每个有效的(非零)入口表示一个WMA包的开始,或AAC(ADIF,.
mp4/.
m4a)的原始数据块的开始.
latestJump包含了最后更新的入口索引.
如果你只是用latestJump来读取入口点,你不需要两次读取这个入口来确保有效性.
WMA和AAC(ADIF,.
mp4/.
m4a)的跳转点信息可用来实现完美的快进和快退.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
60/80positionMsec是一个域,不论是倒带和快进的操作,它提供了一个在当前文件中的毫秒级位置.
该值只适用于编解码器判断流本身的播放位置.
目前WMA和OggVorbis提供了这方面的资料.
如果位置是未知的,这个域将包含‐1.
resync域常用来在首个错误出现时强迫WMA和AAC(ADIF,.
mp4/.
m4a)的流重新同步,而不是结束解码.
这个域常用于实现WMA和AAC(ADIF,.
mp4/.
m4a)几乎完美的快进和快退.
如果要寻找的数据不在它们的包内或数据块的边界上,用户在执行之前应该设置这个域.
这个域的值表示在放弃之前允许进行多少次尝试.
数值32767表示执行无限次数的尝试该resync域在复位后被设置为32767,来获得这个重新同步的缺省功能,但可以在复位之后清除它来恢复之前的行为.
当resync被设置的时候,每种文件的解码结束方式都应该象章节9.
5.
1中说明的那样来终止.
Seek域不再存在.
当需要重新同步时,WMA和AAC的编解码器立即进入广播/流模式而不管文件的大小信息.
此外,当resync是非0时,WAV文件的大小和采样大小的信息也会被忽略.
用户必须使用SM_CANCEL或软件复位来结束解码.
注意:WAV、WMA、ADIF和".
mp4/.
m4a"文件用一个元数据或标头部分作为开始的,在执行任何快进和快退操作之前必须要进行完整的处理.
当标头信息处理完和允许跳跃时,SCI_STATUS寄存器中的SS_DO_NOT_JUMP会被清除.
9.
11.
2WMA参数地址用途curPacketSize0x1e2a/2b正在处理中的包的大小packetSize0x1e2c/2dASF标头中的包的大小该ASF标头包的大小可在packetSize中获取.
你可以用这个信息和jumpPoints中的包起始偏移量来解析这个包的标头和跳过ASF文件中的那些包.
当WMA解码器侦测到一个文件用当前的时钟不能进行正确解码时,可能会自动增加内部时钟频率.
这个最大所允许的时钟是用SCI_CLOCKF寄存器来配置的.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
61/809.
11.
3AAC参数地址用途config10x1e03(7:4)SBR和PS选择sceFoundMask0x1e2a单通道元素找到cpeFoundMask0x1e2b通道对(双通道)元素找到lfeFoundMask0x1e2c低频元素找到playSelect0x1e2d播放元素选择dynCompress0x1e2eDRC的压缩系数,-8192=1.
0dynBoost0x1e2fDRC的提升系数,8192=1.
0sbrAndPsStatus0x1e30SBR和PS可用标记如果流中有多种元素,playSelect用来指明哪个元素可解码.
每次AAC解码开始,这个值会设置为0,这将导致流中首个出现的元素被选择为解码.
而其它的值是:0x01–选择第一个单通道元素(SCE);0x02–选择第一个通道对元素(CPE);0x03–选择第一个低频元素(LFE),S16+5–选择SCE编号S;P16+6–选择CPE编号P;L16+7–选择LFE编号L.
当自动选择被执行的时候,playSelect将反映出选中的元素.
由于变量最后会被清除,sceFoundMask、cpeFoundMask和lfeFoundMask指出AAC流中有哪些元素曾经被找到过.
这个值能为那些唯一可用的元素提供一份元素选择菜单.
dynCompress和dynBoost改变动态范围控制(DRC)在目前某些AAC流中的表现.
这些是在AAC解码开始时初始化的.
sbrAndPsStatus指出频带复制(SBR)和参量立体声(PS)的状态.
位域用途0SBR存在1增加采样有效2PS存在3PS有效config1中的位7到位4可用于控制SBR和PS解码.
位5和位4选择SBR模式,而位7和位6选择PS模式.
如果你的AAC许可证没有隐藏SBR和/或PS,这些配置就可以利用上.
config1(5:4)用途'00'正常模式,增加采样=3.
0*时打开),1=关,2‐15=空间大小bytesLeft0x1e2a/2b此轨道内剩余的字节数量config1的低4位控制混响效果.
9.
11.
5OggVorbis参数地址用途增益0x1e2a首选的重放增益补偿OggVorbis解码器支持重放增益技术.
重放增益技术用于自动地给所有歌曲配置一个相同的音量,使用户不需要在不同的歌曲之间调整音量设置.
如果OggVorbis解码器在歌曲标头中发现一个重放增益标记,则此标记被解析,并且解码的增益设置可以从增益参数中获取.
对于其中没有任何重放增益标记的歌曲,缺省设定‐6dB(增益值‐12)将被使用.
关于重放增益的更多详细资料,请参阅http://en.
wikipedia.
org/wiki/Replay_Gain和http://www.
replaygain.
org/.
播放软件可能使用增益值调整音量水平.
负值表示这个音量是降低的,正值表示音量是增加的.
举例来说:增益=‐11表示音量将会降低5.
5dB(11/2=5.
5),并且左和右的衰减应该是增加了11.
当增益=2表示音量将会增加1dB(2/2=1.
0),并且左和右的衰减应该是减少了2.
由于音量设置不可以超越+0dB,这个值应该是饱和值.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
63/80增益音量SCI_VOL(音量-增益)‐11(‐5.
5dB)0(+0.
0dB)0x0b0b(‐5.
5dB)‐11(‐5.
5dB)3(‐1.
5dB)0x0e0e(‐7.
0dB)+2(+1.
0dB)0(+0.
0dB)0x0000(+0.
0dB)+2(+1.
0dB)1(‐0.
5dB)0x0000(+0.
0dB)+2(+1.
0dB)4(‐2.
0dB)0x0202(‐1.
0dB)9.
12SDI测试在VS1053b内有几个测试方式,允许用户将执行存储器测试,SCI总线测试和几个不同的正弦波测试.
所有的测试用一个相似的方式开始:VS1053b用硬件复位,设置SM_TESTS,并将测试命令发送到SDI总线上.
每个测试通过发送4字节的特别指令序列开始,跟随4个零.
此序列见后面描述.
9.
12.
1正弦测试正弦测试初始化以8字节序列0x530xEF0x6En0000,n是用来定义正弦测试的地方.
n被定义如下:n位组名称位域说明FsIdx7:5采样率索引S4:0正弦跳跃率FsIdxFsFsIdxFs044100Hz424000Hz148000Hz516000Hz232000Hz611025Hz322050Hz712000Hz将被输出的正弦频率可以按照后面的公式计算:F=Fs*S/128.
例如:正弦测使用值126激活,那将是0b01111110.
拆开n的部件,FsIdx=0b011=3,因此Fs=22050Hz.
S=0b11110=30,所以正弦的最终频率是F=22050Hz*30/128≈5168Hz.
要退出正弦测试,发送这个系列0x450x780x690x740000即可.
注意:正弦测试信号要经过数字音量控制,所以它可以单独测试不同的通道.
9.
12.
2引脚测试引脚测试以8字节序列0x500xED0x6E0x540000来激活.
此测试仅用于芯片生产测试.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
64/809.
12.
3SCI测试SCI测试以8字节序列0x530x700xEEn0000来初始化,n48是测试寄存器的编号.
指定寄存器的内容被读取和被复制到SCI_HDAT0.
如果将被测试的寄存器是HDAT0,则结果将被复制到SCI_HDAT1内.
例如:如果n是48,则SCI寄存器0(SCI_MODE)的内容被拷贝到SCI_HDAT0.
9.
12.
4存储器测试存储器测试方式以8字节序列0x4D0xEA0x6D0x540000来初始化的.
在这个序列之后,等待1100000个时钟周期.
结果可以从SCI寄存器SCI_HDAT0读取,并且每个位被解释如下:位域屏蔽含义150x8000测试完成14:10不使用90x0200Mux测试成功80x0100好的MACRAM70x0080好的IRAM60x0040好的YRAM50x0020好的XRAM40x0010好的IROM130x0008好的IROM220x0004好的YROM10x0002好的XROM100x0001好的XROM20x83ff全部都是好的存储器测试会覆盖掉RAM存储器中当前的内容.
9.
12.
5新的正弦波和扫描测试一个更加精确频率的正弦波测试可以通过SCI开始和控制.
SCI_AICTRL0和SCI_AICTRL1分别设置此正弦波频率的左右通道.
这些寄存器:音量(SCI_VOL)和采样率(SCI_AUDATA)在测试之前或之中,可以被设置.
向SCI_AIADDR写入0x4020开始测试.
SCI_AICTRLn可以通过所期望的频率Fsin和DAC采样率Fs用下面这个公式来计算:SCI_AICTRLn=Fsin*65536/FsVS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
65/80SCI_AICTRLn的最大值是0x8000U.
对产生正弦波的最佳S/N比率来说,SCI_AICTRLn的三个LSb应该是零.
频率结果Fsin可以用DAC采样率Fs和SCI_AICTRL0、SCI_AICTRL1从下面的等式计算出来.
Fsin=SCI_AICTRLn*Fs/65536正弦扫描测试可以通过给SCI_AIADDR写入0x4022开始.
这两个测试使用了正常音频通道,因此SCI_BASS、差分输出方式和EarSpeaker的设置都会起作用.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
66/8010VS1053b寄存器10.
1谁需要阅读这些章节当用户希望增加一些自己的功能象DSP效果到VS1053b时,就需要用户自编软件了.
然而,VS1053b的多数用户不需要担心写他们的扩充代码或者关心本章节,包括从VLSISolution的网站只下载软件插件的那些人.
10.
2处理器内核VS_DSP是一个16/32位DSP处理器内核,也有很多通用处理器的功能.
VLSISolution的免费VSKIT软件包包含了所有的工具和所需的文件.
可以为VS_DSP处理器内核写、模拟和调试汇编语言或扩展的ANSIC程序.
VLSISolution还提供了一个完整的和有全功能调试能力的集成开发环境VSIDE.
10.
3VS1053b存储器映射X‐memoryY‐memoryI‐memory地址空间说明地址空间说明地址空间说明0x0000.
.
0x17ff系统RAM0x0000.
.
0x17ff系统RAM0x0000.
.
0x004f系统RAM0x1800.
.
0x187f用户RAM0x1800.
.
0x187f用户RAM0x0050.
.
0x0fff用户RAM0x1880.
.
0x197f堆栈0x1880.
.
0x197f堆栈0x1000.
.
0x1fff‐0x1980.
.
0x3fff系统RAM0x1980.
.
0x3fff系统RAM0x2000.
.
0xffffROM56k0x4000.
.
0xbfffROM32k0x4000.
.
0xdfffROM40k和banked0xc000.
.
0xc0ff外设0xe000.
.
0xffff系统RAM0xc000.
.
0xffffROM416k0xc100.
.
0xffffROM15.
75k10.
4SCI寄存器在第8.
7章中SCI寄存器的描述可以发现它在0xC000.
.
0xC00F之间.
除这些寄存器外,有一个地址0xC010,称为SCI_CHANGE.
SCI寄存器组,前缀是SCI_寄存器类型复位值缩写[位域]说明0xC010r0CHANGE[5:0]最近的SCI访问地址SCI_CHANGE位域名称位域说明SCI_CH_WRITE41=最近的访问是一个写周期SCI_CH_ADDR3:0最近访问的SCI地址VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
67/8010.
5串行数据寄存器SDI寄存器,前缀是SER_寄存器类型复位值缩写[位域]说明0xC011r0DATA最近收到的2字节,大端模式0xC012w0DREQ[0]DREQ引脚控制10.
6DAC寄存器DAC寄存器,前缀是DAC_寄存器类型复位值缩写[位域]说明0xC013rw0FCTLLDAC频率控制,16LSbs0xC014rw0FCTLHDAC频率控制4MSbs,PLL控制0xC015rw0LEFTDAC_LEFT通道PCM值0xC016rw0RIGHTDAC_RIGHT通道PCM值每到第四个时钟周期,内部的26位计数器会加上(DAC_FCTLH&15)*65536+DAC_FCTLL.
每当这个计数器溢出,DAC_LEFT和DAC_RIGHT中的值可被读取,并引发一个DAC中断.
10.
7GPIO寄存器GPIO寄存器,前缀是GPIO_寄存器类型复位值缩写[位域]说明0xC017rw0DDR[7:0]方向0xC018r0IDATA[7:0]从引脚读取的数值0xC019rw0ODATA[7:0]输出到引脚的数值GPIO_DIR用于设置GPIO的引脚方向,1是输出.
GPIO_ODATA会记住它的数值,即使GPIO_DIR被设置成输入.
GPIO寄存器不会引起中断.
注意:在VS1053b内,VSDSP寄存器可以通过SCI_WRAMADDR和SCI_WRAM寄存器来读取和写入.
因此你能很方便地使用GPIO引脚.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
68/8010.
8中断寄存器中断寄存器,前缀是INT_寄存器类型复位值缩写[位域]说明0xC01Arw0ENABLE[7:0]中断使能0xC01Bw0GLOB_DIS[-]写增加中断计数器0xC01Cw0GLOB_ENA[-]写减少中断计数器0xC01Drw0COUNTER[4:0]中断计数器INT_ENABLE控制中断.
控制位如下所示:INT_ENABLE位域名称位元说明INT_EN_TIM17使能定时器1中断INT_EN_TIM06使能定时器0中断INT_EN_RX5使能UARTRX中断INT_EN_TX4使能UARTTX中断INT_EN_SDI2使能数据中断INT_EN_SCI1使能SCI中断INT_EN_DAC0使能DAC中断注意:在改变INT_ENABLE的对应中断后,在它起作用之前也许要花费最多6个时钟周期.
给INT_GLOB_DIS写入任何值会使中断计数器INT_COUNTER加一,并有效地让所有中断失效.
写入这个寄存器后,在它生效之前也许要花费最多6个时钟周期.
给INT_GLOB_ENA写入任何值会使中断计数器INT_COUNTER减一(除非INT_COUNTER已经是0).
如果此中断计数器变成0,由INT_ENABLE选中的中断将会被恢复.
一个中断程序总是应该写入这个寄存器来作为它的最后一件事,因为中断自动地给中断寄存器加一,但减去它回到它的原始值是用户的责任.
写入这个寄存器后,在它生效之前也许要花费最多6个时钟周期.
通过读取INT_COUNTER,该用户也许会检查中断计数器是否正确.
如果计数器不为0,那些中断是失效的.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
69/8010.
9看门狗v1.
02002‐08‐26该看门狗包括看门狗计数器和一些逻辑.
在复位后看门狗是不活动的.
可以向WDOG_CONFIG写入来给计数器设定重载值.
通过向WDOG_RESET写入0x4ea9来激活看门狗.
每次这样做的时候都会使看门狗计数器复位.
每过65536个时钟周期,此计数器减一.
如果计数器产生下溢,它将启动VSDSP内部的复位序列.
因此,在第一次0x4ea9写入WDOG_RESET之后,随后用相同的值给同一寄存器写入必须在不少于65536*WDOG_CONFIG个时钟周期内完成.
一旦启动,看门狗就不可以关闭了.
同样,写入WDOG_CONFIG的计数器重载值也不可以修改了.
在激活看门狗之后,任何对WDOG_CONFIG或WDOG_DUMMY的读写操作将会导致下一个对WDOG_RESET的写操作失效.
这是为了防止跑飞的循环去复位计数器,即使它们偶然写了一个正确值.
写入一个错误值到WDOG_RESET也同样导致下一个对WDOG_RESET的写操作失效.
读取看门狗寄存器将返回不确定的值.
10.
9.
1寄存器看门狗寄存器,前缀WDOG_寄存器类型复位值缩写[位域]说明0xC020w0CONFIG配置0xC021w0RESET时钟配置0xC022w0DUMMY[-]虚的寄存器VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
70/8010.
10UARTv1.
12004‐10‐09RS232UART是使用RS232标准的串行接口.
图15:RS232串行接口协议当线路空闲时,它停留在逻辑高状态.
当字节被传送时,传输从起始位(逻辑零)开始并继续传送数据位(LSB在前),最后用停止位(逻辑高)来结束.
每个8位的字节帧会发送10位.
10.
10.
1寄存器UART寄存器,前缀UARTx_寄存器类型复位值缩写[位域]说明0xC028r0STATUS[4:0]状态0xC029r/w0DATA[7:0]数据0xC02Ar/w0DATAH[15:8]高位数据0xC02Br/w0DIV分频10.
10.
2状态UARTx_STATUS读取状态寄存器,返回的是发送和接收的状态.
UARTx_STATUS位域名称位元说明UART_ST_FRAMEERR4帧错误(停止位是0)UART_ST_RXORUN3接收过快UART_ST_RXFULL2接收数据寄存器满UART_ST_TXFULL1发送数据寄存器满UART_ST_TXRUNNING0正在发送中如果接收字节的停止位是0,则UART_ST_FRAMEERR被设置.
当接收移位寄存器传送数据到数据寄存器时,如果一个接收字节覆盖了尚未读取的数据,则UART_ST_RXORUN被设置,否则它将被清除.
如果尚有未读取的数据在数据寄存器内,则UART_ST_RXFULL被设置.
如果数据寄存器不允许写入(数据寄存器满),则UART_ST_TXFULL被设置.
如果发送移位寄存器正在运作中,则UART_ST_TXRUNNING被设置VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
71/8010.
10.
3数据UARTx_DATA从UARTx_DATA读取的数据是标准的字节,内容在位7:0,而位15:8返回的是'0'.
如果那儿没有未读取的数据,则"接收数据寄存器满"标记会被清除.
当一个字节从"接收移位寄存器"被移动到"接收数据寄存器"时,将产生一个接收中断.
向UARTx_DATA写入会设置为发送一个字节.
有效的数据在位元7:0上,写入的其它位元的值被忽略.
如果发送器是闲置的,则此字节立刻被移动到"发送移位寄存器"内和引发一个发送中断请求,并且开始发送数据.
如果发送器是"忙",将设置UART_ST_TXFULL标记,而该字节将停留在"发送数据寄存器"内,直到先前的那个字节被发送完,可以处理此字节为止.
10.
10.
4数据高8位UARTx_DATAH除了数据位15:8被使用以外,和UARTx_DATA一样.
10.
10.
5分频UARTx_DIVUARTx_DIV位域名称位元说明UART_DIV_D115:8分频值1(0.
.
255)UART_DIV_D27:0分频值2(6.
.
255)此分频器在复位时设定的初始值是0x0000.
ROM内的起动代码必须根据准确的主钟频率初始化它,才能得到正确的位速度.
第二个分频值(D2)必须是在6到255的范围内.
通讯速度f=fm/((D1+1)*(D2)),fm是主时钟频率的和f是TX/RX的速度(bps).
分频器值在26兆赫主时钟下的通用通信速度如下所示:举例UART速度fm=26MHz通用速度[bps]UART_DIV_D1UART_DIV_D248008563960042631440042421920051262880042213840025265760012261152000226VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
72/8010.
10.
6中断和操作发送操作如下所示:在一个8位字写入传送数据寄存器后,如果发送器没有忙于发送先前的字节,则它立即被传输.
当传输开始将会发送TX_INTR中断.
状态位[1]标示出"发送数据寄存器空"(或"满"的状态),而位[0]标示出发送器(移位寄存器)"空"的状态.
如果"发送数据寄存器"不为"空"(bit[1]='0'),则不能向"发送数据寄存器"写一个新字.
当数据被移到发送器并开始传输,"发送数据寄存器"将是空的.
在每次产生发送中断的时候,给"发送数据寄存器"写一个新的字是安全的.
接收操作如下所示:它对RX信号线进行采样,如果侦测到高电平到低电平的转换,则起始位被找到.
此后,它在8位元的每个位元时间中部采样(使用一个恒定的定时器),和填充接收器(移位寄存器),接收顺序是LSB在前.
完成后的数据在接收器移动到"接收数据寄存器"时,结束位状态被检查(逻辑高=好,逻辑低=帧错误)并设置状态位[4],RX_INTR中断被发送,("接收数据寄存器满")被设置,状态位[2]的旧状态被复制到位[3]("接收数据过快"状态位).
随后接收器回到空闲状态等待一个新的起始位.
当"接收数据寄存器"被读取时,状态位[2]被清零.
RS232通信速度是使用二个时钟分频器来设置的.
基本的时钟是处理器主时钟(即XTALI,而不是CLKI).
位元15‐8在这里是第一分频器,位元7‐0为第二分频器.
RX采样频率是从第二分频器输入的时钟频率.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
73/8010.
11定时器v1.
02002‐04‐23有二个彼此独立的32位定时器,可以单独初始化和使能.
如果使能一个定时器,通过处理器写入一个启动值来初始化它,定时器开始用每个时钟周期倒计时.
当数值被倒减到零时,一个中断被发送.
并且定时器用它的启动数值寄存器中的数值初始化,然后继续倒计时.
只要它在使能中,定时器将始终在那里循环.
定时器有专用的一个32位的倒计数定时寄存器和一个32位的TIMER1_LH,可以通过处理器来写入定时器的启动值.
同时还有一个两位的TIMER_ENA寄存器.
每个定时器是通过设置使能寄存器的对应位来启动(1=使能)或停止(0=失效)的.
10.
11.
1寄存器定时器寄存器,前缀TIMER_寄存器类型复位值缩写[位域]说明0xC030r/w0CONFIG[7:0]定时器配置0xC031r/w0ENABLE[1:0]定时器使能0xC034r/w0T0L定时器0启动值-LSBs0xC035r/w0T0H定时器0启动值-MSBs0xC036r/w0T0CNTL定时器0计数器-LSBs0xC037r/w0T0CNTH定时器0计数器-MSBs0xC038r/w0T1L定时器1启动值-LSBs0xC039r/w0T1H定时器1启动值-MSBs0xC03Ar/w0T1CNTL定时器1计数器-LSBs0xC03Br/w0T1CNTH定时器1计数器-MSBs10.
11.
2配置TIMER_CONFIGTIMER_CONFIG位域名称位域说明TIMER_CF_CLKDIV7:0主时钟分频TIMER_CF_CLKDIV的主时钟分频值是用于产生所有的定时器时钟.
产生这个内部时钟频率的公式为:fi=fm/(c+1),其中fm是主时钟频率和c是TIMER_CF_CLKDIV.
例如:当主时钟是12MHz、TIMER_CF_DIV=3,则主时钟将经过4分频,而输出/采样的时钟将是fi=12MHz/(3+1)=3MHz.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
74/8010.
11.
3配置TIMER_ENABLETIMER_ENABLE位域名称位域说明TIMER_EN_T11使能定时器1TIMER_EN_T00使能定时器010.
11.
4定时器X起始值TIMER_Tx[L/H]这个32位的启动值TIMER_Tx[L/H]用来在定时器复位时设置最初的计数值.
而定时器中断的频率可以用ft=fi/(c+1)来计算,fi是主时钟经过分频后的定时器时钟(请参阅章节10.
11.
2),而c是TIMER_Tx[L/H].
例如:当主时钟频率为12MHz和TIMER_CF_CLKDIV=3,则定时器时钟注为fi=3MHz.
如果TIMERTH=0、TIMERTL=99,则时钟中断频率为ft=3MHz/(99+1)=30kHz.
注:原文在此处将定时器时钟误写为主时钟.
10.
11.
5定时器X计数器TIMER_TxCNT[L/H]TIMER_TxCNT[L/H]包含了当前的计数值.
通过读取这个寄存器对,用户可以知道在下一个定时器中断产生之前还有多长时间.
并且,通过写入这对寄存器,可以得到一次不同延迟时间的定时器中断.
10.
11.
6中断每个定时器有它自己的中断,在定时器计数下溢时会被声明.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
75/8010.
12VS1053b音频通道图16:VS1053b的ADC和DAC数据通道在IMAADPCM编码方式下,从模拟到数字的数据转换首先会用48kHz或24kHz采样率来处理.
固件进行直流漂移补偿和增益控制(自动或固定),然后将数据转送到音频FIFO.
在这儿,数据被重新转换采样率,这只会产生几个采样的延迟.
该采样率转换将增加采样数据到XTALI/2(缺省时钟下是6.
144MHz),在那儿针对所需求的采样率进行1*、2*或3*的重采样.
另外,IMAADPCM编码器或PCM采样会使用合适的频率,通过软件进行抽样来获得最终的数据.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
76/8010.
13I2SDAC接口I2S接口可以在系统上添加外部DAC.
注意:VS1053b和VS1033不同,I2S引脚共享的是不同的GPIO引脚,这能让SPI引导和I2S功能可以在同一个应用中使用.
10.
13.
1寄存器I2S寄存器,前缀I2S_寄存器类型复位缩写说明0xC040r/w0CONFIG[3:0]I2S配置10.
13.
2配置I2S_CONFIGI2S_CONFIG位域名称位域说明I2S_CF_MCLK_ENA3使能MCLK输出(12.
288MHz)I2S_CF_ENA2使能I2S,否则引脚是GPIOI2S_CF_SRATE1:0I2S速率,"10"=192,"01"=96,"00"=48(kHz)I2S_CF_ENA使能I2S接口.
在复位后此接口是失效的,那些引脚作为GPIO使用.
I2S_CF_MCLK_ENA使能MCLK输出.
频率直接从输入时钟(通常是12.
288兆赫),或者输入时钟的一半(在输入24‐26MHz时钟,模式寄存器位SM_CLK_RANGE被设置为1时).
I2S_CF_SRATE用于控制输出采样率.
当设置为48kHz,SCLK是MCLK/8,当设置为96kHz时,SCLK是MCLK/4,而设置为192kHz时,SCLK是MCLK/2.
图17:I2S接口,192kHz.
要使能I2S,首先向SCI_WRAMADDR写入0xc017和向SCI_WRAM写入0xf3,然后再向SCI_WRAMADDR写入0xc040和将0x0c写入SCI_WRAM.
请参阅应用注意事项中的更多信息.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
77/8011VS1053版本修订历史本章描述对VS1053所作的最新和已经完成的很多重要改动.
11.
1在VS1033c和VS1053a/b之间修改的固件,2007‐03‐08全新的或主要的修改:zI2S引脚现在使用GPIO4‐GPIO7,并且与SPI引导引脚不再重叠.
z当用法正确的时候,在文件之间不会出现软件复位的需求.
z增加了OggVorbis解码.
非致命的ogg或vorbis解码错误会自动重新同步.
这允许很容易实现倒带和快进.
如果到达"最后帧"标记或设置了SM_CANCEL,则解码结束.
zHE‐AACv2增加了第3级解码.
它也许会使PS和SBR处理失效,和可以通过参数parametric_x.
control1来控制"增加采样"模式.
z象WMA解码器一样,如果AAC解码器需要更多时钟来解码文件,它也会使用时钟增加法(参见SCI_CLOCKF).
如果此文件已经不能使用更高的时钟了,则HE‐AAC特效会逐个被放弃,直到能正确解码.
参量立体声会是首先被放弃的特效、随后是"减少采样"模式被使用,最后是频段复制特效被放弃.
这些特效会在下个文件自动恢复.
z全新的音量控制和过零交叉侦测功能可以阻止音量改变时产生的爆破音.
z使用音频FIFO低容量侦测(支持逐渐减少到0)来替代音频缓冲区内容循环.
z为所有编解码器实行平均比特率计算(字节速率).
z所有的编解码器都支持快速播放方式,可为最佳质量选择速度来快速的向前操作.
快速播放同时也会让DECODE_TIME加速.
zWMA和OggVorbis可以提供毫秒级的绝对解码位置.
z当侦测到SM_CANCEL时,固件同时会放弃流缓冲区中的内容.
z在当前文件中不能进行跳跃时,表示正在进行标头处理或是midi文件.
SCI_STATUS内的SS_DO_NOT_JUMP注会是'1'.
(注:原文笔误,写作SCIST_DO_NOT_JUMP).
zIMAADPCM编码器现在支持立体声编码和可以选择采样率.
其它的修改或附加的z被音量和低音/高音控制计算所延迟的时间由相应的SCI操作开销来抵消.
这种延迟的处理和新的音量控制硬件可以防止音频采样数据在音量变化期间出现失误.
zSCI_DECODE_TIME只会在硬件和软件复位并后,直到允许文件被一个接一个播放或循环播放时才会被清除.
z在YRAM的0xe000.
.
0xffff读取和写入会增加SCI_WRAMADDR/SCI_WRAM.
z在复位后,resync参数(parametric_x.
resync)被设置为32767,这将允许有限度的"重新同步"尝试(或通过设置SM_CANCEL来中止).
之前的运作可以通过在复位后写0到resync来恢复.
zWMA、AAC:更多健全的重新同步.
zWMA、AAC:如果重新同步被执行,广播方式将自动激活.
广播方式使检查文件大小的功能失效,并且继续解码,直到SM_CANCEL被设置或执行复位.
z高音控制修正(音量改变可能会导致产生错误)VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
78/80zMPEG阶层I单声道的修正.
zMPEG阶层II解决了半速率解码(帧大小被错误计算了).
zMPEG阶层II解决了准确性问题,无效的组值会设置为0.
zWAV解析器现在可以跳过未知的RIFF集合.
zIMAADPCM:最大的块大小现在是4096字节(4088个立体声采样,8184个单声道采样),因此现在可以播放44100Hz立体声了.
z实时midi:在复位时如果GPIO0='0'、GPIO1='1',即可启动此模式,而GPIO2和3则提供了earSpeaker的设置.
zNewSinTest()和NewSinSweep()增加了(AIADDR=0x4020/0x4022)AICTRL0和AICTRL1来设置左/右的正弦频率.
z清除存储器是在SPI引导之前,而不是在InitHardware()内.
VS1053b中已知的问题、故障或特征z设置音量会清除S_REFERENCE_SEL和SS_AD_CLOCK位,请参阅章节8.
7.
2.
z软件复位清除了GPIO_DDR,这会影响到I2S的引脚.
zOggVorbis在开窗时偶而会溢出,这是音频上一个小故障引发的,已经有补丁可用.
zIMAADPCM编码需要一个短的补丁来启动.
补丁的用法在第9.
8.
1章中有说明.
VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
79/8012文档版本修订历史本章节描述本文中的重要变动.
VS1053b的版本1.
01,2008‐05‐22z增加IMAADPCM补丁到章节9.
8.
1中.
VS1053b的版本1.
0,2008‐05‐12z产品版本移走"PRELIMINARY"标签.
z更新第4章内表格中的数值.
z修改最小温度回到‐30℃.
z修改最大SCI速度为CLKI/7.
VS1053b的版本0.
5,2007‐12‐03zOggVorbis即时录音文档在章节9.
7中.
z增加立体声ADPCM录音和一个例子到章节9.
8中.
z增加WAVPCM标头例子到章节9.
6中.
z简明的LQFP‐48接线图(第6章)移走了图片中的一张.
VS1053b的版本0.
4,2007‐09‐06z第一个公开版本.
z完全重写的第9.
5章节:操作/播放和解码.
新的设计应该是基于此新版本上.
z更新图片3:用于LQFP‐48的典型接线图.
z重命名SM_OUTOFWAV、SM_CANCEL.
z很多次要的修正,向象错别字更正等.
VS1053a的版本0.
3,2007‐01‐16zI2S引脚现在是GPIO4‐GPIO7,它们不再和GPIO0、GPIO1重叠.
z附加参数的结构更新(版本3),位置修改到X:0x1e00.
中文版版本1.
01,2008‐08‐01译者:醇酒Email:chunjiu@139.
comURL:http://www.
icdev.
com.
cn/uid/474VS1053bVersion1.
01UnitedLinkTechnologies(S)PteLtd.
80/8013联系信息VLSISolutionOyEntranceG,2ndfloorHermiankatu8FIN‐33720TampereFINLANDPhone:+358‐3‐3140‐8200Fax:+358‐3‐3140‐8288Email:sales@vlsi.
fiURL:http://www.
vlsi.
fi/代理商:联合科技有限公司UnitedLinkTechnologies(S)PteLtd.
Phone:+85236940301Fax:+85236940302Email:unitedlink@unitedlink.
hkURL:http://www.
unitedlink.
hk/
官方网站:点击访问CDN客服QQ:123008公司名:贵州青辞赋文化传媒有限公司域名和IP被墙封了怎么办?用cloudsecre.com网站被攻击了怎么办?用cloudsecre.com问:黑客为什么要找网站来攻击?答:黑客需要找肉鸡。问:什么是肉鸡?答:被控的服务器和电脑主机就是肉鸡。问:肉鸡有什么作用?答:肉鸡的作用非常多,可以用来干违法的事情,通常的行为有:VPN拨号,流量P2P,攻击傀儡,...
专心做抗投诉服务器的VirtVPS上线瑞士机房,看中的就是瑞士对隐私的保护,有需要欧洲抗投诉VPS的朋友不要错过了。VirtVPS这次上新的瑞士服务器采用E-2276G处理器,Windows/Linux操作系统可选。VirtVPS成立于2018年,主营荷兰、芬兰、德国、英国机房的离岸虚拟主机托管、VPS、独立服务器、游戏服务器和外汇服务器业务。VirtVPS 提供世界上最全面的安全、完全受保护和私...
CloudServer是一家新的VPS主机商,成立了差不多9个月吧,提供基于KVM架构的VPS主机,支持Linux或者Windows操作系统,数据中心在美国纽约、洛杉矶和芝加哥机房,都是ColoCrossing的机器。目前商家在LEB提供了几款特价套餐,最低月付4美元(或者$23.88/年),购买更高级别套餐还能三个月费用使用6个月,等于前半年五折了。下面列出几款特别套餐配置信息。CPU:1cor...
30chun.com为你推荐
网罗设计网络设计, 计算机德尔,哪个好,哪个能赚钱?站酷zcool有什么很好的平面设计如ZCOOL这种的好网站?云计算什么是云计算?关键字关键词编故事lunwenjiance我写的论文,检测相似度是21.63%,删掉参考文献后就只有6.3%,这是为什么?同ip网站一个域名能对应多个IP吗789se.com莫非现在的789mmm珍的com不管了www.kanav001.com长虹V001手机小游戏下载的网址是什么ip查询器怎么样查看自己电脑上的IP地址www.hyyan.comdota屠夫怎么玩?从初期到后期的装备是什么?
美国网站空间 虚拟主机测评 虚拟主机提供商 台湾服务器租用 免费试用vps 5折 raksmart 云鼎网络 国外代理服务器地址 可外链网盘 国外代理服务器软件 免费活动 1g内存 酷番云 四核服务器 超级服务器 视频服务器是什么 新加坡空间 atom处理器 华为k3 更多