版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于STM32的MP3播放器设计摘要MP3播放器从原理上看是一个具有MP3播放功能的微型电脑。在MP3播放器小小的机身里,拥有MP3播放器存储器(存储卡)、MP3播放器显示器(大部分为LCD显示屏)、MP3播放器中央处理器[MCU(微控制器)或MP3播放器解码DSP(数字信号处理器)等。微处理器是播放器的“大脑”,用来接受用户选择的播放控制,并将当前播放的歌曲信息显示在液晶显示屏上,然后向数据信号处理芯片发出指令,音频信号将能够准确地被处理。我们可以通过数据传输线(USB)或WIFI局域网将MP3与PC进行连接,将自己喜欢的音频文件通过网络下载并导入到MP3中。总而言之,是这个信息化世界智慧的结晶。而本设计就是利用信盈达科技有限公司出产的STM32解码板和核心板上的VS1053芯片,通过在KEIL软件中对VS1053芯片进行C语言驱动代码的编写,来驱动一个具有简单功能的开发版MP3播放器。关键词:MP3播放器、SPI通信、代码编写、MP3playerdesignbasedonstm32AbstractInprinciple,MP3playerisamicrocomputerwithMP3playingfunction.InthesmallbodyofMP3player,thereareMP3playermemory(memorycard),MP3playerdisplay(mostlyinLCDdisplay),MP3playercentralprocessor(MCU)orMP3playerdecodingDSP(digitalsignalprocessor),etc.Themicroprocessoristhe"brain"oftheplayer,whichisusedtoaccepttheplaybackcontrolselectedbytheuser,displaythecurrentlyplayedsonginformationontheLCDscreen,andthensendinstructionstothedatasignalprocessingchip,andtheaudiosignalwillbeprocessedaccurately.WecanconnectMP3andPCthroughUSBorWiFiLAN,downloadandimportourfavoriteaudiofilesintoMP3throughthenetwork.Allinall,itisthecrystallizationofthewisdomoftheinformationworld.ThisdesignistouseSTM32decodingboardandvs1053chiponthecoreboardproducedbysinyindaTechnologyCo.,Ltd.todriveadevelopmentversionMP3playerwithsimplefunctionsbycompilingthedrivecodeofvs1053chip.Keywords:mp3player、SPIcommunication、codewriting目录1前言1.1本设计的目的、意义及应达到的技术要求 61.2本设计在国内外的发展概况及存在的问题 71.3本设计应解决的主要问题 72本设计 82.1设计原理 82.2方案选择 82.3分析问题 92.4设计过程 92.4.1VS1053解码器通信接口 92.4.2VS1053解码器通信协议 102.4.3VS1053关键寄存器 模式控制寄存器MODE 时钟频率加乘数寄存器CLOCKF 音量控制寄存器VOL 162.4.4解码器硬件复位 162.4.5解码器软件复位 172.4.6音频通道选择器初始化 172.5代码编写 182.5.1解码器底层接口函数实现 182.5.2解码器复位函数实现 硬件复位 软件复位 222.5.3配置寄存器 232.5.4音频通道选择器初始化 232.5.5利用VS1053播放一首歌曲 242.6硬件测试 253结论 26参考文献 27致谢 28附录 291前言随着时代的发展,在当今的时代背景下,低延迟为核心的5G网络、嵌入式系统、物联网、云计算等新崭技术已经成为了现今电子信息技术发展的主要角色,从产业发展的角度来说,这已经是一股无法逆转的浪潮。而嵌入式系统正是电子信息科技应用中最为核心的一部分,成为了新世纪最具生命力的技术之一。伴随着消费类电子产业的发展的逐步壮大,各种各样的嵌入式电子产品走进了人们的视野中,进入到生活的方方面面。电脑也从以前的老式大块头PC机变得五花八门,六角形游戏主机、轻薄本、游戏本等形态,各式各样的嵌入式系统在出现在社会的各个角落中,在这之中,ARM公司推出的芯片受到了许多用户的赞赏。ARM芯片由于其功耗低、性能高、体积小、成本低等诸多特点越来越广泛地受到了各企业的重点注意,成为了许多企业开发产品首要考虑采用的硬件芯片。本课题的制作的MP3也是基于ARM平台的STM32系列芯片。VS1053是VLSI公司VSXX系列里面性能最为出色的一款,支持MP3、WMA、WAV、MIDI、FLAC……音频格式,支持硬件FFT频谱,DAC音频输出驱动器可以直接驱动32欧姆阻抗的耳机。该芯片的DAC具备有立体声功能,解码效果达到HIFI级别;芯片还有一个最大的特点就是自动化处理数据,内部具有一个2048字节的数据FIFO,我们只需要把音频数据发送给它内部的FIFO就可以了,它内部会自动对音频数据进行处理,自动识别播放的码率,自动播放音乐,自动的产生音乐的频谱数据。2048字节的数据FIFO能缓存音频数据,这样一来CPU就有足够的时间去处理其它的事情了,不需要每时每刻都在传输音频数据给VS1053。本课题以VS1053B为目标芯片,以此研究如何实现MP3播放器。1.1本设计的目的、意义及应达到的技术要求目前智能手机所拥有的功能越来越多,MP3的功能也被整合到了手机中,但是音乐播放仅仅为手机的功能之一,而音乐播放却是MP3的主要职责。对于普通人来说,手机已经能很好地满足日常需求,而对于音乐发烧友或职业音乐人来说,MP3才是作为播放系统中前端的优选。而且手机的插孔所输出的电流不能满足部分高档耳机需要的工作电流,而MP3播放器则能让耳机以满功率输出音乐,达到最优播放效果这也是为何在智能手机日益发展的今天MP3音乐播放器仍像数码相机一样经久不衰的原因。在大多数MP3播放器所支持的音频格式中,MP3格式是最为常见的,它支持的歌曲为44.1KHz采样率,比特率范围一般是8-256Kbps。越高档的MP3支持的比特率范围自然越大,从各种角度上看MP3支持的范围自然是越广越好的。1.2本设计在国内外的发展概况及存在的问题世界上第一台MP3播放器是Saehan公司在1998年推出的MPManF10。虽然该设备发售后就像浪花一样消失在电子产品的浪潮中,不过MPManF10的出现启动了MP3市场,导致许多的电子厂商开始着手研发MP3设备。RioPMP300在1998年底被美国的帝盟公司推出,这是第一个给全世界的人们留下了深刻印象的MP3。随着MP3这一产品的迅猛发展,到了2004年,MP3播放器从内存、机身、音质上的发展无法再吸引更多人们的目光之时,MP3便开始了往多功能设备发展的趋势。正如十几年来在手机上所发生的事一样,人们对于MP3的要求越来越高,从单纯的进行音乐播放,到像手机一样既能打电话又能拍照、上网……,不过,消费类电子产品的一大发展趋势是一个产品融合多个功能,就像IPHONE第一代发布时乔布斯说的“AnIpod,Aphone,Aninternetcommunicate”。在中国首次推出彩色屏幕的MP3后,韩国iRiver趁势率先推出拥有拍摄功能的MP3。到了今日,MP3领域的领先地位依旧被韩国企业占据。MP3已经成为了便携播放设备类的一个主流产品,而且在手机之后也成为了最为广泛使用的个人随身电子产品。至于MP3格式的局限性,MP3格式的文件有一些限制是不能通过使用更好的编码器来绕过的,例如:最大位速是320kbps;相对于变化迅速的信号来说,时间的分辨率太低;对于超过15.5/15.8kHz的频率没有尺度因子带*1;Jointstereo*2是基于帧与帧完成的;没有定义编码器/解码器的整体时延,这就说明了gaplessplayback缺少一个正式的规定。虽然有以上限制,但是一个经过优秀调教MP3播放器也是能够地出色地完成编码任务的。1.3本设计应解决的主要问题在STM32上驱动一款芯片需要了解这款芯片的基础硬件结构,和在STM32上对应连接到的管脚等信息,并在KEIL软件上通过C语言编程的方式对芯片的驱动代码进行编写,令芯片能够按照开发者的要求进行运作。故目前的主要问题是如何在KEIL中进行VS1053B的芯片驱动代码编写,使VS1053B芯片能在STM32开发板上顺利运行。。2本设计2.1设计原理STM32解码板STM32解码板STM32核心板LCD显示屏VS1053VS1053解码器硬、软件复位VS1053关键寄存器SPI硬、软件复位VS1053关键寄存器SPI通信外接74HC4052模拟通道选择器件驱动代码编写驱动代码编写图2.0MP3项目结构图2.2方案选择在硬件的选择方面,经过数家MP3开发板套件的比较,我最终选用了信盈达公司的STM32-M3核心板和配套的解码板进行该项目,该开发板硬件已配套MP3系统的基础代码,用户需使用哪项功能,则仅需专门对该功能另外进行芯片驱动代码编写即可达到开发编程的目的。决定MP3播放器性能的是它的解码芯片,该芯片不仅决定了MP3进行音频文件处理的速度,也决定了MP3能够给用户带了什么特殊音效,包括左右混响、3D音效等特殊音效。而使用较差的MP3解码芯片所带来的后果不仅仅只是降低音质,而且还很可能无法支持高采样率的MP3音频文件。市面中最常见的MP3播放器芯片有:Atmel,VLSI,Sigmatel,Actions,Sunplus(凌阳),PHILIPS,MosArt(华矽),Telechip,ST,CRYSTAL等。芯片备选方案中包含WM8978和VS1053B这两款芯片,而1053可以编解码的(带adc、dac),8978只是音频ADC、DAC功放(编解码需要mcu完成),故本项目选用的芯片为VLSI公司的VS1053b芯片,这片解码芯片性能强劲,能够满足本次设计的所有需求。在驱动代码的方案选择上,编写STM32-M3的驱动代码毫无疑问应选择C语言来进行编写。C语言是一门面向过程的、抽象化的通用程序设计语言,并广泛应用于底层开发。C语言能够以简单的方式对低级处理器进行编译和处理。C语言是一种仅产生少量的机器语言并且不需要任何运行环境支持就能进行运行的高效率程序设计语言。虽然C语言提供了许多低级处理的功能,但它仍然保持了跨平台的特性,以一个标准规格编写出来的C语言程序可以在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。软件方面我选择的是美国KeilSoftware公司所出品的Keil软件来进行本项目的代码编写。该软件开发系统,是以51系列兼容单片机C语言为主的。Keil软件提供了完成代码编写所需要的C编译器、链接器、宏汇编、库管理以及一个功能强大的仿真调试器等在内的一套完整的开发方案。WIN98、NT、WIN2000、WINXP、WIN10等主流操作系统可以运行Keil软件。如果开发者需要进行C语言编程,Keil几乎就是开发者的首选,如果开发者不使用C语言而仅仅使用汇编语言来进行编程,Keil所具有的方便易用的集成环境、强大的软件仿真调试工具也会开发者户事半功倍。2.3分析问题要驱动在STM32上的VS1053B芯片,编写驱动代码时主要需要解决的问题是:选择VS1053解码器的哪个通信接口进行通信、编写VS1053解码器的通信协议代码、通过读芯片配套的原理图决定选择哪几个VS1053解码器的寄存器进行置位操作、编写软件复位代码、编写硬件复位代码。硬件连接方面则使用USB-AtoUSB-MINI-B型连接线、ST-LINK烧录器以及连接口转换插板配合来进行PC到项目硬件的连接和项目代码的烧录。2.4设计过程 以下对项目代码设计所必要的各项步骤进行思路分析。2.4.1VS1053解码器通信接口VS1053支持SPI和IIS两种通信接口,这里我们选择SPI作为VS1053和STM32的通信接口。通过查询开发板原理图得知:图2.1VS1053解码板管脚配置通过翻阅芯片说明书得知在SPI模式下需要用到的设置为:表2.1SPI引脚对应STM32引脚及模式设置VS1053引脚连接到STM32引脚STM32引脚的模式VS串行数据输出SOPA6上拉输入VS串行数据输入SIPA7复用推挽输出,时钟50MVS串行时钟SCLKPA5复用推挽输出,时钟50MVS命令操作片选XCSPF7通用推挽输出,时钟2MVS数据操作片选XDCSPF6通用推挽输出,时钟2MVS数据请求引脚DREQPC13下拉输入VS复位引脚XRESTPE6通用推挽输出,时钟2M有两个独立的输入/输出引脚,故工作方式选择全双工通过查阅芯片手册和原理图和参考本文中2.4.2进行的分析,可以了解到所需要进行的SPI配置为:1工作方式—全双工2数据长度—8位3数据发送顺序—高位先发4通信速度——9.2M5通信协议——选择模式0VS1053的2048字节FIFO是否可以接收数据是通过DREQ信号引脚来反馈的,如果该引脚是高电平,则说明VS1053b可以接受最少为32字节的SDI数据或者接收一条SCI命令,低电平则代表不能接收数据。2.4.2VS1053解码器通信协议VS1053解码器有两种通信协议,分别是:串行数据接口的串行协议(SDI)和串行命令接口的串行协议(SCI)。VS1053b串行协议支持两种模式,分别是VS1002本地模式和VS1001兼容模式。VLSI公司建议用户使用VS1002本地模式。串行数据接口的串行协议(SDI)在VS1002本地模式下(SM_NEWMODE是1),字节同步是由XDCS完成的,可以任意定义数据(SDATA信号)在时钟信号DCLK的上升沿或下降沿上,字节传送可以设置为MSb(高位)在前或LSb(低位)在前,这取决于SCI_MODE中内容的定义。需要我们编程时在SCI_MODE寄存器进行选择。主机发送音频数据给VS1053b必须要在数据请求线DREQ变为高电平的时候才可以,DREQ变为高电平代表VS1053b的数据FIFO至少可以接受32字节的音频数据。注意发数据之前需要把数据片选拉为低电平。串行命令接口的串行协议(SCI)串行命令接口SCI的串行总线协议包括:一个指令字节、一个地址字节(寄存器地址)和一个16位的数据字。指令字节决定的是访问的方向,地址字节决定是操作哪个寄存器。每次读取操作或写入操作均可以访问一个寄存器。由于那些数据位是在SCK的上升沿读取的,所以用户只能在SCK的下降沿上更新数据。每个字节的MSb(高位)总是被首先发送。在整个传送操作的期间,XCS必须要保持为低电平。SCI操作方向由指令字节来定义。查阅VS1053芯片手册可知:表2.2SCI串行协议操作指令表指令名称操作码操作READ0b00000011读取数据WRITE0b00000010写入数据则:SCI写操作指令:0X02SCI读操作指令:0X03图2.2串行数据接口串行协议图为了统一SPI的时序,我们选择数据位是在SCK的上升沿有效,每个字节的MSb先发。查阅STM32中文手册知:位1CPOL:时钟极性(Clockpolarity)
0:空闲状态时,SCK保持低电平
1:空闲状态时,SCK保持高电平
注意:正在通信时不应更改此位。
不适用于I2S模式和SPITI模式位0CPHA:时钟相位(Clockphase)
0:从第一个时钟边沿开始采样数据
1:从第二个时钟边沿开始采样数据
注意:正在通信时不应更改此位。
不适用于I2S模式和SPITI模式则时钟空闲为低电平,数据采样从第一个时钟边沿开始。(就是SPI4种模式里面的模式0)图2.3串行命令读协议图图2.4串行命令读协议图解释图2.5串行命令写协议图图2.6串行命令写协议图解释 由上图知指令数据长度为8位。图2.7串行SPI时序图 表2.3SPI时序图注释符号最小最大单位tXCSS5nstSU0nstH2CLKI周期tZ0nstWL2CLKI周期tWH2CLKI周期tV2(+25ns)CLKI周期tXCSH1CLKI周期tXCS2CLKI周期tDIS10ns表2.4芯片推荐工作值参数符号最小典型最大单位工作环境温度-30+85℃模拟和数字地AGNDDGND0.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%由上两个表可知tWL和tWH占4个CLKI周期,又因为STM32内部时钟频率晶振为36.864MHz,则通信速度为36.864/4=9.2M2.4.3VS1053关键寄存器模式控制寄存器MODE表2.5SCI_MODE寄存器配置表位元名称功能值说明0SM_DIFF差分0
1正常的同相音频
左通道反相1SM_LAYER12允许MPEGlayersI&II0
1不允许
允许2SM_RESET软件复位0
1不用复位
复位3SM_CANCEL取消当前的文件解码0
1不取消
取消4SM_EARSPEAKER_LOEarSpeaker低设定0
1关闭
激活5SM_TESTS允许SDI测试0
1不允许
允许6SM_STREAM流模式0
1不是
是7SM_EARSPEAKER_HIEarSpeaker高设定0
1关闭
激活8SM_DACTDCLK的有效边沿0
1上升沿
下降沿9SM_SDIORDSDI位顺序0
1MSb在前
MSb在后10SM_SDISHARE共享SPI片选0
1不共享
共享11SM_SDINEWVS1002本地SPI模式0
1非本地模式
本地模式12SM_ADPCMADPCM录音激活0
1不激活
激活13‐-0
1正确的
错误的14SM_LINE1咪/线路1选择0
1MICP
LINE115SM_CLK_RANGE输入时钟范围0
112..13MHz
24..26MHz通过对VS1053手册上该表格后的各位解释说明进行分析,发现该寄存器仅第11位置1,其他置0,则该寄存器的置位方案为0X0400(设定SPI的一些特性)图2.8核心板所连接的解码板外部电路部分截选VS1053b通常运作在一个频率为12.288MHz基频的主时钟上。时钟可以通过外部的电路(连接到引脚XTALI)或通过内部的时钟晶振接口(连接到XTALI和XTALO引脚)来产生的。这个时钟用来给模拟部件确定最高的可用采样率。在12.288MHz下,最高到48000Hz的所有采样率都可用。时钟频率加乘数寄存器CLOCKF 通过查阅VS1053手册知该寄存器的设定频率主要会影响芯片能解码的采样率。查阅VS1053手册知:如果需要典型值,则内部乘法器值在复位之后必须设置为3.5x,等待DREQ升高之后,将数值0x9800写入CI_CLOCKF。将0x9800写入该寄存器能达到最优性能。音量控制寄存器VOL 通过查阅VS1053手册知该寄存器用于设定VS1053的音量大小。这个音量寄存器的高字节是控制左通道音量的,低字节是控制右通道音量的。对每个通道,数值在0..254的范围内设置可以实现在最大音量级别内的微调(步长0.5dB)。左通道数值是通过乘上256后再加到这个数值上的。所以,最大的音量是0、无声是0xFEFE。设置SCI_VOL为0xFFFF将会使模拟单元进入掉电模式(降低功耗)2.4.4解码器硬件复位VS1053有一个复位引脚,低电平有效。当XRESET信号被驱动到低电平,VS1053b将重置所有的内部状态和控制寄存器为它们的初始值。如果我们没有播放音乐,可以复位VS1053让它省电。在进行硬件复位(或上电)操作之后,DREQ将在低电平上停留最少22000个时钟周期,这对于运行在12.288MHz的VS1053b上来说,大约是1.8毫秒。随后用户应该在开始解码之前事先设置SCI_MODE、SCI_BASS、SCI_CLOCKF和SCI_VOL这几个基本软件寄存器。即复位后大概要等待1.8ms才能设置寄存器。2.4.5解码器软件复位在某些情况下,解码器需要通过软件来进行复位操作。软件复位是通过激活SCI_MODE寄存器中的SM_RESET位来实现的,在这之后需要等待最少2微秒后再去查询DREQ状态。DREQ将在低电平上停留最少22000个时钟周期,对于运行在12.288MHz的VS1053b上来说,大约是1.8毫秒。然后等DREQ上升变为高,就可以像平常那样继续播放了。软件复位并不会复位寄存器。软件应用:用于VS1053出现播放故障时,进行复位的。2.4.6音频通道选择器初始化通过阅读配套手册得知,因为本项目使用的开发板套件上面外接了一个74HC4052模拟通道选择器件,根据开发板上面的原理图我们可以知道VS1053的音频源是接到74HC4052的通道0。根据74HC4052的真值表可以知道我们需要把PD7和PB7都输出低电平。图2.9开发板音频源管理图表2.674HC4052的真值表Inputs‘‘ON’’ChannelsInhABXYHXXNoneNoneLLL0X0YLLH1X1YLHL2X2YLHH3X3Y2.5代码编写2.5.1解码器底层接口函数实现需要进行编写的VS1053底层函数有:1.IO口初始化函数2.SPI初始化函数3.SPI发送函数4.SPI接收函数5.SPI设定通信速度的函数6.VS1053SCI操作7.VS1053SDI操作 接下来将对以上七个部分的代码进行编写及部分简要说明。1.IO口初始化函数 首先进行时钟使能,然后对负责SPI的寄存器管脚置位、然后分别对PE6、PF7、PC13、PF6管脚置位。voidvs1053_port_init(void){RCC->APB2ENR|=(1<<2);//开PA时钟RCC->APB2ENR|=(1<<6);//开PE时钟RCC->APB2ENR|=(1<<4);//开PC时钟RCC->APB2ENR|=(1<<7);//开PF时钟 /*配置SPI1引脚*/ GPIOA->CRL&=~(0XFFFU<<5*4); GPIOA->CRL|=(0XB8BU<<5*4); GPIOA->ODR|=(1<<6);//XRESET--PE6通用推挽输出时钟2MGPIOE->CRL&=~(0XF<<6*4);GPIOE->CRL|=(0X2<<6*4);GPIOE->ODR|=(1<<6);//DREQPC13下拉输入GPIOC->CRH&=~(0XF<<(13-8)*4);GPIOC->CRH|=(0X8<<(13-8)*4); //XCSPF7通用推挽输出时钟2MGPIOF->CRL&=~(0XFU<<7*4);GPIOF->CRL|=(0X2U<<7*4);GPIOF->ODR|=(1<<7); //XDCSPF6通用推挽输出时钟2M GPIOF->CRL&=~(0XF<<6*4);GPIOF->CRL|=(0X2<<6*4);GPIOF->ODR|=(1<<6);}—————————————————————————————————————2.SPI初始化函数按照前文2.4.2进行的分析和对通过查阅芯片手册和原理图,可以了解到所需要进行的SPI配置为:voidvs1053_spi_init(void){/*配置SPI1的工作状态*/RCC->APB2ENR|=(1<<12);//设定波特率SPI1->CR1&=~(0x7<<3);SPI1->CR1|=(0x7<<3);//256分频72M/256//设定数据帧SPI1->CR1&=~(0x1<<11);SPI1->CR1&=~(0x1<<7);//设定工作模式SPI1->CR1&=~(0x1<<15);SPI1->CR1&=~(0x1<<10);//设定时序SPI1->CR1|=(0x1<<1);SPI1->CR1|=(0x1<<0);//设定SPI主/从机软件管理SPI1->CR1|=(0x1<<9);SPI1->CR1|=(0x1<<8); SPI1->CR1|=(0x1<<2);//使能SPISPI1->CR1|=(0x1<<6);}3.SPI发送函数voidvs1053_spi_send_byte(u8data){//等待前面的发送完成while(!(SPI1->SR&(1<<1)));//给数据DR寄存器SPI1->DR=data;//等待接收完成(无用的数据)while(!(SPI1->SR&(1<<0)));data=SPI1->DR;}4.SPI接收函数u8vs1053_spi_receive_byte(void){u8data;//等待前面的发送完成while(!(SPI1->SR&(1<<1)));//给数据DR寄存器SPI1->DR=0xff;//等待接收完成while(!(SPI1->SR&(1<<0)));data=SPI1->DR;returndata;}—————————————————————————————————————5.SPI设定通信速度的函数因为VS1053的寄存器操作的数据要比数据操作的数据要慢,不能用操作数据的速度操作它的寄存器,如果把操作数据的速度调到符合寄存器操作,会造成传输数据很慢。voidvs1053_spi_set_speed(u8speed){while(SPI1->SR&(1<<7));SPI1->CR1&=~(0x1<<6);SPI1->CR1&=~(0x7<<3);SPI1->CR1|=(speed<<3);//SPI1->CR1|=(0x1<<6);}—————————————————————————————————————6.VS1053SCI操作SCI操作:操作VS1053的寄存器一定要注意降低SPI的通信速度,操作完后可以把SPI速度调高。操作寄存器要确保XCS指令片选为低电平,XDCS数据片选为高电平。参考VS1053手册注意事项,得知由于tWL+tWH+tH是6×CLKI+25ns,所以SCI的最大读取速度是CLKI/7。 SCI操作速度:小于4M 寄存器操作需要用到寄存器地址,我们可以先把所有的寄存器地址定义处理。#defineVS1053_SPI_LOW4//SPI32分频72M/32=2.25M#defineVS1053_SPI_HIGHT2//SPI8分频72M/8=9M#defineVS1053_W_CMD 0x02//写操作指令#defineVS1053_R_CMD 0x03//读操作指令#defineSCI_MODE 0x00//寄存器地址SCI写寄存器voidvs1053_write_reg(u8addr,u16data)//将数据写进哪个寄存器里{ vs1053_spi_set_speed(VS1053_SPI_LOW); GPIOF->ODR|=(1<<6);//XDCS=1 GPIOF->ODR&=~(1<<7);//XCS=0 vs1053_spi_send_byte(VS1053_W_CMD); vs1053_spi_send_byte(addr); vs1053_spi_send_byte(data>>8); vs1053_spi_send_byte(data&0XFF); GPIOF->ODR|=(1<<7);//XCS=1 vs1053_spi_set_speed(VS1053_SPI_HIGHT);}SCI读寄存器u16vs1053_read_reg(u8addr){ u16temp; u8templ,temph; vs1053_spi_set_speed(VS1053_SPI_LOW); GPIOF->ODR|=(1<<6); GPIOF->ODR&=~(1<<7); vs1053_spi_send_byte(VS1053_R_CMD); vs1053_spi_send_byte(addr); temph=vs1053_spi_receive_byte(); templ=vs1053_spi_receive_byte(); GPIOF->ODR|=(1<<7); vs1053_spi_set_speed(VS1053_SPI_HIGHT); temp=temph<<8|templ; returntemp;}—————————————————————————————————————7.VS1053SDI操作SDI操作:主机必须要在数据请求线DREQ变为高电平的时候才可以发送音频数据给VS1053b,DREQ变为高电平代表VS1053b的数据FIFO至少可以接受32字节的音频数据。发数据之前需要把数据片选拉为低电平。编写时并没有判断数据请求线是否变为高电平,是因为我们在调用这个函数的时候才做判断SDI操作速度:小于9.2MSDI操作函数voidvs1053_write_fifo(u8*data){ u8i; GPIOF->ODR&=~(1<<6); for(i=0;i<32;i++) { vs1053_spi_send_byte(data[i]); } GPIOF->ODR|=(1<<6);}2.5.2解码器复位函数实现硬件复位 硬件复位操作的是PE6引脚,先将PE6拉成高电平,在将PE6复位回低电平,硬件复位完成后再把PE6拉高即完成硬件复位。硬件复位函数:voidvs1053_hard_reset(void){GPIOE->ODR|=(1<<6);delay_ms(10);GPIOE->ODR&=~(1<<6);delay_ms(10);GPIOE->ODR|=(1<<6);delay_ms(10);}软件复位软件复位是通过激活SCI_MODE寄存器中的SM_RESET位来实现的。先编写一段寄存器的写操作代码,编写时确保XCS拉低片选脚时XDCS保持高电平。由前可知SCI操作速度较慢,故编写SCI写操作代码时先将通信速度调低,待通信结束后将速度调回至告诉。读操作代码与写操作代码步骤大致相同,SPI的数据宽度为8位,故使用两个参数来接收SPI读取到的16位数据。操作寄存器必须整体操作,对于SCI_MODE寄存器的里的数据我们不清楚,所以要先把VS1053SCI_MODE寄存器的内容读出来,再把SM_RESET位置1,然后再把这个数写进寄存器。软件复位函数voidvs1053_soft_reset(void){u16temp;temp=vs1053_read_reg(SCI_MODE);temp|=1<<2;vs1053_write_reg(SCI_MODE,temp);delay_ms(2);}2.5.3配置寄存器使用前面步骤里编写好的寄存器写函数对SCI_MODE、SCI_CLOCKF、SCI_VOL分别进行置位即可。配置寄存器函数voidvs1053_init(void){//引脚初始化vs1053_port_init();//SPI初始化vs1053_spi_init();//硬件复位vs1053_hard_reset();//配置VS1053的工作状态vs1053_write_reg(SCI_MODE,0X0800);//配置VS1053最优的工作解码vs1053_write_reg(SCI_CLOCKF,0X9800);//设定默认的音量vs1053_write_reg(SCI_VOL,0X1E1E);}2.5.4音频通道选择器初始化使用上两步里编写好的寄存器写函数对PD7和PB7分别进行置位即可。音频通道选择器初始化函数voidhc4052_port_init(void){ //APD7BPB7 //1.开时钟A-2B-3C-4D-5E-6F-7 RCC->APB2ENR|=(1<<5);//开PD时钟 RCC->APB2ENR|=(1<<3);//开PB时钟 //2.配引脚功能 //APD7推挽输出时钟2M GPIOD->CRL&=~(0XFU<<7*4); GPIOD->CRL|=(0X2U<<7*4); GPIOD->ODR&=~(1<<7);//输出低电平 //BPB7推挽输出时钟2M GPIOB->CRL&=~(0XFU<<7*4); GPIOB->CRL|=(0X2U<<7*4); GPIOB->ODR&=~(1<<7);//输出低电平}2.5.5利用VS1053播放一首歌曲要知道什么时候才可以发送数据给VS1053,能不能发送数据给VS1053是由DREQ引脚进行反馈的,需要等到这个引脚变为高电平才能发送数据给VS1053,至少可以发送32个字节。发送数据给VS1053时需要注意将XDCS片选引脚拉为低电平。下面对该部分代码以注释方式进行思路描述。FR_OK=0u8mp3buff[2048];//2k大小的buffvoidvs1053_play_music(void){ FRESULTres; FILfp; UINTbr; u32cnt=0; res=f_open(&fp,"0:/讲不出再见-谭咏麟.mp3",FA_READ);//只读的方式打开一首歌 if(res!=FR_OK)while(1);//如果打开不成功 else { while(1)//一首歌数据很大,用while循环读数据 { res=f_read(&fp,mp3buff,sizeof(mp3buff),&br);//读取打开的fp文件,读取sizeof(mp3buff)字节,返回读了多少字节if(br==0)break;//读取文件完毕 if(res!=FR_OK)while(1);//读取文件失败 else { while(cnt<sizeof(mp3buff)) { if(GPIOC->IDR&(1<<13))//判断是否可以给数据VS1053,如果为高电平,可以给至少32个字节 {vs1053_write_fifo(&mp3buff[cnt]);//调用外部函数write_fifo对VS1053的fifo进行歌曲数据传入cnt=cnt+32; } else { OSTimeDlyHMSM(0,0,0,20);//MP3任务主动放CPU,否则其它地方用不了CPU } } cnt=0; } } }}2.6硬件测试 将MP3开发套件通过USB线连接至电脑进行供电,通过杜邦线及转换板、ST-LINK代码烧录器与电脑通过USB口相连进行通信,在KEIL软件中将开发套件配套的部分底层代码及自己编写的VS1053驱动代码烧录进套件中,能成功进入MP3界面并播放音乐。图2.10测试结果3结论 通过对VS1053驱动代码的学习和编写,我成功地编写出了在STM32开发板上驱动VS1053基础功能的代码。经测试,本项目采用的VS1053开发套件能成功地通过3.5MM耳机接口播放出音乐,声音清晰,性能良好,符合项目基本预设目标。 制作过程中,刚开始制作时会有点无从下手,不过在上网学习了一些如何驱动STM32单片机的步骤和回看了一下《微机原理与接口技术》的课本后稍微有了一些头绪,随着不断回顾C语言知识、单片机知识和学习新的编程知识,我逐渐明白了单片机芯片的工作原理和编程步骤,理解了单片机的编程思路,一点一点地实现VS1053的驱动。参考文献[1]张连明百度百科mp3(能播放音乐文件的播放器)/item/mp3/9858706?fr=aladdin,2020-04-5[2]VS1053bVersion1.01UnitedLinkTechnologies(S)PteLtd.1/80VS1053b-OggVorbis/MP3/AAC/WMA/MIDI音频编解码器芯片手册,联合科技有限公司,2008‐05‐22[3]意法半导体集团公司STM32F4xx中文参考手册,2013年2月19日[4]郭金旭百度百科c语言/item/c%E8%AF%AD%E8%A8%80/105958?fr=aladdin,2020-04-5[5]谭浩强《C程序设计(第五版)》“十二五”普通高等教育本科国家级规划教材清华大学出版社ISBN:9787302481447,2017-7-20[6]符意德《嵌入式系统设计原理及应用(第2版)》清华大学出版社ISBN:9787302222231,2014-2-24[7]PeepFuture关于VS1053的一些说明CSDN/qq_41495871/article/details/83686514?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1,2018-11-03[8]happygrilclhVS1053B音频编解码器芯片的介绍(二)CSDN/happygrilclh/article/details/101538508,2019-09-27[9]happygrilclhMP3功能原理及软件方案设计(一)/happygrilclh/article/details/101540322,2019-09-27[10]百度文库MP3音乐播放器芯片VS1053B芯片使用教程/view/64d73b4380eb6294dc886c50.html,2020-04-5谢辞本学期的主要任务——毕业设计项目即将结束了,这也意味着我在北京理工大学为期四年的大学生涯也即将结束了。在大学四年的学习时间里我充满了快乐和收获,感谢电气二班所有的任课老师,是你们让我能够静静地坐下来,在知识的海洋里汲取更多的营养,其中我的论文指导老师蒋伟荣老师对我的关心和支持尤为重要,在此尽享尽享蒋老师致以诚挚的谢意和崇高的敬意。通过论文的撰写,我能够更系统更深入地学习单片机和C语言的知识,并得以借鉴众多行业大牛的宝贵编程经验。为今后的工作和我为之服务的企业,无疑是不可多得的宝贵财富。在由于本人理论水平比较有限,论文中的有些观点以及对该项目工作原理的归纳和阐述难免有疏漏和不足的地方,欢迎老师和专家们指正。附录1.部分文中未提到的源代码FIFO写函数:voidvs1053_write_fifo(u8*data){ u8i; GPIOF->ODR&=~(1<<6);//将PF6片选脚拉低 for(i=0;i<32;i++) { vs1053_spi_send_byte(data[i]);//调用spi发送函数对fifo写入数据 } GPIOF->ODR|=(1<<6);//将PF6片选脚拉高}延时函数:staticvoiddelay_ms(u16nms){ u32i; for(;nms>0;nms--) for(i=0;i<10280;i++);}重置当前解码所用的时间voidvs1053_reset_decode_time(void){vs1053_write_reg(SCI_DECODE_TIME,0x0000);vs1053_write_reg(SCI_DECODE_TIME,0x0000);}获取当前解码所用的时间u16vs1053_get_decode_time(void){ u16time=0;time=vs1053_read_reg(SCI_DECODE_TIME);returntime;}
怎样提高电脑系统运行速度WindowsXP的启动速度比Windows2000要快30%左右,但相对于Windows98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高WindowsXP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统资源,加快电脑运行速度。1.加快系统启动速度WindowsXP的启动速度比Windows2000要快30%左右,但相对于Windows98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高WindowsXP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统资源,加快电脑运行速度。(1)MsconfigWindowsXP的启动速度在系统安装初期还比较快,但随着安装的软件不断增多,系统的启动速度会越来越慢,这是由于许多软件把自己加在了启动程序中,这样开机即需运行,大大降低了启动速度,而且也占用了大量的系统资源。对于这样一些程序,我们可以通过系统配置实用程序Msconfig将它们从启动组中排除出去。选择“开始”菜单中的“运行”命令,在“运行”对话框中键入“Msconfig”,回车后会弹出“系统配置实用程序”对话框,选择其中的“启动”选项卡(如图1),该选项卡中列出了系统启动时加载的项目及来源,仔细查看每个项目是否需要自动加载,否则清除项目前的复选框,加载的项目越少,启动的速度就越快。设置完成后需要重新启动方能生效。(2)BootvisBootvis是微软提供的一个启动优化工具,可提高WindowsXP的启动速度。用BootVis提升WindowsXP的启动速度必须按照正确的顺序进行操作,否则将不会起到提速的效果。其正确的操作方法如下:启动Bootvis,从其主窗口(如图2)中选择“工具”菜单下的“选项”命令,在“符号路径”处键入Bootvis的安装路径,如“C:\ProgramFiles\Bootvis”,单击“保存”退出。从“跟踪”菜单中选择“下次引导”命令,会弹出“重复跟踪”对话框,单击“确定”按钮,BootVis将引导WindowsXP重新启动,默认的重新启动时间是10秒。系统重新启动后,BootVis自动开始运行并记录启动进程,生成启动进程的相关BIN文件,并把这个记录文件自动命名为TRACE_BOOT_1_1。程序记录完启动进程文件后,会重新启动BootVis主界面,在“文件”菜单中选择刚刚生成的启动进程文件“TRACE_BOOT_1_1”。窗口中即会出现“CPU>使用”、“磁盘I/O”、“磁盘使用”、“驱动程序延迟”等几项具体图例供我们分析,不过最好还是让BootVis程序来自动进行分析:从“跟踪”菜单中选择“系统优化”命令,程序会再次重新启动计算机,并分析启动进程文件,从而使计算机启动得更快。(3)禁用多余的服务WindowsXP在启动时会有众多程序或服务被调入到系统的内存中,它们往往用来控制Windows系统的硬件设备、内存、文件管理或者其他重要的系统功能。但这些服务有很多对我们用途不大甚至根本没有用,它们的存在会占用内存和系统资源,所以应该将它们禁用,这样最多可以节省70MB的内存空间,系统速度自然也会有很大的提高。选择“开始”菜单中的“运行”命令,在“运行”对话框键入“services.msc”后回车,即可打开“服务”窗口。窗口的服务列表中列出了系统提供的所有服务的名称、状态及启动类型。要修改某个服务,可从列表双击它,会弹出它的属性对话框(如图3),你可从“常规”选项卡对服务进行修改,通过单击“启动”、“停止”、“暂停”、“恢复”四个按钮来修改服务的状态,并可从“启动类型”下拉列表中修改启动类型,启动类型有“自动”、“手动”、“已禁用”三种。如果要禁止某个服务在启动自动加载,可将其启动类型改为“已禁用”。WindowsXP提供的所有服务有36个默认是自动启动的,实际上,其中只有8个是必须保留的(见下表),其他的则可根据自己的需要进行设置,每种服务的作用在软件中有提示。4)修改注册表来减少预读取,减少进度条等待时间WindowsXP在启动过程中会出现一个进度条,我们可以通过修改注册表,让进度条只跑一圈就进入登录画面。选择“开始”菜单中的“运行”命令,在“运行”对话框键入“regedit”命令后回车,即可启动注册表编辑器,在注册表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters,选择其下的EnablePrefetcher键,把它的键值改为“1”即可。(5)减少开机磁盘扫描等待时间当Windows日志中记录有非正常关机、死机引起的重新启动,系统就会自动在启动的时候运行磁盘扫描程序。在默认情况下,扫描每个分区前会等待10秒钟,如果每个分区都要等上10秒才能开始进行扫描,再加上扫描本身需要的时间,会耗费相当长的时间才能完成启动过程。对于这种情况我们可以设置取消磁盘扫描的等待时间,甚至禁止对某个磁盘分区进行扫描。选择“开始→运行”,在运行对话框中键入“chkntfs/t:0”,即可将磁盘扫描等待时间设置为0;如果要在计算机启动时忽略扫描某个分区,比如C盘,可以输入“chkntfs/xc:”命令;如果要恢复对C盘的扫描,可使用“chkntfs/dc:”命令,即可还原所有chkntfs默认设置,除了自动文件检查的倒计时之外。2.提高系统运行速度提升系统运行速度的思路与加快启动的速度类似:尽量优化软硬件设置,减轻系统负担。以下是一些常用的优化手段。(1)设置处理器二级缓存容量WindowsXP无法自动检测处理器的二级缓存容量,需要我们自己在注册表中手动设置,首先打开注册表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”,选择其下的“SecondLevelDataCache”,根据自己所用的处理器设置即可,例如PIIICoppermine/P4Willamette是“256”,AthlonXP是“384”,P4Northwood是“512”。(2)提升系统缓存同样也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”位置,把其下的“LargeSystemCache”键值从0改为1,WindowsXP就会把除了4M之外的系统内存全部分配到文件系统缓存中,这样XP的内核能够在内存中运行,大大提高系统速度。通常来说,该优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。需要注意的是必须有256M以上的内存,激活LargeSystemCache才可起到正面的作用,否则不要轻易改动它。(3)改进输入/输出性能这个优化能够提升系统进行大容量文件传输时的性能,不过这只对服务器用户才有实在意义。我们可在中新建一个DWORD(双字节值)键值,命名为IOPageLockLimit。一般情况下把数据设置8~16MB之间性能最好,要记住这个值是用字节来计算的,例如你要分配10MB的话,就是10×?1024×1024,也就是10485760。这里的优化也需要你的机器拥有大于256M的内存。(4)禁用内存页面调度在正常情况下,XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。在注册表中找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”下的“DisablePagingExecutive”键,把它的值从0改为1即可禁止内存页面调度了。(5)关闭自动重新启动功能当WindowsXP遇到严重问题时便会突然重新开机,可从注册表将此功能取消。打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\”将AutoReboot键的Dword值更改为0,重新启动后设置即可生效。(6)改变视觉效果WindowsXP在默认情况下启用了几乎所有的视觉效果,如淡入淡出、在菜单下显示阴影。这些视觉效果虽然漂亮,但对系统性能会有一定的影响,有时甚至造成应用软件在运行时出现停顿。一般情况下建议少用或者取消这些视觉效果。选择桌面上“我的电脑”图标,单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,打开“系统属性”对话框。选择“高级”选项卡,在其中的“性能”栏中单击“设置”按钮,会弹出“性能选项”对话框(如图4),可选择“调整为最佳性能”单选框来关闭所有的视觉效果,也可选择“自定义”然后选择自己需要的视觉效果。(7)合理设置页面虚拟内存同样也是在“性能选项”对话框中,选择“高级”选项卡,在其中的“虚拟内存”栏中单击“更改”按钮,接下来选择虚拟内存为“自定义大小”,然后设置其数值。一般情况下,把虚拟设为不小于256M,不大于382M比较合适,而且最大值和最小值最好一样。(8)修改外观方案WindowsXP默认的外观方案虽然漂亮,但对系统资源的占用也多,可将其改为经典外观以获得更好的性能。在桌面空白位置单击鼠标右键,从弹出的快捷菜单中选择“属性”命令,会打开“显示属性”对话框,在“主题”选项卡选择主题为“Windows经典”,即可将外观修改为更为经济的Windows经典外观。(9)取消XP对ZIP支持WindowsXP在默认情况下打开了对zip文件支持,这要占用一定的系统资源,可选择“开始→运行”,在“运行”对话框中键入“regsvr32/uzipfldr.dll”,回车确认即可取消XP对ZIP解压缩的支持,从而节省系统资源。(10)关闭Dr.WatsonDr.Watson是WindowsXP的一个崩溃分析工具,它会在应用程序崩溃的时候自动弹出,并且在默认情况下,它会将与出错有关的内存保存为DUMP文件以供程序员分析。不过,记录DUMP文件对普通用户则毫无帮助,反而会带来很大的不便:由于Dr.Watson在应用程序崩溃时会对内存进行DUMP记录,将出现长时间硬盘读写操作,要很长一断时间程序才能关闭,并且DUMP文件还会占用大量磁盘空间。要关闭Dr.Watson可打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug”分支,双击其下的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就取消它的运行了。同样,我们可以把所有具备调试功能的选项取消,比如蓝屏时出现的memory.dmp,可在“系统属性”对话框中选择“高级”选项卡,单击“启动和故障恢复”栏中的“设置”按钮,并在弹出的“启动和故障恢复”对话框中选择“写入调试信息”为“无”(如图5)。(11)启动硬盘/光驱DMA模式打开“系统属性”对话框,选择“硬件”选择卡中的“设备管理器”按钮,打开“设备管理器”窗口,在设备列表中选择“IDEATA/ATAPI控制器”,双击“主要IDE通道”或“次要IDE通过”,在其属性对话框的“高级设置”选项卡中检查DMA模式是否已启动,一般来说如果设备支持,系统就会自动打开DMA功能,如果没有打开可将“传输模式”设为“DMA(若可用)”。(12)关掉不用的设备WindowsXP总是尽可能为电脑的所有设备安装驱动程序并进行管理,这不仅会减慢系统启动的速度,同时也造成了系统资源的大量占用。针对这一情况,你可在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,方法是双击要停用的设备,在其属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。在重新启动设置即可生效,当需要使用这些设备时再从设备管理器中启用它们。(13)关闭错误报告当应用程序出错时,会弹出发送错误报告的窗口,其实这样的错误报告对普通用户而言几乎没有任何意义,关闭它是明智的选择。在“系统属性”对话框中选择“高级”选项卡,单击“错误报告”按钮,在弹出的“错误汇报”对话框中,选择“禁用错误汇报”单选项,最后单击“确定”即可。另外我们也可以从组策略中关闭错误报告:从“运行”中键入“gpedit.msc”,运行“组策略编辑器”,展开“计算机配置→管理模板→系统→错误报告功能”,双击右边设置栏中的“报告错误”,在弹出的“属性”对话框中选择“已禁用”单选框即可将“报告错误”禁用。(14)关闭自动更新“自动更新”功能对许多WindowsXP用户而言并不是必需的,可将其关闭以节省系统资源。在“我的电脑”上单击鼠标右键,从快捷菜单中选择“属性”命令,选择“系统属性”对话框中的“自动更新”选项卡,勾选“关闭自动更新,我将手动更新计算机”单选框,单击“确定”按钮即可关闭自动更新功能。如果在“服务”已经将“AutomaticUpdates”服务关闭,“系统属性”对话框中的“自动更新”选项卡就不能进行任何设置了。(15)去掉菜单延迟去掉菜单弹出时的延迟,可以在一定程度上加快XP。要修改的键值位置在“HKEY_CURRENT_USER\ControlPanel\Desktop”。修改其下的“MenuShowDelay”键,把默认的400修改为0,按F5刷新注册表即可生效。(16)清除预读文件WindowsXP的预读设置虽然可以提高系统速度,但是使用一段时间后,预读文件夹里的文件数量会变得相当庞大,导致系统搜索花费的时间变长。而且有些应用程序会产生死链接文件,更加重了系统搜索的负担。所以,应该定期删除这些预读文件。预计文件存放在WindowsXP系统文件夹的Prefetch文件夹中,该文件夹下的所有文件均可删除。(17)关闭自动播放功能在WindowsXP中,当往光驱中放入光盘或将USB硬盘接上电脑时,系统都会自动将光驱或USB硬盘扫描一遍,同时提示你是否播放里面的图片、视频、音乐等文件,如果是拥有多个分区的大容量的USB硬盘,扫描会耗费很长的时间,而且你得多次手动关闭提示窗口,非常麻烦。这种情况下我们可以将WindowsXP的自动播放功能关闭。运行“组策略”程序。在组策略窗口左边栏中,打开“计算机配置”,选择“管理模板”下的“系统”,然后在右边的配置栏中找到“关闭自动播放”并双击它,会弹出“关闭自动播放属性”对话框。在其中“设置”选项卡中选择“已启用”,“关闭自动播放”下拉列表中选择“所有驱动器”(如图6)。这样以后就不用担心WindowsXP的“自动播放”功能带来的麻烦了。如果你只是想禁止系统扫描某个驱动器(如USB硬盘)上的文件,可采用下面的方法。先连上你的USB硬盘,让系统将它识别出来。然后打开“我的电脑”,选择USB硬盘上的某个分区,按鼠标右键,会弹出磁盘属性窗口,选取“自动播放”选项卡,将所有内容的类型都选择为不执行操作。如果USB硬盘有多个分区,对所有分区都进行同样的操作,这样当你将USB驱动器拔掉再重新接上时,系统会将USB硬盘识别出来,而不会反复问你是否播放USB硬盘中的文件了。3.加快关机速度WindowsXP的关机速度要慢于启动速度,特别有些任务还需要手工结束,更加延缓了关机速度。因此,要加快关机速度,首先要开启WindowsXP的自动结束任务功能。具体步骤是:从注册表中找到“HKEY_CURRENT_USER\ControlPanel\Desktop”,把“AutoEndTasks”的键值设置为1即可。然后再修改“HungAppTimeout”为“4000(或更小)”(预设为5000),该键值同样也在“HKEY_CURRENT_USER\ControlPanel\Desktop”下;最后一步再找到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\”,同样把WaitToKillServiceTimeout设置为“4000”;通过这样设置后的关机速度明显要加快了。够全面吧~~◆二、硬件优化设置◆1、关掉不用的设备
在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,在要停用设备属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。当需要使用这些设备时再从设备管理器中启用它们。◆2、内存性能优化
WindowsXP中有几个选项可以优化内存性能,它们全都在注册表下面位置:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession
ManagerMemory
Management
1)禁用内存页面调度(Paging
Executive)
XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。256M以上内存才使用这个设置。把“DisablePagingExecutive”的值从0改为1就可以禁止内存页面调度了。
2)提升系统缓存
必须有256M以上的内存,才激活它。把LargeSystemCache键值从0改为1,一般来说,这项优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。
3)输入/输出性能
内存大于256M才更改这里的值,这个优化只对server(服务器)用户才有实在意义,它能够提升系统进行大容量文件传输时的性能。建一个DWORD(双字节值)键值,命名为IOPageLockLimit,数值设8M-16M字节之间性能最好,具体设什么值,可试试哪个值可获得最佳性能。这个值是用字节来计算的,比如你要分配12M,就是12×1024×1024,也就是12582912。◆3、启动硬盘/光驱DMA模式
“系统属性”-“硬件”-“设备管理器”,在设备列表中选择“IDE
ATA/ATAPI控制器”,双击“主要
IDE
通道”或“次要
IDE
通道”,在其属性对话框的“高级设置”选项卡中检查DMA模式是否已启动,一般来说如果设备支持,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第二节刀具静止角度参考系和刀具静止角度的标注
- No医学科研的特征和类型
- 有机无机化学化工热力学教学课件流体输送
- 纾缓护理的现状与发展
- 湛江市吴川市覃巴镇社区工作者招聘考试题目
- 中国共产党执政历史和人民的选择教学设计
- (2026年)严重群发不良用药事件报告制度
- 学校开学安全隐患排查报告
- 三级安全教育考试试题(附答案)公司级
- 2025年宠物时尚趋势白皮书(上)
- 中国成人患者肠外肠内营养临床应用指南(2026版)
- 2026年地铁站务员面试常见问题
- 2026宁夏中考语文考前提分模拟卷含答案
- 企业安全操作规程标准手册
- DB11∕T 2503-2025 地理标志产品质量要求 京白梨
- 中国脑小血管病诊治指南2025
- 2025年河北机关事业单位工人应知应会考试(动物检验员)全真试题及答案
- 2025中国热带农业科学院热带生物技术研究所第一批招聘23人笔试试题(第1号)附答案解析
- 驾校教练员安全教育课件
- 2025年工业催化原理试卷及答案
- 充电站电缆敷设施工方案
评论
0/150
提交评论