基于STM32的便攜式音樂(lè)播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書_第1頁(yè)
基于STM32的便攜式音樂(lè)播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書_第2頁(yè)
基于STM32的便攜式音樂(lè)播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書_第3頁(yè)
基于STM32的便攜式音樂(lè)播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書_第4頁(yè)
基于STM32的便攜式音樂(lè)播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于STM32的便攜式音樂(lè)播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書 編號(hào) 畢業(yè)設(shè)計(jì)說(shuō)明書 論文 課 題 便攜式音樂(lè)播放器設(shè)計(jì) 學(xué) 院 電子工程與自動(dòng)化學(xué)院 專 業(yè) 電子信息科學(xué)與技術(shù) 學(xué)生姓名 學(xué) 號(hào) 指導(dǎo)教師 職 稱 高級(jí)研究員 題目類型 理論研究 實(shí)驗(yàn)研究 工程設(shè)計(jì) 工程技術(shù)研究 軟件開發(fā)7>2013 年 4 月 20 日摘 要隨著電子行業(yè)的迅猛發(fā)展人們對(duì)消費(fèi)類電子產(chǎn)品的需求越來(lái)越高多功能便攜式MP3也越來(lái)越受大眾的青睞根據(jù)消費(fèi)者的愛(ài)好需求各種多功能的MP3層出不窮其盡可能的吸收照相機(jī)手機(jī)等電子產(chǎn)品的其它功能本次系統(tǒng)設(shè)計(jì)采用ARM Cortex-M3內(nèi)核的STM32F103VET6作為微控制器SD卡

2、作為存儲(chǔ)介質(zhì)VS1003作為音頻解碼芯片以及TFT彩晶屏作為人際交互設(shè)備設(shè)計(jì)一款可播放mp3wav文件格式的便攜式音樂(lè)播放器并實(shí)現(xiàn)相關(guān)功能本次設(shè)計(jì)的重點(diǎn)是了解FAT文件系統(tǒng)的構(gòu)造SD卡的讀取VS1003芯片的解碼過(guò)程人機(jī)交互設(shè)備的控制操作以及各主從機(jī)之間的通訊方式其中STM32F103系列集成了低功耗IO資源多通信接口多體積小價(jià)格適中等多項(xiàng)優(yōu)點(diǎn)隨著日本松下東芝及美國(guó)SanDisk公司于1999年8月共同研制SD卡被廣泛應(yīng)用與閃存介質(zhì)并易于讀取VS1003是一個(gè)多功能的mp3wav解碼芯片自帶DAC具有無(wú)相位差的立體聲輸出TFT顯示屏集成了觸控特點(diǎn)使得人機(jī)交互更為簡(jiǎn)便程序編寫更為簡(jiǎn)潔關(guān)鍵字STM

3、32F103VET6SD卡VS1003解碼芯片TFT彩晶屏便攜式音樂(lè)播放器AbstractWith the rapid development of the electronics industry he consumer electronic products have been used more often by people because of their growing demand Its popular to have a Multi-function portable MP3 for people with the increasingly favored by the pu

4、blic A variety of multi-function MP3 after another according to the demand of consumer They were produced with absorb the other features of the cameras cell phones and other electronic products as much as possible The system used the ARM Cortex-M3 core STM32F103VET6 as microcontroller SD card as the

5、 storage medium VS1003 as human interaction as the audio decoder chip and TFT display screen equipment to make a Portable Music Player with the function that could play wav and mp3 files in this design and some related functions The difficulty lie in design is focused on understanding the structure

6、of the FAT file system how to read SD card the process of decoding in VS103 chip the control of human-computer interaction and the communication by master and slave Among of these devices STM32F103 series integrates a low-power IO resources communication interface small size affordable and many othe

7、r advantages Panasonic Toshiba SanDisk Corporation and the United States develop together in August 1999 SD cards are widely application and flash media and easy to read VS1003 is a mp3 wav decoder chip with many function built-in DAC and stereo output with no phase difference TFT as a display make

8、the human-computer interaction easier and programming more concise by integrating touch featuresKey words STM32F103VET6 SD card VS1003 decoder chip TFT display screen Portable Music Player目 錄引言11 設(shè)計(jì)任務(wù)與思路211 設(shè)計(jì)任務(wù)212 設(shè)計(jì)思路22 器件選擇和系統(tǒng)框圖221 器件選擇222 系統(tǒng)框圖與概述23 硬件電路設(shè)計(jì)431 電源模塊432 微控制器模塊533 SD卡模塊634 音頻解碼模塊735

9、音頻放大模塊836 彩晶顯示模塊937 復(fù)位模塊104 FAT文件系統(tǒng)1041 FAT文件系統(tǒng)簡(jiǎn)介1042 FAT文件系統(tǒng)的讀取操作125 系統(tǒng)軟件設(shè)計(jì)1551 STM32程序調(diào)試15511 STM32啟動(dòng)簡(jiǎn)析15512 STM32程序測(cè)試17513 STM32時(shí)鐘系統(tǒng)1952 TFT顯示驅(qū)動(dòng)2153 SD卡讀取驅(qū)動(dòng)23531 SD卡總線拓?fù)?3532 寄存器與協(xié)議23533 驅(qū)動(dòng)流程圖2654 VS1003驅(qū)動(dòng)設(shè)計(jì)26541 VS1003總線拓?fù)?6542 VS1003主要寄存器28543 VS1003相關(guān)協(xié)議29544 讀寫時(shí)序29545 驅(qū)動(dòng)流程與框圖3055 系統(tǒng)軟件流程圖316 實(shí)物

10、與功能3161實(shí)物總圖3262 利用電池供電3363 支持wav和mp3格式3364 支持SD卡存儲(chǔ)3465 可選擇播放3466 可快進(jìn)快退357 自我總結(jié)36謝 辭38參考文獻(xiàn)39附 錄 一40附 錄 二46引言在INTERNET廣泛普及的今天MP3音樂(lè)一起較小數(shù)據(jù)流量和近乎完美的播放效果已經(jīng)成為計(jì)算機(jī)和INTERNET上最流行的音樂(lè)格式了將CD格式的音樂(lè)數(shù)據(jù)壓縮成MP3格式音效相差無(wú)幾文件大小卻至少可以壓縮12倍每首PCM格式的CD歌曲大約40MB至50MB數(shù)據(jù)流量自韓國(guó)世韓公司1998年推出世界上第一臺(tái)MP3隨身聽以來(lái)MP3播放器以其小巧外形近乎于CD的音質(zhì)前衛(wèi)的功能越來(lái)越受到消費(fèi)者的青

11、睞也就成為業(yè)界甚至大眾媒體關(guān)注的一個(gè)熱門話題它的記錄媒介是芯片或卡無(wú)需轉(zhuǎn)動(dòng)部件徹底擺脫磁盤和光碟的束縛因而抗震性和節(jié)點(diǎn)性能更好在市場(chǎng)消費(fèi)的刺激下各大公司紛紛推出了自己的mp3播放器產(chǎn)品除了Micronas方案ST方案TI軟解壓?jiǎn)涡酒桨高€有臺(tái)灣創(chuàng)品方案美國(guó)Sigmatel方案等進(jìn)入2004年當(dāng)MP3在容量外觀音質(zhì)上的發(fā)展無(wú)法再吸引更多眼球的時(shí)候開始轉(zhuǎn)向多功能發(fā)展正如在手機(jī)身上所發(fā)生的一切人們對(duì)于MP3的要求不再是單一的欣賞音樂(lè)而是向手機(jī)一樣身兼多職作為全球第一款閃存式彩屏MP3信利MP301的推出引起了MP3市場(chǎng)的巨大關(guān)注除了彩屏的加入MP301還支持圖書圖片瀏覽及游戲功能多功能融合是消費(fèi)類電

