




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北師大版四年級數學下冊認識方程練習題
- 全州縣2024-2025學年六年級下學期小升初招生數學試卷含解析
- 四川工業科技學院《現代模具制造》2023-2024學年第二學期期末試卷
- 西藏拉薩北京實驗中學2025年初三年級語文試題月考試卷含解析
- 南充電影工業職業學院《安裝工程施工技術與造價審計》2023-2024學年第二學期期末試卷
- 石家莊市重點中學2025屆初三下學期9月月考化學試題試卷含解析
- 武漢工程職業技術學院《電動汽車故障檢測與診斷》2023-2024學年第二學期期末試卷
- 西藏山南地區扎囊縣2024-2025學年四下數學期末學業水平測試模擬試題含解析
- 四川美術學院《在經濟統計中的應用》2023-2024學年第一學期期末試卷
- 山西財經大學《現代交換原理與技術實驗》2023-2024學年第二學期期末試卷
- 4-13-01-06 國家職業標準檔案數字化管理師S (2025年版)
- 資產分紅合同協議
- 中國高職院校畢業生薪酬報告(2024年度)
- 江蘇省南京市聯合體2024-2025學年下學期八年級數學期中練習卷(含部分答案)
- 山東省濟南西城實驗中學2024-2025學年高一下學期4月月考地理試題(原卷版+解析版)
- 跨學科實踐制作簡易桿秤人教版八年級下冊物理
- 消毒供應中心規范培訓
- 口腔門診6S管理
- 沉浸式體驗活動設計合同
- 易制毒化學品銷售人員崗位職責
- 2025四川九洲建筑工程有限責任公司招聘生產經理等崗位6人筆試參考題庫附帶答案詳解
評論
0/150
提交評論