




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
讀寫SD卡實(shí)驗(yàn)“第七章《GD32F3開發(fā)進(jìn)階教程——基于GD32F303ZET6》01實(shí)驗(yàn)內(nèi)容本章的主要內(nèi)容是學(xué)習(xí)SDIO結(jié)構(gòu)、協(xié)議等內(nèi)容,包括SD卡及其內(nèi)部結(jié)構(gòu)、SD卡與微控制器傳輸方面的內(nèi)容、SD卡有關(guān)的狀態(tài)位、SD卡的操作模式、SDIO接傳輸數(shù)據(jù)的格式。最后基于GD32F3蘋果派開發(fā)板設(shè)計(jì)一個(gè)讀寫SD卡實(shí)驗(yàn),通過LCD顯示屏上的GUI界面,實(shí)現(xiàn)讀寫SD卡。實(shí)驗(yàn)內(nèi)容02實(shí)驗(yàn)原理SDIO是SecureDigitalImputandOutput的縮寫,即安全的數(shù)字輸入/輸出接口。它是在SD卡協(xié)議基礎(chǔ)上發(fā)展而來的一種I/0接口,該接口提供AHB系統(tǒng)總線與SD存儲(chǔ)卡、SDIO卡MMC卡等類型設(shè)備和CE-ATA設(shè)備之間的數(shù)據(jù)傳輸。SDIO模塊SDIO模塊GD32F3蘋果派開發(fā)板具有SDIO接口通過該接口可實(shí)現(xiàn)微控制器與SD存儲(chǔ)卡設(shè)備之間的數(shù)據(jù)傳輸。開發(fā)板上的TF卡座電路原理圖如圖7-1所示。SDIO結(jié)構(gòu)框圖SDIO結(jié)構(gòu)框圖如圖7-2所示,GD32F3果派開發(fā)板的SDIO控制器由AHB接口和SDIO適配器組成。SDIO與SD卡之間通過6條線進(jìn)行通信,分別為1條時(shí)鐘線、1條命令線和4條數(shù)據(jù)線如圖7-2的右側(cè)部分所示。其中,時(shí)鐘線上傳輸SDIO發(fā)出的時(shí)鐘信號(hào),根據(jù)傳輸協(xié)議,數(shù)據(jù)傳輸在CLK時(shí)鐘線的上升沿有效。命令線上傳輸SDIO發(fā)送至SD卡的命令,以及SD卡發(fā)送至主機(jī)的響應(yīng)。SDIO協(xié)議用于數(shù)據(jù)傳輸?shù)臄?shù)據(jù)線的數(shù)目分為1條、4條和8條,本實(shí)驗(yàn)使用的數(shù)據(jù)線數(shù)目為4條。SDIO結(jié)構(gòu)框圖SD卡結(jié)構(gòu)框圖SD卡結(jié)構(gòu)框圖如圖7-3所示。包括5個(gè)部分:存儲(chǔ)單元用于存儲(chǔ)數(shù)據(jù),SD卡讀寫以塊為單位,一個(gè)塊的大小為512字節(jié),存儲(chǔ)空間為64MB的SD卡共有64x1024x1024/512=131072塊:存儲(chǔ)單元接口是存儲(chǔ)單元與卡控制單元進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ?,電源檢測用于保證SD卡在合適的電壓下工作,在加電時(shí)復(fù)位控制單元和存儲(chǔ)單元接口;卡及接口控制單元通過8個(gè)寄存器控制并記錄SD卡的運(yùn)行狀態(tài);接口驅(qū)動(dòng)器被接口控制單元控制,完成SD卡引腳的輸入/輸出。SD卡結(jié)構(gòu)框圖SD卡結(jié)構(gòu)框圖卡及接口控制單元包含8個(gè)寄存器,對各個(gè)寄存器的描述如表7-1所示。寄存器各個(gè)位的具體描述可參見文檔《SD2.0協(xié)議標(biāo)準(zhǔn)完整版》(位于本書配套資料包“09.參考資料07.讀寫SD卡實(shí)驗(yàn)參考資料”文件夾下)中的第5章。SDIO傳輸內(nèi)容1.命令SDI發(fā)送至SD卡的命可根據(jù)發(fā)送范圍及是否接收響應(yīng)分為4種類型如表7-2所示。命令可分為通用命令(CMD)和應(yīng)用命令(ACMD),應(yīng)用命令是SD卡制造商特定的命令,發(fā)送應(yīng)用命令的方法為先通過CMD線發(fā)送CMD55命令,再發(fā)送CMDx命令,此時(shí)SD卡將其視為SDIO的ACMDx命令。SDIO傳輸內(nèi)容SDIO傳輸內(nèi)容主機(jī)發(fā)送至SD卡的命令在CMD線上行傳輸,傳輸格式如圖7-4所示。SDIO傳輸內(nèi)容2、響應(yīng)SD卡發(fā)送至主機(jī)的響應(yīng)分為7種類型,如表7-3所示。SD卡狀態(tài)信息卡狀態(tài)在響應(yīng)R1(普通命令響應(yīng))中標(biāo)識(shí),卡狀態(tài)標(biāo)志位儲(chǔ)存于如圖7-4所示的大小為32位的參數(shù)項(xiàng)中,當(dāng)發(fā)送的命令要求R1響應(yīng)時(shí),卡狀態(tài)標(biāo)志位會(huì)隨著響應(yīng)發(fā)出。部分卡狀態(tài)標(biāo)志位如表7-4所示。SD卡狀態(tài)信息其中,類型和清除條件的縮寫說明如表7-5和表7-6所示。SD卡狀態(tài)信息SD狀態(tài)中包含與SD卡屬性功能相關(guān)的狀態(tài)位,該狀態(tài)位大小為512字節(jié),儲(chǔ)存于SSR寄存器中。當(dāng)主機(jī)發(fā)送ACMD13命令至SD卡后,SD狀態(tài)會(huì)通過DATT3:01線發(fā)送給主機(jī)。部分SD狀態(tài)標(biāo)志位如表7-7所示。SD卡從插入開發(fā)板上的卡槽到結(jié)束傳輸數(shù)據(jù)共經(jīng)過兩種模式:卡識(shí)別模式和數(shù)據(jù)傳輸模式??ㄗR(shí)別模式包含卡從空閑狀態(tài)到待機(jī)狀態(tài)的過程。當(dāng)SD卡插入主機(jī)并上電時(shí),首先處于空閑狀態(tài),主機(jī)通過不同命令檢測SD卡的相應(yīng)參數(shù),并根據(jù)參數(shù)使SD卡最終處于待機(jī)狀態(tài)或無效狀態(tài)??ㄗR(shí)別模式階段的時(shí)鐘頻率用FOD表示,最高為400kHz,其狀態(tài)轉(zhuǎn)換圖如圖7-5所示。SD卡操作模式SD卡操作模式SD卡操作模式卡識(shí)別模式狀態(tài)的說明如表7-8所示。SD卡操作模式數(shù)據(jù)傳輸模式的狀態(tài)轉(zhuǎn)換圖如圖7-6所示。SD卡操作模式數(shù)據(jù)傳輸模式的狀態(tài)說明如表7-9所示。SDIO總線協(xié)議SDIO總線協(xié)議如圖7-7所示,SDIO接口間的通信通常由主機(jī)發(fā)送命令,從機(jī)接收后執(zhí)行相應(yīng)動(dòng)作并做出響應(yīng)。SDIO數(shù)據(jù)包格式SDIO數(shù)據(jù)包有兩種格式:常規(guī)數(shù)據(jù)包格式和寬位數(shù)據(jù)包格式。一般數(shù)據(jù)塊的發(fā)送采用常規(guī)數(shù)據(jù)包格式,如圖7-8所示,先發(fā)送高字節(jié)再發(fā)送低字節(jié),先發(fā)高位字節(jié)再發(fā)低位字節(jié),通過4根數(shù)據(jù)線,按照DAT3~DATO的順序同步傳輸。SDIO數(shù)據(jù)包格式寬位數(shù)據(jù)包格式應(yīng)用于發(fā)送SD卡的SSR寄存器512字節(jié)時(shí)在接收ACMD13命令后,SD卡將該寄存器的內(nèi)容通過寬位數(shù)據(jù)包格式發(fā)送,如圖7-9所示4根數(shù)據(jù)線按DAT3~DAT的順序?qū)⒓拇嫫鞯?12字節(jié)數(shù)據(jù)按從高位到低位的順序發(fā)送。03實(shí)驗(yàn)代碼解析0102ReadWriteSDCard.h文件:在ReadWriteSDCardh文件的“API函數(shù)聲明”區(qū),聲明了2個(gè)API函數(shù)。ReadWriteSDCard.c文件:在ReadWriteSDCard.c文件的“包含頭文件”區(qū),包含了SDCardh和LCD.h等頭文件SDCard.c文件包含對SD卡的塊進(jìn)行讀寫的函數(shù),ReadWriteSDCard.c文件需要通過調(diào)用這些函數(shù)完成對SD卡的讀寫,因此需要包含SDCard.h頭文件。由于地址、數(shù)據(jù)等信息都通過LCD屏顯示,因此,還需要包含LCD.h頭文件。ReadWriteSDCard文件對下面按照順序解釋說明Read函數(shù)中的語句。(1)第8至13行代碼:由于SD卡是通過塊讀寫傳輸數(shù)據(jù)的,因此Read函數(shù)首先通過while語句獲得讀取地址相對應(yīng)的數(shù)據(jù)塊的首地址及相應(yīng)的偏移地址。(2)第16至38行代碼:設(shè)置數(shù)據(jù)保存的緩沖區(qū)bu,并根據(jù)偏移地址計(jì)算需要讀取的長度len,通過while語句,先計(jì)算剩余讀取長度,再將當(dāng)前讀取地址對應(yīng)的數(shù)據(jù)塊通過sdblockread函數(shù)讀取至數(shù)據(jù)緩沖區(qū)buff。ReadWriteSDCard文件對下面按照順序解釋說明Write函數(shù)中的語句。(1)第7至11行代碼:通過while語獲得寫入地址相應(yīng)的數(shù)據(jù)塊的首地址和偏移地址。(2)第14至20行代碼:調(diào)用sdblockread函數(shù)將入地址對應(yīng)的數(shù)據(jù)塊讀出,并存入緩沖區(qū),修改寫入地址對應(yīng)的數(shù)據(jù)后,將整個(gè)數(shù)據(jù)塊重新寫入。ReadWriteSDCard文件對下面按照順序解釋說明ReadSDCard函數(shù)中的語句。(1)第8行代碼:根據(jù)變量senumSDCardStatus檢測SD卡是否插入。(2)第11至31行代碼:若SD卡已插入,則校驗(yàn)地址是否位于正常范圍,若處于正常范圍則顯示讀取信息后通過Read函數(shù)從SD卡中讀取相應(yīng)數(shù)據(jù)并輸出否則將地址錯(cuò)誤的信息輸出至LCD屏及串口助手。(3)第40至44行代碼:若SD卡未插入,則在LCD屏及口助手輸出SD卡未插入的提示。ReadWriteSDCard文件對下面按照順序解釋說明IitSDCard函數(shù)中的語句。(1)第7至12行代碼:通過sdinit函數(shù)初始化SD卡,并根據(jù)返回值判斷初始化結(jié)果若初始化失敗則執(zhí)行相應(yīng)函數(shù)體后重新初始化,直到初始化成功,輸出初始化成功的信息至串口助手。(2)第15至18行代碼:獲取并輸出SD卡信息。(3)第21至34行代碼:選中準(zhǔn)備讀寫的SD卡并檢測其是否被鎖死若SD卡被鎖死則輸出“SDcardislocked!”并執(zhí)行相應(yīng)函數(shù)。(4)第37至43行代碼:若未鎖死則設(shè)置SD卡傳輸模式為4線模式及DMA傳輸模式并使能SDIO的中斷以保證SD卡正常的數(shù)據(jù)傳輸。ReadWriteSDCard文件對下面按照順序解釋說明InitReadWriteSDCard函數(shù)中的語句。(1)第4至13行代碼:調(diào)用內(nèi)部函數(shù)InitSDCard初始化SD卡,并對SD卡首地址、結(jié)束地址等變量賦值。(2)第16至19行代碼:將SD卡讀寫函數(shù)的地址賦給GUI結(jié)構(gòu)體sstructGUIDev中的成員變量writeCallback和readCallback,此時(shí),微控制器可根據(jù)GUI的操作,調(diào)用相應(yīng)的回調(diào)函數(shù)完成SD卡的讀寫。(3)第22至30行代碼:通過IitGUI函數(shù)初始化GUI界面和相應(yīng)的界面參數(shù)并將SD卡讀寫地址范圍顯示在LCD屏及串口助手上。ReadWriteSDCard文件對下面按照順序解釋說明ReadWriteSDCardTask函數(shù)中的語句。(1)第8至14行代碼:每隔1s調(diào)用一次sddetect函數(shù)檢查卡是否正常插入。(2)第17至28行代碼:根據(jù)標(biāo)志位status判斷上一次檢測到SD卡未正常插入,而此次檢測為正常插入,即SD卡被重新插入的情況是否出現(xiàn),若出現(xiàn)該情況則等待SD卡插入穩(wěn)定后,再調(diào)用InitSDCard函數(shù)初始化SD卡。(3)第29行代碼:若檢測失敗,即SD卡未正常插入,則將失敗標(biāo)志位賦給變量senumSDCardStatus后繼續(xù)執(zhí)行讀寫SD卡任務(wù),此時(shí)單擊LCD屏上的write或read按鈕顯示“Write:SDcardnotinserted”或“Read:SDcardnotinserted”等信息。ReadWriteSDCard文件對010203sd_init函數(shù)用于完成SD卡的卡識(shí)別模式。sd_card_init函數(shù)用于取卡信息和卡識(shí)別狀態(tài),即CID信息和CSD信息。sd_power_on函數(shù)用于完成基本的SD卡識(shí)別。SDCard.c文件010203sd_block_reaad函數(shù)用于對SD卡讀出一個(gè)塊,即512字節(jié)的數(shù)據(jù)。sd_card_write函數(shù)用于向SD卡寫入一個(gè)塊的數(shù)據(jù)。sd_erase函數(shù)用于擦除SD卡上相應(yīng)區(qū)域。SDCard.c文件Main.c文件Proc2msTask函數(shù)的實(shí)現(xiàn)代碼如程序清單7-10所示調(diào)用了ReadWriteSDCardTask函數(shù)ReadWriteSDCardTask函數(shù)每40ms檢測一次SD卡和GUI界面,以實(shí)現(xiàn)讀寫SD卡。實(shí)驗(yàn)結(jié)果將SD卡插入GD32F3蘋果派開發(fā)板的TF卡座,下載程序并進(jìn)行復(fù)位??梢杂^察到開發(fā)板上的LCD屏顯示如圖7-10所示的GUI界面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度科技產(chǎn)品銷售提成及創(chuàng)新激勵(lì)協(xié)議
- 二零二五年度金融機(jī)構(gòu)資金結(jié)算服務(wù)協(xié)議
- 二零二五年度山坪塘承包合同履行中的合同糾紛解決
- 二零二五年度終止雙方在線教育平臺(tái)合作協(xié)議
- 二零二五年度海底油氣管道水平定向鉆施工合作協(xié)議
- 二零二五年度全球市場傭金分成合作協(xié)議
- 2、2024廣西專業(yè)技術(shù)人員繼續(xù)教育公需科目參考答案(97分)
- 2025年合作貨運(yùn)從業(yè)資格證科目一考試答案
- 預(yù)制裝配式檢查井施工工法
- 公司領(lǐng)導(dǎo)發(fā)言稿范文
- 第18講 等腰三角形 課件中考數(shù)學(xué)復(fù)習(xí)
- 社會(huì)階層與教育選擇行為分析-深度研究
- 2025年內(nèi)蒙古呼和浩特市屬國企業(yè)紀(jì)檢監(jiān)察機(jī)構(gòu)招聘工作人員80人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 社會(huì)工作行政(第三版)課件匯 時(shí)立榮 第6-11章 項(xiàng)目管理- 社會(huì)工作行政的挑戰(zhàn)、變革與數(shù)字化發(fā)展
- 全過程工程咨詢文件管理標(biāo)準(zhǔn)
- 模特?cái)z影及肖像使用合同協(xié)議范本
- 2025年湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 《預(yù)制高強(qiáng)混凝土風(fēng)電塔筒生產(chǎn)技術(shù)規(guī)程》文本附編制說明
- 2025福建福州地鐵集團(tuán)限公司運(yùn)營分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 兒童睡眠障礙治療
- 四川省建筑行業(yè)調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論