12、子產(chǎn)品的發(fā)展趨勢(shì)MP3播放器的誕生為傳統(tǒng)隨身聽?zhēng)?lái)了致命打擊曾幾何時(shí)MP3和MD之間的斗爭(zhēng)成為業(yè)界最熱門的話題當(dāng)時(shí)甚至多數(shù)人都認(rèn)為MP3由于音質(zhì)上的原因?qū)捉oMD但事實(shí)上MP3的發(fā)展遠(yuǎn)遠(yuǎn)超出了MD支持者們的預(yù)想直至今日MP3已成為隨身聽市場(chǎng)的主流產(chǎn)品并成為了繼手機(jī)之后最為廣泛使用的個(gè)人隨身電子產(chǎn)品抱著學(xué)習(xí)的態(tài)度秉著嚴(yán)謹(jǐn)?shù)木裢瓿纱舜我魳?lè)播放器的設(shè)計(jì)1 設(shè)計(jì)任務(wù)與思路11 設(shè)計(jì)任務(wù)本設(shè)計(jì)課題是一個(gè)軟硬件相結(jié)合的設(shè)計(jì)類題目要求設(shè)計(jì)一個(gè)具有如下要求的便攜式音樂(lè)播放器利用電池供電支持wav和mp3格式支持U盤CF卡或者SD卡可選擇播放可快進(jìn)快退12 設(shè)計(jì)思路整個(gè)系統(tǒng)主要由微控制器音頻解碼部分音效處理部

13、分SD卡部分人機(jī)交互部分按鍵復(fù)位部分電源部分程序口下載部分組成整個(gè)系統(tǒng)由MCU控制各個(gè)部分協(xié)調(diào)運(yùn)作2 器件選擇和系統(tǒng)框圖21 器件選擇該系統(tǒng)要求能夠?qū)p3wav格式的音頻文件進(jìn)行解碼處理起來(lái)速度是有要求的尤其是對(duì)320Kbps的MP3格式數(shù)據(jù)流的處理必須非??觳拍軐?shí)現(xiàn)MP3的流暢播放可供選擇的八位機(jī)有AVRPIC可供選擇的32位處理器有SAMSUNGSTM32ATMEL等選擇MCU優(yōu)先考慮于擁有豐富的RAM八位機(jī)RAM主要靠擴(kuò)展內(nèi)部RAM一般在4Kbyte以內(nèi)32位機(jī)里面SAMSUNG一般不內(nèi)帶RAM也要外擴(kuò)出于成本的考慮外擴(kuò)RAMFLASH芯片必然會(huì)增加成本所以控制芯片最好選擇自帶RAMF

14、LASH本次課題設(shè)計(jì)選擇使用STM32F103VET6作為微控制器本次課題設(shè)計(jì)要求的儲(chǔ)存媒介是U盤CF卡或者SD卡SD卡以其價(jià)格低體積小擴(kuò)存容易等優(yōu)勢(shì)迅速占據(jù)市場(chǎng)使用也越來(lái)越廣泛以此同時(shí)各種MCU同時(shí)也在內(nèi)部集成了SD控制器出于成本和使用方便等因素的考慮本次課題設(shè)計(jì)選擇使用SD卡作為儲(chǔ)存媒介由于使用了ARM7處理器MP3解碼可以有兩種方法一是通過(guò)ARM處理器軟解碼通過(guò)對(duì)MP3數(shù)據(jù)格式的解析實(shí)現(xiàn)MP3播放二是通過(guò)外部解碼芯片直接解碼第一種方法在解碼高碼率的MP3時(shí)ARM7處理能力吃緊而且STM32還需要外部DAC來(lái)做音頻輸出所以采用第二種方法進(jìn)行解碼MP3常見(jiàn)的解碼芯片有VS100X系列和STA

15、01系列STA01需要外接DAC做音頻輸出而VS1003自帶DAC且解碼的文件格式包含mp3和wav另外它還可以實(shí)現(xiàn)錄音功能方便以后進(jìn)行功能的拓展應(yīng)用人機(jī)交互設(shè)備包括輸入設(shè)備和輸出設(shè)備選擇硬件考慮到程序的調(diào)試控制這里選擇一款3寸的TFT液晶屏其分辨率位240400工作模式為16位數(shù)據(jù)模式通訊速度較快22 系統(tǒng)框圖與概述本次課題設(shè)計(jì)采用STM32F103VET6作為為控制器讀取SD卡內(nèi)的音樂(lè)文件并將數(shù)據(jù)送入VS1003進(jìn)行音頻解碼得到模擬的音樂(lè)流再進(jìn)過(guò)音頻放大送入耳機(jī)同時(shí)結(jié)合TFT液晶屏進(jìn)行人機(jī)交互控制其系統(tǒng)框圖如圖2-1圖2-1 系統(tǒng)框圖3 硬件電路設(shè)計(jì)31 電源模塊電源模塊是電子設(shè)備中必不可

16、少的一部分它位設(shè)備提供了能量如圖3-1所示為該系統(tǒng)的電源模塊電路5V電壓經(jīng)過(guò)AMS1117-25AMS1117-28和AMS1117-33產(chǎn)生25V28V和33V直流電壓供系統(tǒng)使用C31可以防止電感效應(yīng)而產(chǎn)生自激C33用來(lái)減小由于負(fù)載電流瞬時(shí)變化而引起的高頻干擾C32是進(jìn)一步減小輸出脈動(dòng)和低頻干擾使電源輸出更加穩(wěn)定sp位電源開關(guān)D1和D2位電源指示燈圖3-1 電源模塊電路32 微控制器模塊微控制器STM32F103VET6控制著整個(gè)系統(tǒng)協(xié)調(diào)運(yùn)作STM32F103VET6基于ARM Cortex-M3內(nèi)核設(shè)計(jì)片上集成了豐富的數(shù)字和模擬資源允許最高72MHz的工作頻率是一款性價(jià)比很高的32位ARM

17、處理器其管腳封裝圖如圖3-2自帶128KB閃存和20KB的RAM具有2個(gè)SPI接口2個(gè)IIC接口3個(gè)USART接口一個(gè)USB接口和一個(gè)CAN總線接口高達(dá)80個(gè)IO口資源采用外部8MHz時(shí)鐘經(jīng)過(guò)倍頻因子PLLMUL可倍頻至72MHz通過(guò)一些列的AHB分頻器可設(shè)置各種外設(shè)所需的頻率以達(dá)到低功耗的目的圖3-2 STM32F103VET6管腳圖微控制器電路模塊如圖3-3圖中BOOT0為插針用于選擇啟動(dòng)模式當(dāng)BOOT 1時(shí)用戶閃存存儲(chǔ)器被選為啟動(dòng)區(qū)域此時(shí)可以通過(guò)串口下載程序當(dāng)BOOT 0時(shí)系統(tǒng)存儲(chǔ)區(qū)被選為啟動(dòng)區(qū)域電容C11C12C13和C15為諧振電容有助于系統(tǒng)時(shí)鐘和RTC時(shí)鐘的啟振在設(shè)計(jì)時(shí)晶振要盡可能

