基于SPI的SD卡驅(qū)動軟件設(shè)計_第1頁
基于SPI的SD卡驅(qū)動軟件設(shè)計_第2頁
基于SPI的SD卡驅(qū)動軟件設(shè)計_第3頁
基于SPI的SD卡驅(qū)動軟件設(shè)計_第4頁
基于SPI的SD卡驅(qū)動軟件設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、開發(fā)案例基于 SPI 的 SD 卡驅(qū)動軟件設(shè)計楊懷德 1,樸希南 2(1. 東莞職業(yè)技術(shù)學院計算機工程系 , 東莞 523808; 2. 東莞理工學院城市學院 , 東莞 523106 關(guān)鍵詞 :SPI ; SD 卡 ; 驅(qū)動軟件收稿日期 :2011-12-27修稿日期 :2012-01-19作者簡介 :楊懷德 (1983-, 男 , 湖北羅田人 , 碩士 , 研究方向為嵌入式通信系統(tǒng)SD 卡是一種基于半導(dǎo)體閃存的新的存儲介質(zhì) , 廣泛地應(yīng)用在便攜式設(shè)備上 。 按照 SD 卡規(guī)范的描述 , SD 卡提供了兩種通信協(xié)議 :SD 模式和 SPI 模式 , 驅(qū)動可以選擇任意一種模式來 實現(xiàn) 。 目前基

2、于 SPI 的 SD 卡驅(qū)動研究還比較少 , 研究基于 SPI 總線模式的 SD 卡驅(qū)動軟件 設(shè)計并分析 SD 卡的初始化過程和讀寫過程 。摘要 :0引 言SD 卡 (Secure Digital Memory Card 是由日本松下 、東芝及美國 Sandisk 公司于 1999年 8月在 MMC(MultiMedia Card 基礎(chǔ)上共同研制出來的一種多功能存儲 卡 。 SD 卡體積很小 , 重量只有 2克左右 , 但是卻擁有大 容量 、 數(shù)據(jù)傳輸快 、 極大的移動靈活性和很好的安全性 等優(yōu)點 , 因此被廣泛應(yīng)用于便攜式的設(shè)備上 。 SD 卡提 供了兩種通信協(xié)議 :SD 模式和 SPI 模

3、式 , 可以選擇任意 一種模式來實現(xiàn) , 模式的選擇在上電后的第一個復(fù)位 命令中進行 , 由主機到 SD 卡的片選信號 (CS 信號 決 定 , 本設(shè)計研究的是 SPI 模式的 SD 卡 。 SPI 接口 (SerialPeripheral Interface 是一種全雙工的 、 基于字節(jié)傳輸?shù)?同步通信協(xié)議 , 芯片管腳上只需要占用 4根線 , 既節(jié)約 了芯片管腳 , 又為 PCB 的布局節(jié)省了空間 , 簡單易用 , 因此越來越多的芯片開始集成這種通信協(xié)議 。 SPI 總線 有一個缺陷 , 就是缺乏應(yīng)答機制以確認是否接收到數(shù) 據(jù) 。 基于 SPI 模式的 SD 卡驅(qū)動 , 每個命令和數(shù)據(jù)的發(fā)

4、 送都包含一個應(yīng)答 , 用于指示命令或數(shù)據(jù)傳輸是否成 功 , 有效地彌補了 SPI 總線傳輸?shù)娜毕?。1驅(qū)動設(shè)計1.1SPI 設(shè)備驅(qū)動框架由于 SPI 總線工作于主從模式 , 因此 , 設(shè)備驅(qū)動框架中必須包含一個 Master 結(jié)構(gòu)和一個 Slave 結(jié)構(gòu) 。 由于 在一條 SPI 總線上 , 只能有一個 Master 設(shè)備 , 但是可以 包含多個 Slave 設(shè)備 , 因此 , 通常在使用 SPI 總線傳輸 的時候 , 我們往往將 Master 當作一個微控制器 , 控制一 到多個 Slave 的數(shù)據(jù)傳輸 。SPI 設(shè)備驅(qū)動框架 , 包含了所有 SPI 設(shè)備的注冊機 制和設(shè)備管理機制 , 以

5、及 SPI 設(shè)備的數(shù)據(jù)傳輸接口 , 通 過函數(shù)指針回調(diào)的方式來執(zhí)行具體硬件相關(guān)的處理細 節(jié) 。在系統(tǒng)初始化的時候 , 我們需要先在當前處理器 上注冊一個 SPI 控制器 , 作為 SPI 總線的主設(shè)備 。 然后 當應(yīng)用程序需要使用 SPI 總線進行數(shù)據(jù)傳輸 的時候 , 就可以將數(shù)據(jù)存儲設(shè)備作為一個 SPI 從設(shè)備注冊到主 設(shè)備上 , 由主設(shè)備控制從設(shè)備進行數(shù)據(jù)傳輸 。 一個主設(shè) 備可以支持多個從設(shè)備 , 因此多個 SPI 設(shè)備就可以直 接 通 過 該 框 架 注 冊 到 SPI 系 統(tǒng) 中 進 行 串 行 數(shù) 據(jù) 傳 輸 了 。SPI 總線按照單字節(jié)串行傳輸?shù)姆绞絹韨鬏敂?shù)據(jù) , 一次只傳輸一個

6、字節(jié) , 不管是發(fā)送還是接收 。 字節(jié)傳輸 時默認按高位在前 , 低位在后的傳輸方式 , 當然也可以 通過配置相關(guān)寄存器以采用低位在前的傳輸方式 。 但 是有一點需要注意的是 , 在一次數(shù)據(jù)傳輸過程中 , 當傳 到最后一個字節(jié)時 , 最后一個字節(jié)的傳輸必須按照低開發(fā)案例2012.02位在前的特殊傳輸方式 (LST , 以標示本次數(shù)據(jù)幀傳輸 的結(jié)束 。 由于 SPI 總線采用全雙工的通信方式 , 由兩條 單向數(shù)據(jù)線分別擔負兩個數(shù)據(jù)傳輸方向 , 因此數(shù)據(jù)的 發(fā)送和接收可以同時進行 。1.2SD 卡設(shè)備驅(qū)動(1 SPI 模式下的 SD 卡通信原理在 SPI 模式下 , SD 卡作為一個 SPI 設(shè)備

7、連接到 SPI 控制器上 。 在 SPI 模式下 , SD 卡同樣擁有四根信號線 :CS (主機到卡的片選信號 、 CLK (主機到卡的時鐘信號 、 DataIn (主機到卡的數(shù)據(jù)信號 、 DataOut (卡到主機的數(shù) 據(jù)信號 。 SPI 控制器作為該 SPI 系統(tǒng)的主機 , 通過 GPIO 連接 SD 卡的 CS 片選信號來對 SD 卡進行片選 , SD 卡的 時鐘由 SPI 控制器提供 。 主機與 SD 卡之間通過 DataIn 和 DataOut 數(shù)據(jù)線進行數(shù)據(jù)交換 , 如圖 1所示 。圖 1SD 卡與 SPI 主機連接示意圖在 SPI 模式下 , SD 卡采用 “ 命令 +應(yīng)答 ”

8、的方式工 作 , 主機發(fā)起總線傳輸時 , 總是假設(shè) CS 信號是低電平 有效的 。 對于每個命令 , SD 卡都會有一個相應(yīng)的應(yīng)答 返回 , 即使在傳輸出錯時 , 也會發(fā)回一個錯誤應(yīng)答 。 同 樣的 , 對于每個數(shù)據(jù)塊的傳輸 , SD 卡都會產(chǎn)生一個特 殊的數(shù)據(jù)應(yīng)答 。SD 卡默認工作在 SD 模式下 。 為了使 SD 卡進入 SPI 模 式 , 需 要 在 發(fā) 送 第 一 個 RESET 命 令 (GO_I-DLE_STATE命令 , 即 CMD0 時使 CS 片選信號為低電 平有效 。 SD 卡正確響應(yīng) RESET 命令之后 , 即進入 IDLE 狀態(tài) 。(2 SD 卡驅(qū)動實現(xiàn)SD 卡采用

9、命令驅(qū)動的工作方式 , 通過發(fā)送命令和 等待應(yīng)答來與 SPI 主機進行通信 。 在開始數(shù)據(jù)傳輸之 前 , SD 卡也要先發(fā)送數(shù)據(jù)傳輸命令并等待正確應(yīng)答之 后 , 才開始傳輸 。 每個 SD 卡命令都由 6個字節(jié) (48位 組成 , 其中每個位域的含義如表 1所示 。在 SD 卡命令中 , 命令類型通過 command index 字 段來識別 。 在 SPI 模式下 , SD 卡可以不采用 CRC 校驗 來保護數(shù)據(jù) , 但是命令 、 應(yīng)答 、 和數(shù)據(jù)的 CRC 位仍然需 要保留 , 只是傳輸過程中可以忽略它們 。 不過有兩個例 外 :CMD0和 CMD8。 CMD0必須有 CRC 校驗 , 因

10、為它是 負責從 SD 模式切換到 SPI 模式的 , 而在 SD 模式下 ,CRC 校驗是必需的 。 CMD8用于識別 SD 卡的版本是 1.0還是 2.0, 該命令的 CRC 校驗也是必需的 。在 SPI 模 式 下 , 可 以 通 過 CRC_ON_OFF命 令 (CMD59 來打開或關(guān)閉 CRC 校驗 。 對于每個命令 , SD 卡都會產(chǎn)生一個相應(yīng)的應(yīng)答信號 。 SPI 模式下的應(yīng)答 , 主要有如下幾種 :R1、 Rb1、 R2、 R3、 R7、 Data Response 。SD 卡對物理層而言 , 它是一個 SPI 設(shè)備 , 與 SPI 總 線相連 , 而對應(yīng)用程序而言 , 它是一個

11、塊設(shè)備 , 通過文 件系統(tǒng)實現(xiàn)數(shù)據(jù)管理 。 因此 , 整個 SD 卡系統(tǒng)呈現(xiàn)一個 典型的分層管理 , 可以分為物理層 、 主機傳輸層和應(yīng)用層 , 如圖 2所示 :圖 2SD 卡系統(tǒng)結(jié)構(gòu)從圖 2可以看出 , SD 卡提供給應(yīng)用程序的讀寫接表 1SD 卡命令格式趪趹開發(fā)案例口 , 主要通過文件系統(tǒng)的相關(guān)操作來提供 。 當然 , 應(yīng)用 程序也可以直接通過 SD 卡驅(qū)動程序直接進行卡上二 進制數(shù)據(jù)的讀寫 , 但是這畢竟是少數(shù) , 因為這樣做會破 壞卡上的文件系統(tǒng) , 所以通常只有對 SD 卡的讀寫烤機 測試程序才可能這么做 。 一般的應(yīng)用 , 還是通過文件系 統(tǒng)操作來讀寫 SD 卡數(shù)據(jù)的 。1.3系統(tǒng)

12、流在上層應(yīng)用中 , 應(yīng)用程序通過文件系統(tǒng)來對 SD 卡 進行讀寫操作 , SD 卡作為一個塊設(shè)備與文件系統(tǒng)進行 交互 。 在底層的讀寫操作中 , SD 卡則作為一個 SPI 設(shè) 備與 SPI 主機進行交互 , 通過 SPI 總線實現(xiàn)主機到卡和 卡到主機之間的數(shù)據(jù)傳輸 。 整個流程如圖 3所示 :圖 3SD 卡讀寫過程數(shù)據(jù)流圖2SD 卡初始化本設(shè)計的 SD 卡驅(qū)動 , 必須支持 SD 規(guī)范標準 2.0, 并且能夠兼容 1.0標準 。 在規(guī)范 2.0上 , 定義了兩種類 型的卡 :標準容量卡 (存儲容量在 2GB 以內(nèi) 和大容量 卡 (存儲容量大于 2GB 并且在 32GB 以內(nèi) 。 SD 卡的最

13、 大 塊 長 度 為 512字 節(jié) , 不 管 CSD 寄 存 器 中 的 READ_BL_LEN字段設(shè)置為多少 。 在標準容量卡中 , 如 果 數(shù) 據(jù) 塊 的 partial access 屬 性 (CSD 中 的 READ_BL_ PARTIAL 字段 打開的話 , 塊長可以在 1個字節(jié)到 512字節(jié)之間 。 而在大容量卡中 , 一個數(shù)據(jù)塊只能固定為 512字節(jié)長度 。 在 SD 卡的初始化過程中 , 就要識別出 卡的規(guī)范版本以及卡的類型了 。根據(jù) SD 規(guī)范 2.0的描述 , SD 卡上電后的初始化流 程如圖 4所示 。SD 卡 上 電 后 默 認 處 于 SD 模 式 , 因 此 在

14、發(fā) 送 CMD0進行復(fù)位之前 , 必須確保 CS 信號處于低電平有 效 , 這一點由硬件電路設(shè)計來保證 。 由于 1.x 版本的 SD 卡無法識別 CMD8, 因此可以通過該命令的應(yīng)答來識 別出當前 SD 卡使用的規(guī)范是 1.x 版本還是 2.0版本 。 對于 2.0版本的 SD 卡 , 在初始化過程中 , OCR 寄存器 需要讀兩次 , 第一次用于檢查支持電壓 , 第二次用于判 斷卡的類型為標準容量卡還是大容量卡 。 而 1.x 版本的 SD 卡由于不支持大容量卡 , 只需要檢查電壓即可 。 考慮到在 SD 卡上電初期 , 電壓的上升過程大約需 要 64個時鐘周期才能達到 SD 卡的正常工作

15、電壓 , 這 個過程稱為 Supply ramp up time 。 另外 , 還需要大概 10個時鐘周期的時間來與 SD 卡進行同步 。 因此 , SD 卡上 電之后 , 至少需要先延遲 74個時鐘周期 , 之后才能開 始發(fā)送 CMD0進行復(fù)位操作和 SPI 模式的選擇 。 SD 卡按照上述流程完成初始化之后 , 就可以對 SD 卡進行正常的數(shù)據(jù)讀寫操作了 。3SD 卡讀寫SD 卡驅(qū)動最主要的任務(wù) , 就是實現(xiàn)數(shù)據(jù)的讀寫操 作 。 由于 SD 卡驅(qū)動采用 “ 命令 +應(yīng)答 ” 的形式和 SPI 主 機通信 , 因此每次數(shù)據(jù)傳輸之前 , 都要先發(fā)送相應(yīng)的讀 寫命令并等待正確應(yīng)答 , 才能進行數(shù)

16、據(jù)傳輸 。 和 SD 卡 讀寫相關(guān)的幾個主要命令集中列于表 2:表 2SD 卡數(shù)據(jù)讀寫相關(guān)命令SD 卡數(shù)據(jù)傳輸通過數(shù)據(jù)令牌 (Data Token 進行 , 所有字節(jié)都按照高位在前 (MSB 的傳輸方式 。 數(shù)據(jù)令 牌的長度在 4字節(jié)到 515字節(jié)之間 , 并且按照如表 3格式組織 。對于單塊讀 、 單塊寫和多塊讀命令而言 , 數(shù)據(jù)令牌 格式如表 3:開發(fā)案例2012.02表 3SD 卡數(shù)據(jù)令牌格式對于多塊寫命令 , 數(shù)據(jù)令牌格式則采用如下格式 :對于每一個寫入塊的第一個字節(jié) , 如果是數(shù)據(jù)傳輸則 為 Start Block (0xFC , 如果是停止傳輸?shù)闹噶?(CMD12 則是 Stop

17、Tran (0xFD 。 多 塊 連 續(xù) 寫 操 作 的 結(jié) 束 , 由CMD12負責 。當讀操作發(fā)生錯誤時 , SD 卡會返回一個數(shù)據(jù)錯誤 應(yīng)答來替代 。 這個錯誤應(yīng)答只有一個字節(jié) , 高 4位為0, 低 4位指示了一些錯誤位 , 格式如表 4:表 4數(shù)據(jù)傳輸錯誤應(yīng)答格式讀單塊的過程很簡單 :首先發(fā)送讀單塊命令 , 正確 應(yīng)答后則從 SPI 總線接收一個數(shù)據(jù)塊 , 保存在內(nèi)存緩 沖區(qū)中供應(yīng)用程序使用 。 讀多塊的過程和這個過程類 似 , 區(qū)別在于讀多塊過程結(jié)束后 (或讀過程出錯時 , 需 要使用 CMD12通知 SD 卡停止數(shù)據(jù)傳輸 。寫單塊的過程比讀單塊過程 , 多了一個檢查數(shù)據(jù) 應(yīng)答的過

18、程 , 以便確認數(shù)據(jù)是否正確寫入 SD 卡中 。 寫 多塊的停止 , 同樣通過 CMD12完成 。 在多塊數(shù)據(jù)寫入圖 4SD 卡初始化流程趪趽開發(fā)案例Construction of Library Management System Based on DelphiWANG Cheng 1,ZHAO BI-fang 2(1. Wells Fargo Bank, West Des Moines, 50266,USA ; 2. ASDI Inc, West Des Moines, 50266,USA Keywords:Library Management; Management System; So

19、ftware EngineeringHow to scientifically manage the library is not only related to the knowledge of the convenienceof the reader, is also related to the development of the library, therefore, to develop a compre -hensive library management system will become essential. Describes the environment in th

20、e Borland Delphi 7.0adoption of the top-down master plan, from the bottom up application de -velopment, the strategy development process of this system in details and puts forward informa -tion in library management, resource sharing of basic objectives, so as to promote the pace to -wards the digit

21、al library, and presents system architecture design and functional design, from book storage register to the query view, from the library card issued to borrow books, forming a complete library management system solutions, software engineering from the perspective of a scientific and rigorous elabor

22、ation, and achieves through Delphi.Abstract:Design of SD Card Drive Software Based on SPIYANG huai-de 1,PIAO xi-nan 2(1. Department of Computer Engineering, Dongguan Polytechnic , Donguan 523808;2. College of City, Dongguan University of Technology, Dongguan 523106Keywords:SPI; SD Card; Drive SoftwareSD card is a flash memory storage media based on new semiconductor, widely used in portabledevices. Described in accordan

溫馨提示

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

評論

0/150

提交評論