




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于STM32的MP3播放器設計摘要MP3播放器從原理上看是一個具有MP3播放功能的微型電腦。在MP3播放器小小的機身里,擁有MP3播放器存儲器(存儲卡)、MP3播放器顯示器(大部分為LCD顯示屏)、MP3播放器中央處理器[MCU(微控制器)或MP3播放器解碼DSP(數(shù)字信號處理器)等。微處理器是播放器的“大腦”,用來接受用戶選擇的播放控制,并將當前播放的歌曲信息顯示在液晶顯示屏上,然后向數(shù)據(jù)信號處理芯片發(fā)出指令,音頻信號將能夠準確地被處理。我們可以通過數(shù)據(jù)傳輸線(USB)或WIFI局域網(wǎng)將MP3與PC進行連接,將自己喜歡的音頻文件通過網(wǎng)絡下載并導入到MP3中??偠灾?,是這個信息化世界智慧的結晶。而本設計就是利用信盈達科技有限公司出產(chǎn)的STM32解碼板和核心板上的VS1053芯片,通過在KEIL軟件中對VS1053芯片進行C語言驅動代碼的編寫,來驅動一個具有簡單功能的開發(fā)版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本設計在國內外的發(fā)展概況及存在的問題 71.3本設計應解決的主要問題 72本設計 82.1設計原理 82.2方案選擇 82.3分析問題 92.4設計過程 92.4.1VS1053解碼器通信接口 92.4.2VS1053解碼器通信協(xié)議 102.4.3VS1053關鍵寄存器 模式控制寄存器MODE 時鐘頻率加乘數(shù)寄存器CLOCKF 音量控制寄存器VOL 162.4.4解碼器硬件復位 162.4.5解碼器軟件復位 172.4.6音頻通道選擇器初始化 172.5代碼編寫 182.5.1解碼器底層接口函數(shù)實現(xiàn) 182.5.2解碼器復位函數(shù)實現(xiàn) 硬件復位 軟件復位 222.5.3配置寄存器 232.5.4音頻通道選擇器初始化 232.5.5利用VS1053播放一首歌曲 242.6硬件測試 253結論 26參考文獻 27致謝 28附錄 291前言隨著時代的發(fā)展,在當今的時代背景下,低延遲為核心的5G網(wǎng)絡、嵌入式系統(tǒng)、物聯(lián)網(wǎng)、云計算等新嶄技術已經(jīng)成為了現(xiàn)今電子信息技術發(fā)展的主要角色,從產(chǎn)業(yè)發(fā)展的角度來說,這已經(jīng)是一股無法逆轉的浪潮。而嵌入式系統(tǒng)正是電子信息科技應用中最為核心的一部分,成為了新世紀最具生命力的技術之一。伴隨著消費類電子產(chǎn)業(yè)的發(fā)展的逐步壯大,各種各樣的嵌入式電子產(chǎn)品走進了人們的視野中,進入到生活的方方面面。電腦也從以前的老式大塊頭PC機變得五花八門,六角形游戲主機、輕薄本、游戲本等形態(tài),各式各樣的嵌入式系統(tǒng)在出現(xiàn)在社會的各個角落中,在這之中,ARM公司推出的芯片受到了許多用戶的贊賞。ARM芯片由于其功耗低、性能高、體積小、成本低等諸多特點越來越廣泛地受到了各企業(yè)的重點注意,成為了許多企業(yè)開發(fā)產(chǎn)品首要考慮采用的硬件芯片。本課題的制作的MP3也是基于ARM平臺的STM32系列芯片。VS1053是VLSI公司VSXX系列里面性能最為出色的一款,支持MP3、WMA、WAV、MIDI、FLAC……音頻格式,支持硬件FFT頻譜,DAC音頻輸出驅動器可以直接驅動32歐姆阻抗的耳機。該芯片的DAC具備有立體聲功能,解碼效果達到HIFI級別;芯片還有一個最大的特點就是自動化處理數(shù)據(jù),內部具有一個2048字節(jié)的數(shù)據(jù)FIFO,我們只需要把音頻數(shù)據(jù)發(fā)送給它內部的FIFO就可以了,它內部會自動對音頻數(shù)據(jù)進行處理,自動識別播放的碼率,自動播放音樂,自動的產(chǎn)生音樂的頻譜數(shù)據(jù)。2048字節(jié)的數(shù)據(jù)FIFO能緩存音頻數(shù)據(jù),這樣一來CPU就有足夠的時間去處理其它的事情了,不需要每時每刻都在傳輸音頻數(shù)據(jù)給VS1053。本課題以VS1053B為目標芯片,以此研究如何實現(xiàn)MP3播放器。1.1本設計的目的、意義及應達到的技術要求目前智能手機所擁有的功能越來越多,MP3的功能也被整合到了手機中,但是音樂播放僅僅為手機的功能之一,而音樂播放卻是MP3的主要職責。對于普通人來說,手機已經(jīng)能很好地滿足日常需求,而對于音樂發(fā)燒友或職業(yè)音樂人來說,MP3才是作為播放系統(tǒng)中前端的優(yōu)選。而且手機的插孔所輸出的電流不能滿足部分高檔耳機需要的工作電流,而MP3播放器則能讓耳機以滿功率輸出音樂,達到最優(yōu)播放效果這也是為何在智能手機日益發(fā)展的今天MP3音樂播放器仍像數(shù)碼相機一樣經(jīng)久不衰的原因。在大多數(shù)MP3播放器所支持的音頻格式中,MP3格式是最為常見的,它支持的歌曲為44.1KHz采樣率,比特率范圍一般是8-256Kbps。越高檔的MP3支持的比特率范圍自然越大,從各種角度上看MP3支持的范圍自然是越廣越好的。1.2本設計在國內外的發(fā)展概況及存在的問題世界上第一臺MP3播放器是Saehan公司在1998年推出的MPManF10。雖然該設備發(fā)售后就像浪花一樣消失在電子產(chǎn)品的浪潮中,不過MPManF10的出現(xiàn)啟動了MP3市場,導致許多的電子廠商開始著手研發(fā)MP3設備。RioPMP300在1998年底被美國的帝盟公司推出,這是第一個給全世界的人們留下了深刻印象的MP3。隨著MP3這一產(chǎn)品的迅猛發(fā)展,到了2004年,MP3播放器從內存、機身、音質上的發(fā)展無法再吸引更多人們的目光之時,MP3便開始了往多功能設備發(fā)展的趨勢。正如十幾年來在手機上所發(fā)生的事一樣,人們對于MP3的要求越來越高,從單純的進行音樂播放,到像手機一樣既能打電話又能拍照、上網(wǎng)……,不過,消費類電子產(chǎn)品的一大發(fā)展趨勢是一個產(chǎn)品融合多個功能,就像IPHONE第一代發(fā)布時喬布斯說的“AnIpod,Aphone,Aninternetcommunicate”。在中國首次推出彩色屏幕的MP3后,韓國iRiver趁勢率先推出擁有拍攝功能的MP3。到了今日,MP3領域的領先地位依舊被韓國企業(yè)占據(jù)。MP3已經(jīng)成為了便攜播放設備類的一個主流產(chǎn)品,而且在手機之后也成為了最為廣泛使用的個人隨身電子產(chǎn)品。至于MP3格式的局限性,MP3格式的文件有一些限制是不能通過使用更好的編碼器來繞過的,例如:最大位速是320kbps;相對于變化迅速的信號來說,時間的分辨率太低;對于超過15.5/15.8kHz的頻率沒有尺度因子帶*1;Jointstereo*2是基于幀與幀完成的;沒有定義編碼器/解碼器的整體時延,這就說明了gaplessplayback缺少一個正式的規(guī)定。雖然有以上限制,但是一個經(jīng)過優(yōu)秀調教MP3播放器也是能夠地出色地完成編碼任務的。1.3本設計應解決的主要問題在STM32上驅動一款芯片需要了解這款芯片的基礎硬件結構,和在STM32上對應連接到的管腳等信息,并在KEIL軟件上通過C語言編程的方式對芯片的驅動代碼進行編寫,令芯片能夠按照開發(fā)者的要求進行運作。故目前的主要問題是如何在KEIL中進行VS1053B的芯片驅動代碼編寫,使VS1053B芯片能在STM32開發(fā)板上順利運行。。2本設計2.1設計原理STM32解碼板STM32解碼板STM32核心板LCD顯示屏VS1053VS1053解碼器硬、軟件復位VS1053關鍵寄存器SPI硬、軟件復位VS1053關鍵寄存器SPI通信外接74HC4052模擬通道選擇器件驅動代碼編寫驅動代碼編寫圖2.0MP3項目結構圖2.2方案選擇在硬件的選擇方面,經(jīng)過數(shù)家MP3開發(fā)板套件的比較,我最終選用了信盈達公司的STM32-M3核心板和配套的解碼板進行該項目,該開發(fā)板硬件已配套MP3系統(tǒng)的基礎代碼,用戶需使用哪項功能,則僅需專門對該功能另外進行芯片驅動代碼編寫即可達到開發(fā)編程的目的。決定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語言是一門面向過程的、抽象化的通用程序設計語言,并廣泛應用于底層開發(fā)。C語言能夠以簡單的方式對低級處理器進行編譯和處理。C語言是一種僅產(chǎn)生少量的機器語言并且不需要任何運行環(huán)境支持就能進行運行的高效率程序設計語言。雖然C語言提供了許多低級處理的功能,但它仍然保持了跨平臺的特性,以一個標準規(guī)格編寫出來的C語言程序可以在包括類似嵌入式處理器以及超級計算機等作業(yè)平臺的許多計算機平臺上進行編譯。軟件方面我選擇的是美國KeilSoftware公司所出品的Keil軟件來進行本項目的代碼編寫。該軟件開發(fā)系統(tǒng),是以51系列兼容單片機C語言為主的。Keil軟件提供了完成代碼編寫所需要的C編譯器、鏈接器、宏匯編、庫管理以及一個功能強大的仿真調試器等在內的一套完整的開發(fā)方案。WIN98、NT、WIN2000、WINXP、WIN10等主流操作系統(tǒng)可以運行Keil軟件。如果開發(fā)者需要進行C語言編程,Keil幾乎就是開發(fā)者的首選,如果開發(fā)者不使用C語言而僅僅使用匯編語言來進行編程,Keil所具有的方便易用的集成環(huán)境、強大的軟件仿真調試工具也會開發(fā)者戶事半功倍。2.3分析問題要驅動在STM32上的VS1053B芯片,編寫驅動代碼時主要需要解決的問題是:選擇VS1053解碼器的哪個通信接口進行通信、編寫VS1053解碼器的通信協(xié)議代碼、通過讀芯片配套的原理圖決定選擇哪幾個VS1053解碼器的寄存器進行置位操作、編寫軟件復位代碼、編寫硬件復位代碼。硬件連接方面則使用USB-AtoUSB-MINI-B型連接線、ST-LINK燒錄器以及連接口轉換插板配合來進行PC到項目硬件的連接和項目代碼的燒錄。2.4設計過程 以下對項目代碼設計所必要的各項步驟進行思路分析。2.4.1VS1053解碼器通信接口VS1053支持SPI和IIS兩種通信接口,這里我們選擇SPI作為VS1053和STM32的通信接口。通過查詢開發(fā)板原理圖得知:圖2.1VS1053解碼板管腳配置通過翻閱芯片說明書得知在SPI模式下需要用到的設置為:表2.1SPI引腳對應STM32引腳及模式設置VS1053引腳連接到STM32引腳STM32引腳的模式VS串行數(shù)據(jù)輸出SOPA6上拉輸入VS串行數(shù)據(jù)輸入SIPA7復用推挽輸出,時鐘50MVS串行時鐘SCLKPA5復用推挽輸出,時鐘50MVS命令操作片選XCSPF7通用推挽輸出,時鐘2MVS數(shù)據(jù)操作片選XDCSPF6通用推挽輸出,時鐘2MVS數(shù)據(jù)請求引腳DREQPC13下拉輸入VS復位引腳XRESTPE6通用推挽輸出,時鐘2M有兩個獨立的輸入/輸出引腳,故工作方式選擇全雙工通過查閱芯片手冊和原理圖和參考本文中2.4.2進行的分析,可以了解到所需要進行的SPI配置為:1工作方式—全雙工2數(shù)據(jù)長度—8位3數(shù)據(jù)發(fā)送順序—高位先發(fā)4通信速度——9.2M5通信協(xié)議——選擇模式0VS1053的2048字節(jié)FIFO是否可以接收數(shù)據(jù)是通過DREQ信號引腳來反饋的,如果該引腳是高電平,則說明VS1053b可以接受最少為32字節(jié)的SDI數(shù)據(jù)或者接收一條SCI命令,低電平則代表不能接收數(shù)據(jù)。2.4.2VS1053解碼器通信協(xié)議VS1053解碼器有兩種通信協(xié)議,分別是:串行數(shù)據(jù)接口的串行協(xié)議(SDI)和串行命令接口的串行協(xié)議(SCI)。VS1053b串行協(xié)議支持兩種模式,分別是VS1002本地模式和VS1001兼容模式。VLSI公司建議用戶使用VS1002本地模式。串行數(shù)據(jù)接口的串行協(xié)議(SDI)在VS1002本地模式下(SM_NEWMODE是1),字節(jié)同步是由XDCS完成的,可以任意定義數(shù)據(jù)(SDATA信號)在時鐘信號DCLK的上升沿或下降沿上,字節(jié)傳送可以設置為MSb(高位)在前或LSb(低位)在前,這取決于SCI_MODE中內容的定義。需要我們編程時在SCI_MODE寄存器進行選擇。主機發(fā)送音頻數(shù)據(jù)給VS1053b必須要在數(shù)據(jù)請求線DREQ變?yōu)楦唠娖降臅r候才可以,DREQ變?yōu)楦唠娖酱鞻S1053b的數(shù)據(jù)FIFO至少可以接受32字節(jié)的音頻數(shù)據(jù)。注意發(fā)數(shù)據(jù)之前需要把數(shù)據(jù)片選拉為低電平。串行命令接口的串行協(xié)議(SCI)串行命令接口SCI的串行總線協(xié)議包括:一個指令字節(jié)、一個地址字節(jié)(寄存器地址)和一個16位的數(shù)據(jù)字。指令字節(jié)決定的是訪問的方向,地址字節(jié)決定是操作哪個寄存器。每次讀取操作或寫入操作均可以訪問一個寄存器。由于那些數(shù)據(jù)位是在SCK的上升沿讀取的,所以用戶只能在SCK的下降沿上更新數(shù)據(jù)。每個字節(jié)的MSb(高位)總是被首先發(fā)送。在整個傳送操作的期間,XCS必須要保持為低電平。SCI操作方向由指令字節(jié)來定義。查閱VS1053芯片手冊可知:表2.2SCI串行協(xié)議操作指令表指令名稱操作碼操作READ0b00000011讀取數(shù)據(jù)WRITE0b00000010寫入數(shù)據(jù)則:SCI寫操作指令:0X02SCI讀操作指令:0X03圖2.2串行數(shù)據(jù)接口串行協(xié)議圖為了統(tǒng)一SPI的時序,我們選擇數(shù)據(jù)位是在SCK的上升沿有效,每個字節(jié)的MSb先發(fā)。查閱STM32中文手冊知:位1CPOL:時鐘極性(Clockpolarity)
0:空閑狀態(tài)時,SCK保持低電平
1:空閑狀態(tài)時,SCK保持高電平
注意:正在通信時不應更改此位。
不適用于I2S模式和SPITI模式位0CPHA:時鐘相位(Clockphase)
0:從第一個時鐘邊沿開始采樣數(shù)據(jù)
1:從第二個時鐘邊沿開始采樣數(shù)據(jù)
注意:正在通信時不應更改此位。
不適用于I2S模式和SPITI模式則時鐘空閑為低電平,數(shù)據(jù)采樣從第一個時鐘邊沿開始。(就是SPI4種模式里面的模式0)圖2.3串行命令讀協(xié)議圖圖2.4串行命令讀協(xié)議圖解釋圖2.5串行命令寫協(xié)議圖圖2.6串行命令寫協(xié)議圖解釋 由上圖知指令數(shù)據(jù)長度為8位。圖2.7串行SPI時序圖 表2.3SPI時序圖注釋符號最小最大單位tXCSS5nstSU0nstH2CLKI周期tZ0nstWL2CLKI周期tWH2CLKI周期tV2(+25ns)CLKI周期tXCSH1CLKI周期tXCS2CLKI周期tDIS10ns表2.4芯片推薦工作值參數(shù)符號最小典型最大單位工作環(huán)境溫度-30+85℃模擬和數(shù)字地AGNDDGND0.0V模擬電源供電電壓,REF=1.23VAVDD2.52.83.6V模擬電源供電電壓,REF=1.65V2AVDD3.33.33.6V數(shù)字電源供電電壓CVDD1.71.81.85VI/O電源供電電壓IOVDD1.82.83.6V輸入時鐘頻率3XTALI1212.28813MHz內部時鐘頻率CLKI1236.86455.3MHz內部時鐘倍數(shù)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手冊上該表格后的各位解釋說明進行分析,發(fā)現(xiàn)該寄存器僅第11位置1,其他置0,則該寄存器的置位方案為0X0400(設定SPI的一些特性)圖2.8核心板所連接的解碼板外部電路部分截選VS1053b通常運作在一個頻率為12.288MHz基頻的主時鐘上。時鐘可以通過外部的電路(連接到引腳XTALI)或通過內部的時鐘晶振接口(連接到XTALI和XTALO引腳)來產(chǎn)生的。這個時鐘用來給模擬部件確定最高的可用采樣率。在12.288MHz下,最高到48000Hz的所有采樣率都可用。時鐘頻率加乘數(shù)寄存器CLOCKF 通過查閱VS1053手冊知該寄存器的設定頻率主要會影響芯片能解碼的采樣率。查閱VS1053手冊知:如果需要典型值,則內部乘法器值在復位之后必須設置為3.5x,等待DREQ升高之后,將數(shù)值0x9800寫入CI_CLOCKF。將0x9800寫入該寄存器能達到最優(yōu)性能。音量控制寄存器VOL 通過查閱VS1053手冊知該寄存器用于設定VS1053的音量大小。這個音量寄存器的高字節(jié)是控制左通道音量的,低字節(jié)是控制右通道音量的。對每個通道,數(shù)值在0..254的范圍內設置可以實現(xiàn)在最大音量級別內的微調(步長0.5dB)。左通道數(shù)值是通過乘上256后再加到這個數(shù)值上的。所以,最大的音量是0、無聲是0xFEFE。設置SCI_VOL為0xFFFF將會使模擬單元進入掉電模式(降低功耗)2.4.4解碼器硬件復位VS1053有一個復位引腳,低電平有效。當XRESET信號被驅動到低電平,VS1053b將重置所有的內部狀態(tài)和控制寄存器為它們的初始值。如果我們沒有播放音樂,可以復位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位來實現(xiàn)的,在這之后需要等待最少2微秒后再去查詢DREQ狀態(tài)。DREQ將在低電平上停留最少22000個時鐘周期,對于運行在12.288MHz的VS1053b上來說,大約是1.8毫秒。然后等DREQ上升變?yōu)楦?,就可以像平常那樣繼續(xù)播放了。軟件復位并不會復位寄存器。軟件應用:用于VS1053出現(xiàn)播放故障時,進行復位的。2.4.6音頻通道選擇器初始化通過閱讀配套手冊得知,因為本項目使用的開發(fā)板套件上面外接了一個74HC4052模擬通道選擇器件,根據(jù)開發(fā)板上面的原理圖我們可以知道VS1053的音頻源是接到74HC4052的通道0。根據(jù)74HC4052的真值表可以知道我們需要把PD7和PB7都輸出低電平。圖2.9開發(fā)板音頻源管理圖表2.674HC4052的真值表Inputs‘‘ON’’ChannelsInhABXYHXXNoneNoneLLL0X0YLLH1X1YLHL2X2YLHH3X3Y2.5代碼編寫2.5.1解碼器底層接口函數(shù)實現(xiàn)需要進行編寫的VS1053底層函數(shù)有:1.IO口初始化函數(shù)2.SPI初始化函數(shù)3.SPI發(fā)送函數(shù)4.SPI接收函數(shù)5.SPI設定通信速度的函數(shù)6.VS1053SCI操作7.VS1053SDI操作 接下來將對以上七個部分的代碼進行編寫及部分簡要說明。1.IO口初始化函數(shù) 首先進行時鐘使能,然后對負責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初始化函數(shù)按照前文2.4.2進行的分析和對通過查閱芯片手冊和原理圖,可以了解到所需要進行的SPI配置為:voidvs1053_spi_init(void){/*配置SPI1的工作狀態(tài)*/RCC->APB2ENR|=(1<<12);//設定波特率SPI1->CR1&=~(0x7<<3);SPI1->CR1|=(0x7<<3);//256分頻72M/256//設定數(shù)據(jù)幀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發(fā)送函數(shù)voidvs1053_spi_send_byte(u8data){//等待前面的發(fā)送完成while(!(SPI1->SR&(1<<1)));//給數(shù)據(jù)DR寄存器SPI1->DR=data;//等待接收完成(無用的數(shù)據(jù))while(!(SPI1->SR&(1<<0)));data=SPI1->DR;}4.SPI接收函數(shù)u8vs1053_spi_receive_byte(void){u8data;//等待前面的發(fā)送完成while(!(SPI1->SR&(1<<1)));//給數(shù)據(jù)DR寄存器SPI1->DR=0xff;//等待接收完成while(!(SPI1->SR&(1<<0)));data=SPI1->DR;returndata;}—————————————————————————————————————5.SPI設定通信速度的函數(shù)因為VS1053的寄存器操作的數(shù)據(jù)要比數(shù)據(jù)操作的數(shù)據(jù)要慢,不能用操作數(shù)據(jù)的速度操作它的寄存器,如果把操作數(shù)據(jù)的速度調到符合寄存器操作,會造成傳輸數(shù)據(jù)很慢。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數(shù)據(jù)片選為高電平。參考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)//將數(shù)據(jù)寫進哪個寄存器里{ 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操作:主機必須要在數(shù)據(jù)請求線DREQ變?yōu)楦唠娖降臅r候才可以發(fā)送音頻數(shù)據(jù)給VS1053b,DREQ變?yōu)楦唠娖酱鞻S1053b的數(shù)據(jù)FIFO至少可以接受32字節(jié)的音頻數(shù)據(jù)。發(fā)數(shù)據(jù)之前需要把數(shù)據(jù)片選拉為低電平。編寫時并沒有判斷數(shù)據(jù)請求線是否變?yōu)楦唠娖?,是因為我們在調用這個函數(shù)的時候才做判斷SDI操作速度:小于9.2MSDI操作函數(shù)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解碼器復位函數(shù)實現(xiàn)硬件復位 硬件復位操作的是PE6引腳,先將PE6拉成高電平,在將PE6復位回低電平,硬件復位完成后再把PE6拉高即完成硬件復位。硬件復位函數(shù):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位來實現(xiàn)的。先編寫一段寄存器的寫操作代碼,編寫時確保XCS拉低片選腳時XDCS保持高電平。由前可知SCI操作速度較慢,故編寫SCI寫操作代碼時先將通信速度調低,待通信結束后將速度調回至告訴。讀操作代碼與寫操作代碼步驟大致相同,SPI的數(shù)據(jù)寬度為8位,故使用兩個參數(shù)來接收SPI讀取到的16位數(shù)據(jù)。操作寄存器必須整體操作,對于SCI_MODE寄存器的里的數(shù)據(jù)我們不清楚,所以要先把VS1053SCI_MODE寄存器的內容讀出來,再把SM_RESET位置1,然后再把這個數(shù)寫進寄存器。軟件復位函數(shù)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配置寄存器使用前面步驟里編寫好的寄存器寫函數(shù)對SCI_MODE、SCI_CLOCKF、SCI_VOL分別進行置位即可。配置寄存器函數(shù)voidvs1053_init(void){//引腳初始化vs1053_port_init();//SPI初始化vs1053_spi_init();//硬件復位vs1053_hard_reset();//配置VS1053的工作狀態(tài)vs1053_write_reg(SCI_MODE,0X0800);//配置VS1053最優(yōu)的工作解碼vs1053_write_reg(SCI_CLOCKF,0X9800);//設定默認的音量vs1053_write_reg(SCI_VOL,0X1E1E);}2.5.4音頻通道選擇器初始化使用上兩步里編寫好的寄存器寫函數(shù)對PD7和PB7分別進行置位即可。音頻通道選擇器初始化函數(shù)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播放一首歌曲要知道什么時候才可以發(fā)送數(shù)據(jù)給VS1053,能不能發(fā)送數(shù)據(jù)給VS1053是由DREQ引腳進行反饋的,需要等到這個引腳變?yōu)楦唠娖讲拍馨l(fā)送數(shù)據(jù)給VS1053,至少可以發(fā)送32個字節(jié)。發(fā)送數(shù)據(jù)給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)//一首歌數(shù)據(jù)很大,用while循環(huán)讀數(shù)據(jù) { res=f_read(&fp,mp3buff,sizeof(mp3buff),&br);//讀取打開的fp文件,讀取sizeof(mp3buff)字節(jié),返回讀了多少字節(jié)if(br==0)break;//讀取文件完畢 if(res!=FR_OK)while(1);//讀取文件失敗 else { while(cnt<sizeof(mp3buff)) { if(GPIOC->IDR&(1<<13))//判斷是否可以給數(shù)據(jù)VS1053,如果為高電平,可以給至少32個字節(jié) {vs1053_write_fifo(&mp3buff[cnt]);//調用外部函數(shù)write_fifo對VS1053的fifo進行歌曲數(shù)據(jù)傳入cnt=cnt+32; } else { OSTimeDlyHMSM(0,0,0,20);//MP3任務主動放CPU,否則其它地方用不了CPU } } cnt=0; } } }}2.6硬件測試 將MP3開發(fā)套件通過USB線連接至電腦進行供電,通過杜邦線及轉換板、ST-LINK代碼燒錄器與電腦通過USB口相連進行通信,在KEIL軟件中將開發(fā)套件配套的部分底層代碼及自己編寫的VS1053驅動代碼燒錄進套件中,能成功進入MP3界面并播放音樂。圖2.10測試結果3結論 通過對VS1053驅動代碼的學習和編寫,我成功地編寫出了在STM32開發(fā)板上驅動VS1053基礎功能的代碼。經(jīng)測試,本項目采用的VS1053開發(fā)套件能成功地通過3.5MM耳機接口播放出音樂,聲音清晰,性能良好,符合項目基本預設目標。 制作過程中,剛開始制作時會有點無從下手,不過在上網(wǎng)學習了一些如何驅動STM32單片機的步驟和回看了一下《微機原理與接口技術》的課本后稍微有了一些頭緒,隨著不斷回顧C語言知識、單片機知識和學習新的編程知識,我逐漸明白了單片機芯片的工作原理和編程步驟,理解了單片機的編程思路,一點一點地實現(xiàn)VS1053的驅動。參考文獻[1]張連明百度百科mp3(能播放音樂文件的播放器)/item/mp3/9858706?fr=aladdin,2020-04-5[2]VS1053bVersion1.01UnitedLinkTechnologies(S)PteLtd.1/80VS1053b-OggVorbis/MP3/AAC/WMA/MIDI音頻編解碼器芯片手冊,聯(lián)合科技有限公司,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程序設計(第五版)》“十二五”普通高等教育本科國家級規(guī)劃教材清華大學出版社ISBN:9787302481447,2017-7-20[6]符意德《嵌入式系統(tǒng)設計原理及應用(第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謝辭本學期的主要任務——畢業(yè)設計項目即將結束了,這也意味著我在北京理工大學為期四年的大學生涯也即將結束了。在大學四年的學習時間里我充滿了快樂和收獲,感謝電氣二班所有的任課老師,是你們讓我能夠靜靜地坐下來,在知識的海洋里汲取更多的營養(yǎng),其中我的論文指導老師蔣偉榮老師對我的關心和支持尤為重要,在此盡享盡享蔣老師致以誠摯的謝意和崇高的敬意。通過論文的撰寫,我能夠更系統(tǒng)更深入地學習單片機和C語言的知識,并得以借鑒眾多行業(yè)大牛的寶貴編程經(jīng)驗。為今后的工作和我為之服務的企業(yè),無疑是不可多得的寶貴財富。在由于本人理論水平比較有限,論文中的有些觀點以及對該項目工作原理的歸納和闡述難免有疏漏和不足的地方,歡迎老師和專家們指正。附錄1.部分文中未提到的源代碼FIFO寫函數(shù):voidvs1053_write_fifo(u8*data){ u8i; GPIOF->ODR&=~(1<<6);//將PF6片選腳拉低 for(i=0;i<32;i++) { vs1053_spi_send_byte(data[i]);//調用spi發(fā)送函數(shù)對fifo寫入數(shù)據(jù) } GPIOF->ODR|=(1<<6);//將PF6片選腳拉高}延時函數(shù):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;}
怎樣提高電腦系統(tǒng)運行速度WindowsXP的啟動速度比Windows2000要快30%左右,但相對于Windows98仍然要慢了不少,不過,我們可以通過優(yōu)化設置,來大大提高WindowsXP的啟動速度。加快系統(tǒng)啟動速度主要有以下方法:盡量減少系統(tǒng)在啟動時加載的程序與服務;對磁盤及CPU等硬件進行優(yōu)化設置;修改默認設置,減少啟動等待時間等。這些方法大部分既可減少系統(tǒng)啟動的時間,又可以節(jié)省系統(tǒng)資源,加快電腦運行速度。1.加快系統(tǒng)啟動速度WindowsXP的啟動速度比Windows2000要快30%左右,但相對于Windows98仍然要慢了不少,不過,我們可以通過優(yōu)化設置,來大大提高WindowsXP的啟動速度。加快系統(tǒng)啟動速度主要有以下方法:盡量減少系統(tǒng)在啟動時加載的程序與服務;對磁盤及CPU等硬件進行優(yōu)化設置;修改默認設置,減少啟動等待時間等。這些方法大部分既可減少系統(tǒng)啟動的時間,又可以節(jié)省系統(tǒng)資源,加快電腦運行速度。(1)MsconfigWindowsXP的啟動速度在系統(tǒng)安裝初期還比較快,但隨著安裝的軟件不斷增多,系統(tǒng)的啟動速度會越來越慢,這是由于許多軟件把自己加在了啟動程序中,這樣開機即需運行,大大降低了啟動速度,而且也占用了大量的系統(tǒng)資源。對于這樣一些程序,我們可以通過系統(tǒng)配置實用程序Msconfig將它們從啟動組中排除出去。選擇“開始”菜單中的“運行”命令,在“運行”對話框中鍵入“Msconfig”,回車后會彈出“系統(tǒng)配置實用程序”對話框,選擇其中的“啟動”選項卡(如圖1),該選項卡中列出了系統(tǒng)啟動時加載的項目及來源,仔細查看每個項目是否需要自動加載,否則清除項目前的復選框,加載的項目越少,啟動的速度就越快。設置完成后需要重新啟動方能生效。(2)BootvisBootvis是微軟提供的一個啟動優(yōu)化工具,可提高WindowsXP的啟動速度。用BootVis提升WindowsXP的啟動速度必須按照正確的順序進行操作,否則將不會起到提速的效果。其正確的操作方法如下:啟動Bootvis,從其主窗口(如圖2)中選擇“工具”菜單下的“選項”命令,在“符號路徑”處鍵入Bootvis的安裝路徑,如“C:\ProgramFiles\Bootvis”,單擊“保存”退出。從“跟蹤”菜單中選擇“下次引導”命令,會彈出“重復跟蹤”對話框,單擊“確定”按鈕,BootVis將引導WindowsXP重新啟動,默認的重新啟動時間是10秒。系統(tǒng)重新啟動后,BootVis自動開始運行并記錄啟動進程,生成啟動進程的相關BIN文件,并把這個記錄文件自動命名為TRACE_BOOT_1_1。程序記錄完啟動進程文件后,會重新啟動BootVis主界面,在“文件”菜單中選擇剛剛生成的啟動進程文件“TRACE_BOOT_1_1”。窗口中即會出現(xiàn)“CPU>使用”、“磁盤I/O”、“磁盤使用”、“驅動程序延遲”等幾項具體圖例供我們分析,不過最好還是讓BootVis程序來自動進行分析:從“跟蹤”菜單中選擇“系統(tǒng)優(yōu)化”命令,程序會再次重新啟動計算機,并分析啟動進程文件,從而使計算機啟動得更快。(3)禁用多余的服務WindowsXP在啟動時會有眾多程序或服務被調入到系統(tǒng)的內存中,它們往往用來控制Windows系統(tǒng)的硬件設備、內存、文件管理或者其他重要的系統(tǒng)功能。但這些服務有很多對我們用途不大甚至根本沒有用,它們的存在會占用內存和系統(tǒng)資源,所以應該將它們禁用,這樣最多可以節(jié)省70MB的內存空間,系統(tǒng)速度自然也會有很大的提高。選擇“開始”菜單中的“運行”命令,在“運行”對話框鍵入“services.msc”后回車,即可打開“服務”窗口。窗口的服務列表中列出了系統(tǒng)提供的所有服務的名稱、狀態(tài)及啟動類型。要修改某個服務,可從列表雙擊它,會彈出它的屬性對話框(如圖3),你可從“常規(guī)”選項卡對服務進行修改,通過單擊“啟動”、“停止”、“暫?!?、“恢復”四個按鈕來修改服務的狀態(tài),并可從“啟動類型”下拉列表中修改啟動類型,啟動類型有“自動”、“手動”、“已禁用”三種。如果要禁止某個服務在啟動自動加載,可將其啟動類型改為“已禁用”。WindowsXP提供的所有服務有36個默認是自動啟動的,實際上,其中只有8個是必須保留的(見下表),其他的則可根據(jù)自己的需要進行設置,每種服務的作用在軟件中有提示。4)修改注冊表來減少預讀取,減少進度條等待時間WindowsXP在啟動過程中會出現(xiàn)一個進度條,我們可以通過修改注冊表,讓進度條只跑一圈就進入登錄畫面。選擇“開始”菜單中的“運行”命令,在“運行”對話框鍵入“regedit”命令后回車,即可啟動注冊表編輯器,在注冊表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters,選擇其下的EnablePrefetcher鍵,把它的鍵值改為“1”即可。(5)減少開機磁盤掃描等待時間當Windows日志中記錄有非正常關機、死機引起的重新啟動,系統(tǒng)就會自動在啟動的時候運行磁盤掃描程序。在默認情況下,掃描每個分區(qū)前會等待10秒鐘,如果每個分區(qū)都要等上10秒才能開始進行掃描,再加上掃描本身需要的時間,會耗費相當長的時間才能完成啟動過程。對于這種情況我們可以設置取消磁盤掃描的等待時間,甚至禁止對某個磁盤分區(qū)進行掃描。選擇“開始→運行”,在運行對話框中鍵入“chkntfs/t:0”,即可將磁盤掃描等待時間設置為0;如果要在計算機啟動時忽略掃描某個分區(qū),比如C盤,可以輸入“chkntfs/xc:”命令;如果要恢復對C盤的掃描,可使用“chkntfs/dc:”命令,即可還原所有chkntfs默認設置,除了自動文件檢查的倒計時之外。2.提高系統(tǒng)運行速度提升系統(tǒng)運行速度的思路與加快啟動的速度類似:盡量優(yōu)化軟硬件設置,減輕系統(tǒng)負擔。以下是一些常用的優(yōu)化手段。(1)設置處理器二級緩存容量WindowsXP無法自動檢測處理器的二級緩存容量,需要我們自己在注冊表中手動設置,首先打開注冊表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”,選擇其下的“SecondLevelDataCache”,根據(jù)自己所用的處理器設置即可,例如PIIICoppermine/P4Willamette是“256”,AthlonXP是“384”,P4Northwood是“512”。(2)提升系統(tǒng)緩存同樣也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”位置,把其下的“LargeSystemCache”鍵值從0改為1,WindowsXP就會把除了4M之外的系統(tǒng)內存全部分配到文件系統(tǒng)緩存中,這樣XP的內核能夠在內存中運行,大大提高系統(tǒng)速度。通常來說,該優(yōu)化會使系統(tǒng)性能得到相當?shù)奶嵘?,但也有可能會使某些應用程序性能降低。需要注意的是必須?56M以上的內存,激活LargeSystemCache才可起到正面的作用,否則不要輕易改動它。(3)改進輸入/輸出性能這個優(yōu)化能夠提升系統(tǒng)進行大容量文件傳輸時的性能,不過這只對服務器用戶才有實在意義。我們可在中新建一個DWORD(雙字節(jié)值)鍵值,命名為IOPageLockLimit。一般情況下把數(shù)據(jù)設置8~16MB之間性能最好,要記住這個值是用字節(jié)來計算的,例如你要分配10MB的話,就是10×?1024×1024,也就是10485760。這里的優(yōu)化也需要你的機器擁有大于256M的內存。(4)禁用內存頁面調度在正常情況下,XP會把內存中的片斷寫入硬盤,我們可以阻止它這樣做,讓數(shù)據(jù)保留在內存中,從而提升系統(tǒng)性能。在注冊表中找到“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在默認情況下啟用了幾乎所有的視覺效果,如淡入淡出、在菜單下顯示陰影。這些視覺效果雖然漂亮,但對系統(tǒng)性能會有一定的影響,有時甚至造成應用軟件在運行時出現(xiàn)停頓。一般情況下建議少用或者取消這些視覺效果。選擇桌面上“我的電腦”圖標,單擊鼠標右鍵,在彈出的快捷菜單中選擇“屬性”命令,打開“系統(tǒng)屬性”對話框。選擇“高級”選項卡,在其中的“性能”欄中單擊“設置”按鈕,會彈出“性能選項”對話框(如圖4),可選擇“調整為最佳性能”單選框來關閉所有的視覺效果,也可選擇“自定義”然后選擇自己需要的視覺效果。(7)合理設置頁面虛擬內存同樣也是在“性能選項”對話框中,選擇“高級”選項卡,在其中的“虛擬內存”欄中單擊“更改”按鈕,接下來選擇虛擬內存為“自定義大小”,然后設置其數(shù)值。一般情況下,把虛擬設為不小于256M,不大于382M比較合適,而且最大值和最小值最好一樣。(8)修改外觀方案WindowsXP默認的外觀方案雖然漂亮,但對系統(tǒng)資源的占用也多,可將其改為經(jīng)典外觀以獲得更好的性能。在桌面空白位置單擊鼠標右鍵,從彈出的快捷菜單中選擇“屬性”命令,會打開“顯示屬性”對話框,在“主題”選項卡選擇主題為“Windows經(jīng)典”,即可將外觀修改為更為經(jīng)濟的Windows經(jīng)典外觀。(9)取消XP對ZIP支持WindowsXP在默認情況下打開了對zip文件支持,這要占用一定的系統(tǒng)資源,可選擇“開始→運行”,在“運行”對話框中鍵入“regsvr32/uzipfldr.dll”,回車確認即可取消XP對ZIP解壓縮的支持,從而節(jié)省系統(tǒng)資源。(10)關閉Dr.WatsonDr.Watson是WindowsXP的一個崩潰分析工具,它會在應用程序崩潰的時候自動彈出,并且在默認情況下,它會將與出錯有關的內存保存為DUMP文件以供程序員分析。不過,記錄DUMP文件對普通用戶則毫無幫助,反而會帶來很大的不便:由于Dr.Watson在應用程序崩潰時會對內存進行DUMP記錄,將出現(xiàn)長時間硬盤讀寫操作,要很長一斷時間程序才能關閉,并且DUMP文件還會占用大量磁盤空間。要關閉Dr.Watson可打開注冊表編輯器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug”分支,雙擊其下的Auto鍵值名稱,將其“數(shù)值數(shù)據(jù)”改為0,最后按F5刷新使設置生效,這樣就取消它的運行了。同樣,我們可以把所有具備調試功能的選項取消,比如藍屏時出現(xiàn)的memory.dmp,可在“系統(tǒng)屬性”對話框中選擇“高級”選項卡,單擊“啟動和故障恢復”欄中的“設置”按鈕,并在彈出的“啟動和故障恢復”對話框中選擇“寫入調試信息”為“無”(如圖5)。(11)啟動硬盤/光驅DMA模式打開“系統(tǒng)屬性”對話框,選擇“硬件”選擇卡中的“設備管理器”按鈕,打開“設備管理器”窗口,在設備列表中選擇“IDEATA/ATAPI控制器”,雙擊“主要IDE通道”或“次要IDE通過”,在其屬性對話框的“高級設置”選項卡中檢查DMA模式是否已啟動,一般來說如果設備支持,系統(tǒng)就會自動打開DMA功能,如果沒有打開可將“傳輸模式”設為“DMA(若可用)”。(12)關掉不用的設備WindowsXP總是盡可能為電腦的所有設備安裝驅動程序并進行管理,這不僅會減慢系統(tǒng)啟動的速度,同時也造成了系統(tǒng)資源的大量占用。針對這一情況,你可在設備管理器中,將PCMCIA卡、調制解調器、紅外線設備、打印機端口(LPT1)或者串口(COM1)等不常用的設備停用,方法是雙擊要停用的設備,在其屬性對話框中的“常規(guī)”選項卡中選擇“不要使用這個設備(停用)”。在重新啟動設置即可生效,當需要使用這些設備時再從設備管理器中啟用它們。(13)關閉錯誤報告當應用程序出錯時,會彈出發(fā)送錯誤報告的窗口,其實這樣的錯誤報告對普通用戶而言幾乎沒有任何意義,關閉它是明智的選擇。在“系統(tǒng)屬性”對話框中選擇“高級”選項卡,單擊“錯誤報告”按鈕,在彈出的“錯誤匯報”對話框中,選擇“禁用錯誤匯報”單選項,最后單擊“確定”即可。另外我們也可以從組策略中關閉錯誤報告:從“運行”中鍵入“gpedit.msc”,運行“組策略編輯器”,展開“計算機配置→管理模板→系統(tǒng)→錯誤報告功能”,雙擊右邊設置欄中的“報告錯誤”,在彈出的“屬性”對話框中選擇“已禁用”單選框即可將“報告錯誤”禁用。(14)關閉自動更新“自動更新”功能對許多WindowsXP用戶而言并不是必需的,可將其關閉以節(jié)省系統(tǒng)資源。在“我的電腦”上單擊鼠標右鍵,從快捷菜單中選擇“屬性”命令,選擇“系統(tǒng)屬性”對話框中的“自動更新”選項卡,勾選“關閉自動更新,我將手動更新計算機”單選框,單擊“確定”按鈕即可關閉自動更新功能。如果在“服務”已經(jīng)將“AutomaticUpdates”服務關閉,“系統(tǒng)屬性”對話框中的“自動更新”選項卡就不能進行任何設置了。(15)去掉菜單延遲去掉菜單彈出時的延遲,可以在一定程度上加快XP。要修改的鍵值位置在“HKEY_CURRENT_USER\ControlPanel\Desktop”。修改其下的“MenuShowDelay”鍵,把默認的400修改為0,按F5刷新注冊表即可生效。(16)清除預讀文件WindowsXP的預讀設置雖然可以提高系統(tǒng)速度,但是使用一段時間后,預讀文件夾里的文件數(shù)量會變得相當龐大,導致系統(tǒng)搜索花費的時間變長。而且有些應用程序會產(chǎn)生死鏈接文件,更加重了系統(tǒng)搜索的負擔。所以,應該定期刪除這些預讀文件。預計文件存放在WindowsXP系統(tǒng)文件夾的Prefetch文件夾中,該文件夾下的所有文件均可刪除。(17)關閉自動播放功能在WindowsXP中,當往光驅中放入光盤或將USB硬盤接上電腦時,系統(tǒng)都會自動將光驅或USB硬盤掃描一遍,同時提示你是否播放里面的圖片、視頻、音樂等文件,如果是擁有多個分區(qū)的大容量的USB硬盤,掃描會耗費很長的時間,而且你得多次手動關閉提示窗口,非常麻煩。這種情況下我們可以將WindowsXP的自動播放功能關閉。運行“組策略”程序。在組策略窗口左邊欄中,打開“計算機配置”,選擇“管理模板”下的“系統(tǒng)”,然后在右邊的配置欄中找到“關閉自動播放”并雙擊它,會彈出“關閉自動播放屬性”對話框。在其中“設置”選項卡中選擇“已啟用”,“關閉自動播放”下拉列表中選擇“所有驅動器”(如圖6)。這樣以后就不用擔心WindowsXP的“自動播放”功能帶來的麻煩了。如果你只是想禁止系統(tǒng)掃描某個驅動器(如USB硬盤)上的文件,可采用下面的方法。先連上你的USB硬盤,讓系統(tǒng)將它識別出來。然后打開“我的電腦”,選擇USB硬盤上的某個分區(qū),按鼠標右鍵,會彈出磁盤屬性窗口,選取“自動播放”選項卡,將所有內容的類型都選擇為不執(zhí)行操作。如果USB硬盤有多個分區(qū),對所有分區(qū)都進行同樣的操作,這樣當你將USB驅動器拔掉再重新接上時,系統(tǒng)會將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”;通過這樣設置后的關機速度明顯要加快了。夠全面吧~~◆二、硬件優(yōu)化設置◆1、關掉不用的設備
在設備管理器中,將PCMCIA卡、調制解調器、紅外線設備、打印機端口(LPT1)或者串口(COM1)等不常用的設備停用,在要停用設備屬性對話框中的“常規(guī)”選項卡中選擇“不要使用這個設備(停用)”。當需要使用這些設備時再從設備管理器中啟用它們?!?、內存性能優(yōu)化
WindowsXP中有幾個選項可以優(yōu)化內存性能,它們全都在注冊表下面位置:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession
ManagerMemory
Management
1)禁用內存頁面調度(Paging
Executive)
XP會把內存中的片斷寫入硬盤,我們可以阻止它這樣做,讓數(shù)據(jù)保留在內存中,從而提升系統(tǒng)性能。256M以上內存才使用這個設置。把“DisablePagingExecutive”的值從0改為1就可以禁止內存頁面調度了。
2)提升系統(tǒng)緩存
必須有256M以上的內存,才激活它。把LargeSystemCache鍵值從0改為1,一般來說,這項優(yōu)化會使系統(tǒng)性能得到相當?shù)奶嵘?,但也有可能會使某些應用程序性能降低?/p>
3)輸入/輸出性能
內存大于256M才更改這里的值,這個優(yōu)化只對server(服務器)用戶才有實在意義,它能夠提升系統(tǒng)進行大容量文件傳輸時的性能。建一個DWORD(雙字節(jié)值)鍵值,命名為IOPageLockLimit,數(shù)值設8M-16M字節(jié)之間性能最好,具體設什么值,可試試哪個值可獲得最佳性能。這個值是用字節(jié)來計算的,比如你要分配12M,就是12×1024×1024,也就是12582912。◆3、啟動硬盤/光驅DMA模式
“系統(tǒng)屬性”-“硬件”-“設備管理器”,在設備列表中選擇“IDE
ATA/ATAPI控制器”,雙擊“主要
IDE
通道”或“次要
IDE
通道”,在其屬性對話框的“高級設置”選項卡中檢查DMA模式是否已啟動,一般來說如果設備支持,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭健康檔案與疾病預防計劃表
- 股份制改革流程操作指南
- 養(yǎng)殖產(chǎn)業(yè)合作與獸醫(yī)服務協(xié)議
- 專業(yè)寫作培訓資源共享協(xié)議
- 公司內部人事調整規(guī)章制度
- 智能交通系統(tǒng)建設及交通管理優(yōu)化方案設計
- 工作流程表格-任務清單
- 電子會議系統(tǒng)使用記錄表格
- 數(shù)學故事征文探索數(shù)學之美與實際應用價值
- 歷史古代文明發(fā)展脈絡閱讀題
- 2025年雙方協(xié)商一致自愿離婚協(xié)議書范本
- 眼科與視功能檢查屈光參差課件
- GB/T 6433-2025飼料中粗脂肪的測定
- 2025年湖南司法警官職業(yè)學院單招職業(yè)傾向性測試題庫學生專用
- 2025年呼和浩特職業(yè)學院單招職業(yè)傾向性測試題庫及參考答案
- 2025山西國際能源集團有限公司所屬企業(yè)社會招聘258人筆試參考題庫附帶答案詳解
- 四川德陽歷年中考語文文言文閱讀試題12篇(含答案與翻譯)(截至2024年)
- 合唱之美知到智慧樹章節(jié)測試課后答案2024年秋山東航空學院
- 中國卒中學會急性缺血性卒中再灌注治療指南+2024解讀
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
評論
0/150
提交評論