18、靠近芯片電容C14C16C17C20位芯片電源引腳的旁路電容能夠起到穩(wěn)定電源的作用微控制器各引腳接口描述如表3-1所示圖3-3 微控制器模塊電路表3-1 STM32F103VET6主要引腳接口描述STM32F103VET6引腳序號(hào)接口類型接口作用89RTC時(shí)鐘晶振接口32768KHz晶振Y11213系統(tǒng)時(shí)鐘接口8MHz晶振Y283SD卡控制器接口SD卡命令控制SDIO_CMD80SD卡時(shí)鐘控制SDIO_CLK65667879SD卡數(shù)據(jù)通訊SDIO_DATA97VS1003控制接口異步復(fù)位端低電平有效XREST51片選輸入端低電平有效XCS63數(shù)據(jù)片選端字節(jié)同步XDCSBSYNC52串行總線時(shí)鐘

19、SCLK54串行輸入SI53串行輸出SO98TFT液晶屏接口復(fù)位88片選30時(shí)鐘SCK31MISO32MOSI38-4655-576162818216位數(shù)據(jù)接口DATA33 SD卡模塊SD卡Secure Digital Memory Card中文翻譯為安全數(shù)碼卡是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備SD卡的物理規(guī)格管腳功能和數(shù)據(jù)傳輸協(xié)議時(shí)MMCMultimedia Card前向兼容的它被廣泛用于便攜式裝置上使用例如數(shù)碼相機(jī)個(gè)人數(shù)碼助理 PDA 和多媒體播放器SD卡由日本松下東芝及美國(guó)SanDisk公司于1998年共同開發(fā)研制大小猶如一張郵票的SD記憶卡重量只有2克但卻擁有高記憶容量快速數(shù)據(jù)

20、傳輸率極大的移動(dòng)性以及很好的安全性SD卡標(biāo)準(zhǔn)是SD卡協(xié)會(huì)針對(duì)可移動(dòng)存儲(chǔ)設(shè)備設(shè)計(jì)專利并授權(quán)的一種標(biāo)準(zhǔn)主要用于制定卡的外形尺寸電氣接口和通訊協(xié)議其中SD卡外形尺寸如圖3-4引腳功能如表3-2圖3-4 SD卡外形尺寸表3-2 SD卡引腳圖PinSD modeSPI modeNameTypeDiscriptionNameTypeDiscription0DATA2IOPPDATA LineRSVIReserved1DATA3IOPPDATA LineCSIChipSelect2CMDPPCommandDataInIHost to card3VSSISGroundVSSISGround4VDDSVolta

21、geVDDSSupply Voltage5CLKIClockCLKIClock6VSS2SVoltageVSS2SVoltage 7DATA0IOPPDATA LineDataOutOCard to Host8DATA1IOPPDATA LineRSVUReserved由于SD卡的廣泛引用各種常用MCU內(nèi)部都集成了SD控制器而恰好本次設(shè)計(jì)選取的STM32F103VET6內(nèi)部也含有SD控制器接口為了獲得更大的數(shù)據(jù)傳輸速度本次設(shè)計(jì)采用SD模式進(jìn)行主從機(jī)之間的通訊該模式下具有6根通訊線Data0-3CMDCLK和三根電源線VSS1VSS2VDD電路模塊如圖3-5其中RVA0-RVA4為增強(qiáng)驅(qū)動(dòng)能力圖

22、3-5 SD卡電路模塊34 音頻解碼模塊本次課題設(shè)計(jì)采用的解碼芯片是VS1003VS1003是芬蘭VLSI公司生產(chǎn)的單芯片MP3WMA音頻解碼芯片其擁有一個(gè)高性能低功耗的DSP處理器核VSDSP5KB的指令RAM05KB的數(shù)據(jù)RAM串行的控制和數(shù)據(jù)輸入接口4個(gè)通用的IO口1個(gè)UART口1個(gè)可變采樣率的DAC1個(gè)立體聲DAC以及音頻耳機(jī)放大器其內(nèi)部結(jié)構(gòu)如圖3-6所示圖3-6 VS1003內(nèi)部結(jié)構(gòu)VS1003通過(guò)一個(gè)串行接口來(lái)接收輸入的比特流它可以作為一個(gè)系統(tǒng)的從機(jī)輸入的比特流被解碼然后通過(guò)一個(gè)數(shù)字音量控制器到達(dá)一個(gè)18位過(guò)采樣多位 DAC通過(guò)串行總線控制解碼器除了基本的解碼在用戶RAM中它還可以

23、作其他特殊應(yīng)用例如DSP音效處理其內(nèi)部部分引腳功能如表3-3表3-3 VS1003部分引腳功能表引腳號(hào)管腳名稱管腳功能61419IOVDDIO電源典型值28V 最大值36V38434547APWR模擬電源典型值25V最大值28V572431CVDD處理器內(nèi)核電源典型值28V36V37404147AGND模擬地3XRESET低電平有效異步復(fù)位端8DREQ數(shù)據(jù)請(qǐng)求輸入總線9GPIO2DCLK通用IO2串行數(shù)據(jù)總線時(shí)鐘10GPIO3SDATA通用IO3串行數(shù)據(jù)總線數(shù)據(jù)13XDCSBSYNC數(shù)據(jù)片選端字節(jié)同步17和18XTALO XTALI晶振輸出和晶振輸入23XCS片選輸入低電平有效28SCLK串行

24、總線的時(shí)鐘29和30SI和SO串行輸入和串行輸出39和46RIGHT和LEFT右聲道輸出和左聲道輸出在設(shè)計(jì)VS1003解碼電路時(shí)數(shù)字地與模擬地必須相互連接并盡量靠近VS1003以避免鎖存上拉為了能播放48KHz采樣率的音頻文件輸入時(shí)鐘使用12288MHz具體設(shè)計(jì)電路如圖3-7所示VS1003通過(guò)MISO、MOSI、SCK SPI接口 來(lái)接收輸入的MP3數(shù)據(jù)經(jīng)過(guò)VS1003內(nèi)置的采樣DAC轉(zhuǎn)換為音頻模擬量最后通過(guò)Left、Right和Gbuf輸出表3-7 VS1003接口電路35 音頻放大模塊本次課題設(shè)計(jì)采用的音頻功放芯片是TDA1308TDA1308是AB類的數(shù)字音頻 CD 專用耳機(jī)功放芯片低

25、電壓低失真高速率強(qiáng)輸出等優(yōu)異的性能是以往的TDA2822TDA7050LM386等經(jīng)典功放望塵莫及的芯片內(nèi)采用MOS管輸出可直接推動(dòng)低阻抗耳機(jī)因?yàn)榉庋b和功能引腳位與一般的雙運(yùn)放相同在特定條件下也能當(dāng)雙運(yùn)放使用在低供電電壓條件下性能比一般的運(yùn)放要好因其封裝體積小低電壓低功耗等特點(diǎn)主要應(yīng)用在便攜式數(shù)字音頻電路中如discman光驅(qū)的耳放電路等其引腳配置與功能方框圖如圖3-8圖3-8 TDA1308引腳配置和功能方框圖在設(shè)計(jì)音頻放大電路模塊時(shí)采用了同相放大電路的接法設(shè)計(jì)電路如圖3-9輸入信號(hào)電壓A5V加到運(yùn)放的同相輸入端和地之間輸出電壓通過(guò)RV1和RV2的分壓作用可得電壓增益Av 1RV2RV1本次

26、設(shè)計(jì)采用RV1 RV2使得電壓放大為原來(lái)的兩倍輸出至耳機(jī)接口圖3-9 音頻放大電路36 彩晶顯示模塊顯示器采用奮斗STM32開發(fā)板30TFT240400本次設(shè)計(jì)的LCD觸摸屏所采用的控制器為XPT2046 XPT2046是一種典型的逐次逼近型模數(shù)轉(zhuǎn)換器SAR ADC包含了采樣保持模數(shù)裝換串口數(shù)據(jù)輸出等功能芯片內(nèi)部集成有一個(gè)25V的內(nèi)部參考電壓也可以從外部直接輸入?yún)⒖茧妷浩渲薪涌诓捎肕CU的FSMC功能LCD片選CS采用FSMC_NE1 P88 FSMC_A16 P58 作為L(zhǎng)CD的RS選擇FSMC_nWE1 P86 作為L(zhǎng)CD的WRFSMC_nOE P85 作為L(zhǎng)CD的RDLCD的RESET腳

27、用CPU的PE1P98 LCD-RST FSMC_D0- FSMC_D15和LCD的D1-D8 D10-D17相互連接觸摸屏接口采用SPI1接口片選位PB7-SPI1-CS3由于LCD背光采用恒流源芯片PT4101控制采用PWM控制信號(hào)控制背光的明暗PWM信號(hào)由PD13-LIGHT-PWM來(lái)控制觸摸電路的中斷申請(qǐng)有PB6-INT來(lái)接收其設(shè)計(jì)電路如圖3-10所示圖3-10 彩晶顯示電路37 復(fù)位模塊復(fù)位電路如圖3-11所示當(dāng)接通電源時(shí)電容C10進(jìn)行充電使得nRST為高電平按下復(fù)位按鍵后電容C10放電為低電平實(shí)現(xiàn)復(fù)位功能圖3-11 復(fù)位電路4 FAT文件系統(tǒng)41 FAT文件系統(tǒng)簡(jiǎn)介MP3文件、BM

28、P、TXT等文件在SD卡中是以FAT11的文件格式存儲(chǔ)的FAT即文件配置表本系統(tǒng)采用FAT1632以FAT32為例其數(shù)據(jù)信息常分為5個(gè)部分MBR區(qū)DBR區(qū)FAT區(qū)FDT區(qū)和DATA區(qū)由于SD卡一般不做引導(dǎo)盤一般也不分區(qū)因此通常無(wú)MBR區(qū)直接從DBR區(qū)開始各分區(qū)的含義如下MBR區(qū) 主引導(dǎo)記錄區(qū)該區(qū)存儲(chǔ)了分區(qū)表等信息位于SD卡的扇區(qū)0物理扇區(qū)在其分區(qū)信息里面記錄了DBR所在的位置DBR區(qū) 內(nèi)容為系統(tǒng)引導(dǎo)記錄它包括一個(gè)引導(dǎo)程序和一個(gè)被稱為BPBBios Parameter Block的本分區(qū)參數(shù)記錄表BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)結(jié)束扇區(qū)文件存儲(chǔ)格式根目錄大小FAT個(gè)數(shù)分配單元大小等重要參數(shù)FA

29、T區(qū)稱為文件分配表FAT 表一般一個(gè)卡上會(huì)存在2個(gè)FAT表一個(gè)用作備份一個(gè)用作使用FAT表一般緊隨DBR另一個(gè)FAT表則緊隨第一個(gè)FAT表FAT表記錄了每個(gè)文件的位置和區(qū)域是一種鏈?zhǔn)浇Y(jié)構(gòu)FAT以F8 FF FF 0F FF FF FF FF這樣的8個(gè)字節(jié)為表頭用以表示FAT表的開始后面的數(shù)據(jù)每四個(gè)字節(jié)為一個(gè)簇項(xiàng)從第2簇開始用來(lái)標(biāo)記下一個(gè)簇所在的位置這樣每個(gè)位置都存儲(chǔ)了下一個(gè)簇只要按著這個(gè)表走就可以找到文件的所有內(nèi)容如果找到下一個(gè)簇的位置里面記錄的是FF FF FF 0F代表這個(gè)文件到此就結(jié)束了沒(méi)有后續(xù)簇了這樣一個(gè)文件的讀取就結(jié)束了FTD區(qū)該區(qū)的內(nèi)容為文件目錄表FAT文件系統(tǒng)的一個(gè)重要思想是把目

30、錄文件夾當(dāng)作一個(gè)特殊的文件來(lái)處理FAT32甚至將根目錄當(dāng)作文件處理FAT分區(qū)中所有目錄文件實(shí)際上可以看作是一個(gè)存放其它文件文件夾入口參數(shù)的數(shù)據(jù)表因此目錄占用空間的大小并不等同于其下所有數(shù)據(jù)的大小但也不等于0通常占很小的空間其具體的存儲(chǔ)原理是不管目錄文件所占空間為多少簇一簇為多少扇區(qū)多少字節(jié)系統(tǒng)都會(huì)以32個(gè)字節(jié)為單位進(jìn)行目錄文件所占簇的分配各個(gè)字段定義如表4-1所列DATA區(qū)該數(shù)據(jù)區(qū)存放文件的內(nèi)容SD卡所占用的空間絕大部分為此部分如果文件長(zhǎng)度大于一個(gè)簇的大小需要多個(gè)簇來(lái)存放該文件這些簇通過(guò)FAT鏈表串連起來(lái)表4-1 文件目錄表各字段定義FAT32文件目錄項(xiàng)32個(gè)字節(jié)的定義字節(jié)偏移量字?jǐn)?shù)量定義07

31、8文件名8103擴(kuò)展名111屬性字節(jié)0x00 讀寫 0x01 只讀 0x02 隱藏 0x04 系統(tǒng) 0x08 卷標(biāo) 0x10 子目錄 0x20 歸檔 121系統(tǒng)保留131創(chuàng)建時(shí)間的10毫秒位14152文件創(chuàng)建時(shí)間16172文件創(chuàng)建日期18192文件最后訪問(wèn)時(shí)間20212文件起始簇號(hào)的高16位22232文件的最近修改時(shí)間24252文件的最近修改日期26272文件起始簇號(hào)的低16位28314表示文件的長(zhǎng)度42 FAT文件系統(tǒng)的讀取操作一般硬盤的數(shù)據(jù)結(jié)構(gòu)是按圖4-1而建立的圖4-1 FAT文件系統(tǒng)結(jié)構(gòu)圖啟動(dòng)區(qū)的內(nèi)容也就是第一個(gè)扇區(qū)使用WinHex軟件查看如圖4-2所示其中帶下劃線或點(diǎn)線部分為有用內(nèi)容

32、具體含義依次如下圖4-2 FAT啟動(dòng)區(qū)EB 59 90跳轉(zhuǎn)指令4D 53 44 4F 53 35 2E 30廠商標(biāo)志和dos版本號(hào)這里是MSDOS5000 20 偏移地址0BH長(zhǎng)度2 注意這里數(shù)據(jù)的布局高地址放高字節(jié)低地址放低字節(jié)數(shù)據(jù)為小端格式組織所以數(shù)據(jù)應(yīng)該是0200就是512表示的意思是該磁盤每個(gè)扇區(qū)有512個(gè)字節(jié)有的可能是10242048409608 偏移地址0DH長(zhǎng)度1 表示每個(gè)簇有8個(gè)扇區(qū)這個(gè)值不能為0而且必須是2的整數(shù)次方比如1248163264128但是這個(gè)值不能使每個(gè)簇超過(guò)32KB24 00 偏移地址0EH長(zhǎng)度2 轉(zhuǎn)換一下就是0024意思是保留區(qū)域中的保留扇區(qū)數(shù)為36個(gè)那么就可

33、以知道下面的FAT1區(qū)的開始的地址就是0x24200每個(gè)扇區(qū)的字節(jié)數(shù) 0x480002 偏移地址10H長(zhǎng)度1 此卷中的FAT結(jié)構(gòu)的份數(shù)為2另外一個(gè)是備份的C6 03 偏移地址24H長(zhǎng)度2 每個(gè)FAT占用的扇區(qū)數(shù)轉(zhuǎn)換一下為03C6那么每個(gè)扇區(qū)占用的字節(jié)數(shù)就是0x03C6200 78C00根據(jù)啟動(dòng)區(qū)FAT1FAT2根目錄數(shù)據(jù)區(qū)的次序可以依次計(jì)算出它們的地址通過(guò)以上分析我們知道了啟動(dòng)區(qū)地址是0x00FAT1表的起始地址的為0x4800如圖4-3所示FAT2表的起始地址為0x48000x78C00 0x7D400如圖4-4所示根目錄區(qū)的起始地址為0x7D4000x78C00 0xF6000如圖4-5所

34、示圖4-3 FAT1的起始地址圖4-4 FAT2的起始地址圖4-5 根目錄的起始地址從SD卡中讀取數(shù)據(jù)需要給出數(shù)據(jù)的地址而且每次讀取都是一個(gè)整扇區(qū)512個(gè)字節(jié)找出這些地址后可以很方便的找到數(shù)據(jù)由此可見(jiàn)讀取0扇區(qū)的內(nèi)容我們就知道FAT文件系統(tǒng)的重要參數(shù)了現(xiàn)在分析下根目錄區(qū)的內(nèi)容根據(jù)前面得到的根目錄地址0xF6000通過(guò)軟件查看它的內(nèi)容如圖4-6所示這里使用的是FAT32短文件目錄項(xiàng)每32個(gè)字節(jié)表示一個(gè)文件文件夾也是具體含義分別如下5A 53 44 4C 20 20 20 20驅(qū)動(dòng)器的名稱8個(gè)字節(jié)圖4-6 根目錄中的數(shù)據(jù)54 45 53 54 20 20 20 20 偏移地址20H長(zhǎng)度8 文件名T

35、EST 空缺部分是空格 54 58 54 偏移地址28H長(zhǎng)度3 文件類型為ASCII字符表示20 偏移地址2BH長(zhǎng)度1 文件屬性00000000 讀寫 00000001 只讀 00000010 隱藏 00000100 系統(tǒng) 00001000 卷標(biāo) 00010000 子目錄 00100000 歸檔 58 39 偏移地址30H長(zhǎng)度2 文件創(chuàng)建時(shí)間58 39 偏移地址32H長(zhǎng)度2 文件最后訪問(wèn)日期03 00 偏移地址3AH長(zhǎng)度2 起始簇的簇號(hào)為0377 2D 00 00 偏移地址3CH長(zhǎng)度4 文件長(zhǎng)度2D77就是11639字節(jié) 從文件的大小可以計(jì)算出需要占用多少個(gè)簇根據(jù)前面的數(shù)據(jù)每個(gè)簇放8個(gè)扇區(qū)每個(gè)

36、扇區(qū)512個(gè)字節(jié)那么一個(gè)簇的空間就是4096字節(jié)了即4KB那么11639字節(jié)需要3個(gè)簇這三個(gè)簇的開始的地址就可以計(jì)算出來(lái)了通過(guò)起始簇號(hào)計(jì)算得到起始簇的地址0xF6000根目錄區(qū)地址03-2080x200 0xF7000第一個(gè)簇開始地址這里03減去的02的意思是因?yàn)榇靥?hào)都是從2開始的第二個(gè)簇號(hào)存放在0x48000304因?yàn)樗膫€(gè)字節(jié)存一個(gè)簇號(hào) 0x480C中通過(guò)圖4-7可知0x480C里面的內(nèi)容是04 00 00 00即第二簇號(hào)為04此時(shí)第二個(gè)簇的地址0xF600004-2080x200 0xF8000依次查看FAT1表可知第三個(gè)簇號(hào)為05地址0xF600005-2080x200 0xF9000繼

37、續(xù)看看下一個(gè)簇號(hào)內(nèi)容為0x0FFFFFFF說(shuō)明文件放置結(jié)束圖4-7 FAT1表中的內(nèi)容通過(guò)以上分析可以得到該文件數(shù)據(jù)存放的起始地址了0xF7000第一個(gè)簇開始地址、0xF8000第二個(gè)簇開始地址、0xF9000第三個(gè)簇開始地址他們?cè)谖募到y(tǒng)中存儲(chǔ)的數(shù)據(jù)分別如圖圖4-8、圖4-9、圖4-10所示由此就可以獲得該文件的數(shù)據(jù)了圖4-8 簇中的數(shù)據(jù)1圖4-9 簇中的數(shù)據(jù)2圖4-10 簇中的數(shù)據(jù)35 系統(tǒng)軟件設(shè)計(jì)51 STM32程序調(diào)試511 STM32啟動(dòng)簡(jiǎn)析要想較清楚的了解STM32的啟動(dòng)則必然得對(duì)STM32庫(kù)有初步的認(rèn)知STM32庫(kù)是有ST公司針對(duì)STM32提供的函數(shù)接口即APIApplicati

38、on Program Interface開發(fā)者可調(diào)用這些函數(shù)接口來(lái)配置STM32的寄存器使使用者得于脫離最底層的寄存器操作有開發(fā)快速易于閱讀維護(hù)成本低等優(yōu)點(diǎn)實(shí)際上庫(kù)是架設(shè)在寄存器與用戶驅(qū)動(dòng)層之間的代碼向下處理與寄存器直接相關(guān)的配置向上為用戶提供配置寄存器的接口庫(kù)開發(fā)配置與直接配置寄存器方式區(qū)別如圖5-1所示對(duì)于STM32因?yàn)橥庠O(shè)資源豐富帶來(lái)的必然是寄存器的數(shù)量和復(fù)雜度的增加這是如果直接配置則開發(fā)速度慢程序可讀性差這兩個(gè)缺陷直接影響了用戶使用效率而庫(kù)開發(fā)方式則正好彌補(bǔ)了這兩個(gè)缺陷相對(duì)于庫(kù)開發(fā)的方式直接配置方式產(chǎn)生的代碼會(huì)相對(duì)減少但因?yàn)镾TM32有充足的資源權(quán)衡庫(kù)開發(fā)的優(yōu)勢(shì)與不足本次設(shè)計(jì)采用庫(kù)開發(fā)

39、方式實(shí)現(xiàn)寄存器的配置圖5-1 驅(qū)動(dòng)方式STM32采用的是Cortex-M3內(nèi)核內(nèi)核是整個(gè)微控制器的CPU該內(nèi)核是ARM公司設(shè)計(jì)的一個(gè)處理器體系結(jié)構(gòu)但ARM公司不生產(chǎn)芯片只做技術(shù)授權(quán)使之產(chǎn)生不同商家的外圍硬件差異性為了解決不同芯片廠商生產(chǎn)的Cortex微控制器軟件的兼容性問(wèn)題ARM與芯片廠商建立了CMSIS標(biāo)準(zhǔn)CMSIS標(biāo)準(zhǔn)中主要的為CMSIS核心層它包括內(nèi)核函數(shù)層其中包括用于訪問(wèn)內(nèi)核寄存器的名稱地址定義主要有ARM公司提供設(shè)備外設(shè)訪問(wèn)層提供了片上的核外外設(shè)的地址和中斷定義主要由芯片生產(chǎn)商提供課件CMSIS層位于硬件層和操作系統(tǒng)或用戶之間可以為接口外設(shè)實(shí)時(shí)操作系統(tǒng)提供簡(jiǎn)單的處理器軟件接口屏蔽了硬

40、件差異對(duì)軟件的移植產(chǎn)生極大地好處STM32的庫(kù)就是按照CMSIS的標(biāo)準(zhǔn)建立STM32的30版本庫(kù)可以從官網(wǎng)獲得解壓后找到6>HTML文件和Library文件HLML文件時(shí)告訴我們ST公司已經(jīng)為你寫好了每個(gè)外設(shè)的驅(qū)動(dòng)Library文件下是驅(qū)動(dòng)庫(kù)的源代碼和啟動(dòng)文件使用時(shí)將Library文件下的庫(kù)函數(shù)文件添加到工程中這樣就基本完成了寄存器的配置相關(guān)函數(shù)文件功能如下core_cm3c文件該文件可用于屏蔽不同編譯器的差異但最重要的時(shí)該文件中包含了stdinh這個(gè)頭文件它是獨(dú)立于處理器之外的主要作用是提供一些新類型的定義system_stm32f10xc文件該文件是ST公司提供的遵守CMSIS標(biāo)準(zhǔn)功

41、能是設(shè)置系統(tǒng)時(shí)鐘和總線時(shí)鐘通過(guò)M3核的核內(nèi)寄存器來(lái)對(duì)8MHz的時(shí)鐘進(jìn)行倍頻 分頻或者使用芯片內(nèi)部的時(shí)鐘所有的外設(shè)都是與時(shí)鐘的頻率有關(guān)所以這個(gè)文件的時(shí)鐘配置是很關(guān)鍵的System_stm32f10xc文件在實(shí)現(xiàn)系統(tǒng)時(shí)鐘時(shí)要用到PLL這就需要操作寄存器寄存器都是通過(guò)存儲(chǔ)器映射的方式來(lái)訪問(wèn)的因此該文件包含stm32f10xh這個(gè)頭文件stm32f10xh文件這個(gè)文件非常重要是一個(gè)非常底層的文件所有處理器廠商都會(huì)對(duì)內(nèi)存的操作封裝成一個(gè)宏即我們通常說(shuō)的寄存器并且把這些實(shí)現(xiàn)封裝成一個(gè)系統(tǒng)文件包含在相應(yīng)的開發(fā)環(huán)境中這樣在應(yīng)用程序時(shí)只需將這個(gè)頭文件包含進(jìn)來(lái)stm32f10x_pppc和stm32f10x_pp

42、ph文件這是ST公司針對(duì)每個(gè)STM32外設(shè)而編寫的庫(kù)函數(shù)文件屬于CMSIS的設(shè)備外設(shè)函數(shù)其中ppp表示外設(shè)名稱startup_stm32f10x_hds上電后微控制器無(wú)法從硬件上定位main函數(shù)的入口地址需要一個(gè)啟動(dòng)文件來(lái)處理Library文件夾下幾種不同的啟動(dòng)文件本次使用的STM32F103VET6有64KRAM512KROM屬于高密度產(chǎn)品所以選擇該文件啟動(dòng)文件的作用便是負(fù)責(zé)執(zhí)行微控制器從復(fù)位到開始執(zhí)行main函數(shù)中間這段時(shí)間稱為啟動(dòng)過(guò)程所必須進(jìn)行的工作總的來(lái)說(shuō)啟動(dòng)文件的作用是初始化堆棧指針SP初始化程序計(jì)數(shù)器指針PC設(shè)置堆棧的大小設(shè)置異常向量表的入口地址配置外部SRAM作為數(shù)據(jù)寄存器設(shè)置C

43、庫(kù)的分支入口_main在庫(kù)目錄ProjectSTM32F10x_Stdperiph_Template目錄下存放了官方的一個(gè)庫(kù)工程模板我們?cè)趲?kù)建立一個(gè)完整的工程時(shí)還需要添加這個(gè)目錄下的stm32f10x_itcstm32f10x_ithstm32f10x_confh這三個(gè)文件stm32f10x_itc文件是專門用來(lái)編寫中斷服務(wù)函數(shù)的在修改前這個(gè)文件已經(jīng)定義了一些系統(tǒng)異常的接口其它普通中斷服務(wù)函數(shù)有我們自己添加而這些中斷服務(wù)函數(shù)的接口可以在啟動(dòng)文件中找到stm32f10x_confh文件這個(gè)文件包含了stm32f10xh是用來(lái)配置使用了什么外設(shè)的頭文件用這個(gè)頭文件可以很方便的增加或刪減上面driv

44、e目錄下的外設(shè)驅(qū)動(dòng)函數(shù)庫(kù)如gpiorccspiusart的外設(shè)庫(kù)函數(shù)512 STM32程序測(cè)試當(dāng)建立好工程并添加了上述函數(shù)后接下來(lái)的便是測(cè)試芯片引腳功能本次設(shè)計(jì)通過(guò)配置GPIO寄存器來(lái)控制LED燈的亮滅以驗(yàn)證STM32芯片驅(qū)動(dòng)程序的正確與否想要控制LED燈當(dāng)然是通過(guò)控制STM32芯片的IO引腳電平的高低來(lái)實(shí)現(xiàn)在STM32芯片上IO引腳可以被軟件設(shè)置成各種不同的功能如輸入或輸出所以被稱為GPIO而GPIO引腳又分被為GPIOAGPIOBGPIOE五組每組端口分為0至15共16個(gè)不同引腳因此控制LED的步驟如下GPIO端口引腳多 選定需要控制的特定引腳 GPIO功能如此豐富 配置需要特定的功能控制

45、LED的亮和滅 設(shè)置GPIO輸出電壓的高低要控制GPIO口就要涉及到控制相關(guān)的寄存器通過(guò)查找STM32手冊(cè)得GPIO相關(guān)配置器描述如圖5-2圖中的7個(gè)寄存器可分為以下四類配置寄存器選定GPIO的特定功能最基本的如選擇作為輸入或者輸出接口數(shù)據(jù)寄存器保存GPIO的輸入電平或?qū)⒁敵鲭娖綖榭刂萍拇嫫髟O(shè)置某引腳的數(shù)據(jù)位1或0控制輸出電平鎖定寄存器設(shè)置某鎖定引腳后就不能修改其配置圖5-2 GPIO寄存器描述關(guān)于寄存器名稱上標(biāo)號(hào)x的意義如GPIOx_CRLGPIOx_CRH這個(gè)x的取值可以是A到E表示這些寄存器也是跟GPIO一樣也是分組的即對(duì)于GPIOA和GPIOB他們有一組互不相干的寄存器如控制GPIO

46、A的寄存器名為GPIOA_CRLGPIOA_CRH而控制GPIOB則是不同的被命名為GPIOB_CRLGPIOB_CRH實(shí)現(xiàn)控制LED燈亮滅的思路框圖如圖5-3所示圖5-3 控制LED燈框圖對(duì)于GPIO端口沒(méi)個(gè)端口有16個(gè)引腳每個(gè)引腳的模式有寄存器的四個(gè)位控制每四位又分為兩位控制引腳配置CNFy10兩位控制引腳的模式及最高速度MODEy10其中y表示第y個(gè)引腳配置GPIO引腳模式的一共有兩個(gè)寄存器CRH是高寄存器用來(lái)配置高8位引腳pin8-pin15如果要配置pin0-pin7引腳則要在CRL中進(jìn)行配置513 STM32時(shí)鐘系統(tǒng)STM32芯片為了實(shí)現(xiàn)低功耗設(shè)計(jì)了一個(gè)功能完善但卻非常復(fù)雜的時(shí)鐘系

47、統(tǒng)普通的MCU一般只要配置好GPIO的寄存器就可以使用了但STM32還有一個(gè)步驟就是開啟外設(shè)時(shí)鐘STM32整體時(shí)間系統(tǒng)如圖5-4所示圖5-4 STM32時(shí)鐘樹時(shí)鐘源這個(gè)圖說(shuō)明了STM32時(shí)鐘走向從圖的左邊開始從時(shí)鐘源一步步分配到外設(shè)時(shí)鐘從時(shí)鐘頻率來(lái)說(shuō)分為高速時(shí)鐘和低速時(shí)鐘高速時(shí)鐘是提供給芯片主體的主時(shí)鐘而低速時(shí)鐘只是提供給芯片中的RTC實(shí)時(shí)時(shí)鐘及獨(dú)立看門狗使用從芯片角度來(lái)說(shuō)時(shí)鐘源分為內(nèi)部時(shí)鐘和外部時(shí)鐘源內(nèi)部時(shí)鐘是芯片內(nèi)部RC振蕩器產(chǎn)生的啟振較快所以時(shí)鐘在芯片剛上電的時(shí)候默認(rèn)使用內(nèi)部高速時(shí)鐘而外部時(shí)鐘信號(hào)是由外部的晶振輸入的在精度和穩(wěn)定性上都有很大優(yōu)勢(shì)所以上電之后再經(jīng)由軟件配置轉(zhuǎn)而采用外部時(shí)鐘信

48、號(hào)所以STM32具有四個(gè)時(shí)鐘源高速外部時(shí)鐘HSE以外部晶振做時(shí)鐘源晶振頻率范圍可取4-16MHz本次使用8MHz的晶振高速內(nèi)部時(shí)鐘HSI有內(nèi)部RC振蕩器產(chǎn)生頻率為8MHz但不穩(wěn)定低速外部時(shí)鐘LSE一外部晶振做時(shí)鐘源主要提供給實(shí)時(shí)時(shí)鐘模塊一般采用32768KHz低速內(nèi)部時(shí)鐘LSI有內(nèi)部RC振蕩器產(chǎn)生也主要提供給實(shí)時(shí)模塊頻率大約為40KHz對(duì)于高速外部時(shí)鐘其時(shí)鐘流程如下從左端的OSC_INOSC_OUT開始這兩個(gè)引腳分別接到外部晶振的兩端8MHz的時(shí)鐘遇到了第一個(gè)分頻器PLLXTPRE在這個(gè)寄存器中可以通過(guò)寄存器配置選擇它的輸出時(shí)鐘可以是對(duì)輸入時(shí)鐘的二分頻或不分頻本次設(shè)計(jì)選擇部分頻所以經(jīng)過(guò)PLLX

49、TPRE后還是8MHz的時(shí)鐘8MHz時(shí)鐘遇到開關(guān)PLLSRC我們可以選擇其輸出輸出為外部高速時(shí)鐘HSE或是內(nèi)部高速時(shí)鐘HSI這里選擇輸出為HSE接著遇到鎖相環(huán)PLL具有倍頻作用這里可以輸入倍頻因子倍頻因子設(shè)定為9倍頻即經(jīng)過(guò)PLL之后時(shí)鐘從原來(lái)的8MHZ的HSE變?yōu)?2MHz的PLLCLK緊接著遇到一個(gè)開關(guān)SW經(jīng)過(guò)這個(gè)開關(guān)之后就是STM32的系統(tǒng)時(shí)鐘SYSCLK了通過(guò)這個(gè)開關(guān)可以選擇HSIPLLCLK或者HSE作為SYSCLK本次設(shè)計(jì)選擇PLLCLK作為SYSCLK即72MHzPLLCLK在輸入到SW之前還流向了USB預(yù)分頻器這個(gè)預(yù)分頻器的輸出為USB的外設(shè)時(shí)鐘USBCLK匯到SYSCLKSYS

50、CLK進(jìn)過(guò)AHB預(yù)分頻器分頻后再輸入到其它外設(shè)如輸出到稱為HCLKFCLK的時(shí)鐘還直接輸出到SDIO外設(shè)作為SDIOCLK時(shí)鐘存儲(chǔ)控制器FSMC的FSMCCLK時(shí)鐘GPIO外設(shè)是掛載在APB2總線上的APB2時(shí)鐘是APB2預(yù)分頻器的輸出而APB2預(yù)分頻器的時(shí)鐘來(lái)源于AHB預(yù)分頻器后的時(shí)鐘均設(shè)置為不分頻所以GPIO外設(shè)時(shí)鐘也就為72MHzHCLKFCLKPCLK1PCLK2時(shí)鐘來(lái)源及作用如下從時(shí)鐘樹的分析經(jīng)過(guò)一系列的倍頻分頻后得到幾個(gè)與設(shè)計(jì)密切相關(guān)的的時(shí)鐘SYSCLK系統(tǒng)時(shí)鐘STM32大部分器件的來(lái)源主要有AHB預(yù)分頻器分配到各個(gè)部件HCLK由AHB預(yù)分頻器直接輸出得到他是高速總線AHB的時(shí)鐘信

51、號(hào)提供給存儲(chǔ)器DMA及cortex內(nèi)核是cortex內(nèi)核運(yùn)行的時(shí)鐘cpu主頻就是這個(gè)信號(hào)它的大小與STM32運(yùn)算速度數(shù)據(jù)存取速度密切相關(guān)FCLK同樣由AHB預(yù)分頻器輸出得到是內(nèi)核的自由運(yùn)行時(shí)鐘自由表現(xiàn)在它不來(lái)自時(shí)鐘HCLK因此在HCLK時(shí)鐘停止時(shí)它也急需工作它的存在可以保證在處理器休眠時(shí)也能夠采樣到中斷和跟蹤休眠時(shí)間它與HCLK互相同步PCLK1外設(shè)時(shí)鐘由APB1預(yù)分頻器輸出得到最大頻率為36MHz提供給掛載在APB1總線上的外設(shè)PCLK2外設(shè)時(shí)鐘由APB2預(yù)分頻器輸出得到最大頻率為72MHz提供給掛載在APB2總線上的外設(shè)為什么STM32的時(shí)鐘系統(tǒng)如此復(fù)雜有倍頻分頻及一系列的外設(shè)時(shí)鐘的開關(guān)需

52、要倍頻是考慮到電磁兼容性如果外部直接提供一個(gè)72MHz的晶振太高的振蕩頻率可能會(huì)給制作電路板帶來(lái)一定的難度分頻是因?yàn)镾TM32既有高速外設(shè)又有低速外設(shè)各種外設(shè)的工作頻率不盡相同如同pc機(jī)上的南北橋把高速設(shè)備和低速設(shè)備分開來(lái)管理最后每個(gè)外設(shè)配備上外設(shè)時(shí)鐘的開關(guān)當(dāng)不使用某個(gè)外設(shè)時(shí)可以把 特定的外設(shè)時(shí)鐘關(guān)閉從而降低STM32的整體功耗52 TFT顯示驅(qū)動(dòng)本次設(shè)計(jì)的LCD觸摸屏的驅(qū)動(dòng)包含基于FSMC接口的16位TFT接口初始化LCD的控制器XPT2046的初始化屏幕坐標(biāo)的建立窗口的建立指定坐標(biāo)畫點(diǎn)及其顏色的設(shè)置ASCII字符的寫入字符顏色的控制控制器寄存器的讀取顯示字符串其流程圖如5-55-6所示圖5

53、-5基于FSMC接口的16位TFT接口初始化 圖5-6 LCD的控制器驅(qū)動(dòng)流程由于顯示設(shè)備LCD具有觸摸控制功能所以本次課題設(shè)計(jì)采用觸摸控制以實(shí)現(xiàn)設(shè)計(jì)課題的任務(wù)功能即實(shí)現(xiàn)歌曲播放的快進(jìn)和快退功能其軟件控制如圖5-7所示圖5-7 觸摸按鍵功能流程圖觸摸屏的坐標(biāo)原點(diǎn)標(biāo)度和LCD的坐標(biāo)原點(diǎn)標(biāo)度不一樣且電阻式觸摸屏的坐標(biāo)原點(diǎn)通常不在有效點(diǎn)觸區(qū)內(nèi)因此必須進(jìn)行坐標(biāo)變換本設(shè)計(jì)采用四點(diǎn)定位法其方法如下假設(shè)ABCD分別為觸摸屏對(duì)應(yīng)LCD四個(gè)頂點(diǎn)的坐標(biāo)點(diǎn)分別觸擊這四點(diǎn)得到四組坐標(biāo)值根據(jù)式5-1計(jì)算出觸摸屏中心點(diǎn)坐標(biāo) 5-1設(shè) 則可得觸點(diǎn)坐標(biāo)公式 5-2式5-2中x和y分別為觸點(diǎn)在x工作面和y工作面上產(chǎn)生的電壓數(shù)字

54、量的測(cè)量值可通過(guò)采樣得到 xy 反映了觸點(diǎn)在觸摸屏上的坐標(biāo)W和H分別是LCD顯示屏X軸和Y軸上的象素點(diǎn)總數(shù) xlcdylcd 為觸點(diǎn)映射到LCD顯示屏上的像素點(diǎn)坐標(biāo)53 SD卡讀取驅(qū)動(dòng)531 SD卡總線拓?fù)浔敬卧O(shè)計(jì)將SD卡至于SD模式下進(jìn)行主從機(jī)通訊SD總線有6根通訊線和3根電源供應(yīng)線CMD命令線是雙向信號(hào)線主機(jī)和卡通過(guò)push pull模式工作CLK時(shí)鐘是從主機(jī)到卡的信號(hào)CLK通過(guò)push pull模式工作DAT03數(shù)據(jù)線是雙向信號(hào)線主機(jī)和卡通過(guò)push pull模式工作VDDVDD是SD卡的電源供應(yīng)線VSS01VSS是兩根地線其總線拓?fù)淇驁D如圖5-8所示圖5-8 總線框圖532 寄存器與協(xié)

55、議寄存器描述SD卡各寄存器如表5-2所示表5-2名稱寬帶描述CID128卡標(biāo)識(shí)號(hào)RCA16相對(duì)卡地址本地系統(tǒng)中卡的地址動(dòng)態(tài)變化在主機(jī)初始化時(shí)確定CSD128卡描述數(shù)據(jù)卡操作條件相關(guān)的信息數(shù)據(jù)SCR64SD配置寄存器SD卡特定信息數(shù)據(jù)OCR32操作條件寄存器主機(jī)STM32F103系列的相關(guān)SDIO寄存器如表5-3SD總線協(xié)議SD總線通信是基于命令和數(shù)據(jù)位流方式的由一個(gè)起始位開始一個(gè)停止位結(jié)束命令命令式開始操作的標(biāo)記命令發(fā)送一個(gè)卡尋址命令或所有連接的卡廣播命令命令在CMD線上串行傳輸響應(yīng)響應(yīng)是從尋址卡發(fā)或所有連接的卡同步送給主機(jī)用來(lái)響應(yīng)接受到的命令標(biāo)記命令在CMD線上串行傳輸數(shù)據(jù)數(shù)據(jù)可以通過(guò)數(shù)據(jù)線在SD卡和主機(jī)間相互傳送卡尋址通過(guò)會(huì)話地址方式實(shí)現(xiàn)地址在初始化的時(shí)候非配給卡SD卡總線上的基本操作時(shí)commandresponse表5-3寄存器名描述SDICONSDI控制寄存器SDIPRESDI波特率分頻寄存器SDICCONSDI命令控制寄存器SDICSTASDI命令狀態(tài)寄存器SDIDTIMERSDI數(shù)據(jù)忙時(shí)鐘寄存器SDIDCONSDI數(shù)據(jù)控制寄存器SDIDCNTSDI數(shù)據(jù)剩余計(jì)數(shù)器寄存器SDIDCONSDI數(shù)據(jù)狀態(tài)寄存器SDIDATSDI數(shù)據(jù)寄存器SDIMSKSDI中斷屏蔽寄存器數(shù)據(jù)傳送采用快方式數(shù)據(jù)塊后接CRC校驗(yàn)位操作包

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論