基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法_第1頁
基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法_第2頁
基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法_第3頁
基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法_第4頁
基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Electronic Component &Device Applications2008年 3月 0引言SD 卡是一種多功能存儲卡 , 具有較快的傳輸速度和較大的存儲容量 , 同時 , SD 存儲卡還向 上兼容 MMC 卡。 SD 卡內(nèi)置控制電路 , 可用于手 機、數(shù)碼相機、 MP3、 PDA 等多種數(shù)字設(shè)備。為 此 , 本文首先介紹了單片機在 SPI 協(xié)議下與 SD 卡 硬件接口電路 , 然后簡要闡述了 SPI 總線模式以 及軟件模擬的 SPI 總線字節(jié)傳輸 , 最后給出了具 體實現(xiàn) SD 卡的初始化和讀寫的軟件流程。1硬件電路設(shè)計SD 卡有兩種總線模式 , 即 SD 總線模式和

2、SPI總線模式。其中 SD 總線模式采用四條數(shù)據(jù)線并行 傳 輸 數(shù) 據(jù) , 數(shù) 據(jù) 傳 輸 速 率 高 , 但 是 傳 輸 協(xié) 議 復(fù) 雜 , 只有少數(shù)單片機才提供有此接口 , 而用軟件 方法模擬 SD 總線又比較繁瑣 , 并會降低 SD 卡的 數(shù)據(jù)傳輸速率 ; 而 SPI 總線模式只有一條數(shù)據(jù)傳 輸線 , 數(shù)據(jù)傳輸速率較低 , 但絕大多數(shù)中高檔單 片機都提供 SPI 總線 , 也易于用軟件方法來模擬 , 此外 , SPI 總線模式的傳輸協(xié)議簡單 , 易于實現(xiàn)。 為此 , 本設(shè)計采用 SPI 總線模式。本系統(tǒng)中的接口電路采用的是 W78LE58單片 機。該單片機不具有 SPI 模式 , 但可通

3、過軟件編 程實現(xiàn) SPI 模式的數(shù)據(jù)傳輸 (包括串行時鐘、數(shù)據(jù) 的輸入和輸出 。在 SPI 模式下 , 單片機與 SD 卡的 連接主要有四根線 (包括時鐘線 , 兩根數(shù)據(jù)傳輸 線和一根片選線 。其硬件連接如圖 1所示。2SPI 總線模式SPI (Serial Peripheral Interface , 串 行 外 圍 設(shè)備接口總線 總線技術(shù)是 MOTOROLA 公司推出的 一種同步串行總線接口 , 它是目前單片機應(yīng)用系 統(tǒng)中最常用的幾種串行擴展接口之一。 SPI 總線 主要通過三根線進行數(shù)據(jù)傳輸 :同步時鐘線 SCK, 主機輸入 /從機輸出數(shù)據(jù)線 MISO 、主機輸出 /從機 輸入數(shù)據(jù)線 M

4、OSI , 另外還有一條低電平有 效 的 從機片選擇線 CS 。 SPI 系統(tǒng)的片選信號以及同步 時鐘脈沖由主機提供。SPI 總線模式的數(shù)據(jù)是以字節(jié)為單位進行傳輸?shù)?, 每字節(jié)為 8位 , 每個命令或者數(shù)據(jù)塊都是 字節(jié)對齊的 (8個時鐘的整數(shù)倍 。主機與 SD 卡的 各種通信都由主機控制 , 主機在對 SD 卡進行任何 操作前都必須先要拉低 SD 卡的片選信號 CS (cardselect , 然后由主機向 SD 卡發(fā)送命令 , SD 卡對主機發(fā)送的任何命令都要進行響應(yīng) , 不同的命令會 有不同的響應(yīng)格式 (1字節(jié)或 2字節(jié)響應(yīng) 。 SD 卡除 了對命令響應(yīng)外 , 在執(zhí)行寫操作時 , 還要對主

5、機 發(fā)送的每個數(shù)據(jù)塊進行響應(yīng) (向主機發(fā)送一個特 殊的數(shù)據(jù)響應(yīng)標(biāo)志 。SPI 總線模式下的所有命令都是由 6個字節(jié)構(gòu)成 , 且發(fā)送時高位在前 , 其命令格式如表 1所列。 其中 , 7位 CRC (Cyclic Redundancy Check 循收稿日期 :2007-07-12基于 SPI 協(xié)議的 SD 卡讀寫機制與實現(xiàn)方法張洪濤 , 莫文承 , 李兵兵(西安電子科技大學(xué) ISN 國家重點實驗室 ,陜西西安 710071摘要 :介紹了基于 SPI 協(xié)議的 SD 卡與單片機的連接方法 , 分析了 SPI 總線模式 , 并用軟件模擬 SPI 總線時序的方法實現(xiàn)了單片機與 SD 卡的 SPI 總線

6、接口通信。 關(guān)鍵詞 :SD 卡 ; 串行外設(shè)協(xié)議 ; 時序 ; 讀寫機制圖 1單片機與 SD 卡的硬件連接圖42 環(huán)冗余校驗 校驗位可以全部寫入 0, 因為默認 情況下 , SPI 總線模式無需 CRC 校驗。3軟件模擬 SPI 總線模式下的字節(jié)傳輸由 于 W78LE58單 片 機 沒 有 SPI 接 口 , 因 此 ,應(yīng)使用軟件來模擬 SPI 的操作 , 包括串行時鐘和 數(shù)據(jù)輸入、輸出。圖 1中的 P1.5就是模擬 SPI 的時 鐘 (SCK 輸 出 端 , P1.4模 擬 SPI 的 從 機 選 擇 端 ,P1.6模擬單片機的數(shù)據(jù)輸出 , P1.7模擬 SD 卡的數(shù)據(jù)輸出。在將一個字節(jié)的數(shù)

7、據(jù) (累加器 ACC 中的 數(shù)據(jù) 送往 SD 卡時 , 先置時鐘 SCK 為 0, 以將累加 器 ACC 中的最高位左移至進位 C , 然后將進位 C 中 的 數(shù) 據(jù) 送 至 單 片 機 數(shù) 據(jù) 輸 出 口 P1.6, 并 置 時 鐘SCK 為 1, 至此 , 模擬 1位數(shù)據(jù)輸出即算完成。依此循環(huán) 8次 , 就可完成 1次通過 SPI 傳輸 8位數(shù)據(jù)的 操作。從 SD 卡讀取一個字節(jié)的數(shù)據(jù)至單片機的累 加器 ACC 與寫 SD 卡類似。單片機寫 1字節(jié)數(shù)據(jù) (累加器 ACC 中的數(shù)據(jù) 至 SD 卡的子程序如下 :WR_SD:MOV R2, #8; 置循環(huán)次數(shù) WR:CLR SCK; 使時鐘輸出

8、為 0NOP ; 延時RLC A ; 左移累加器 ACC 最高位至 C MOV P1.6, C ; 進位 C 送入數(shù)據(jù)輸出端SETB SCK ; 使時鐘輸出為 1DJNZ R2, WR; 判斷是否循環(huán) 8次 (8位數(shù)據(jù) RET單片機從 SD 卡讀 1字節(jié)數(shù)據(jù) (至累加器 ACC 中 的子程序如下 :RE_SD:MOV R2, #8RE:CLR SCKNOP MOV C, P1.7RLC ASETB SCK DJNZ R2, RE RET4軟件設(shè)計SD 卡的軟件設(shè)計主要包括兩部分內(nèi)容 :SD卡的上電初始化過程和對 SD 卡的讀寫操作。4.1SD 卡的初始化SD 卡從上電到對 SD 卡進行正確的讀

9、寫操作需要一個上電初始化的過程。上電初始化的流程 圖如圖 2所示。SD 卡上電后 , 主機必須先向 SD 卡發(fā)送 74個時鐘周期 , 以完成 SD 卡上電過程。 SD 卡上電后 會自動進入 SD 總線模式 , 并在 SD 總線模式下向SD 卡發(fā)送復(fù)位命令 (CMD0 , 若此時片選信號 CS處于低電平態(tài) , 則 SD 卡進入 SPI 總線模式 , 否則SD 卡工作在 SD 總線模式。 SD 卡進入 SPI 工作模式會發(fā)出應(yīng)答信號 , 若主機讀到的應(yīng)答信號為 01, 即表明 SD 卡已進入 SPI 模式 , 此時主機即可不斷 地向 SD 卡發(fā)送命令字 (CMD1 并讀取 SD 卡的應(yīng) 答信號 ,

10、 直到應(yīng)答信號為 00, 以表明 SD 卡已完成 初始化過程 , 準(zhǔn)備好接受下一命令。此后 , 系統(tǒng) 便可讀取 SD 卡的各寄存器 , 并進行讀寫等操作。 應(yīng)當(dāng)注意的是 :主機在向 SD 卡發(fā)送命令字 CMD0時 , SD 卡是處于 SD 總線模式的 , 此時要求每一 個命令都要有合法的 CRC 校驗位 ,表 1SPI 總線模式下的命令格式Byte1Byte2-5Byte676503107001CommandCommand ArgumentCRC1圖 2SD 卡的上電初始化流程(下轉(zhuǎn)第 47頁 43 儲序列頭信 息 (sequence_header 、 I 幀 或 PB 幀 圖 像 頭 信 息

11、 (picture_header 、 片 層 頭 信 息(slice_header 和 宏 塊 信 息 (macroblock 。 RAM2可存儲熵解碼器解碼后的量化系數(shù)和量化系數(shù)游 程。3.5指數(shù)哥倫布碼表在指數(shù)哥倫布解碼時 , me (v 和 ce (v 兩種解碼方式在解碼時都要用碼表來完成對應(yīng)數(shù)值的 映射變換。由于 me (v 的碼表比較小 , 所以 , 它 可在變長碼解碼器模塊內(nèi)部定義。 AVS 標(biāo)準(zhǔn)中定 義了與 ce (v 相關(guān)的 19個碼表 , 這些量化碼表可 根據(jù)編碼對象和編碼方式的不同通過 ROM 其將分 為亮度 -幀內(nèi)、亮度 -幀間和色度三類。4仿真與綜合結(jié)果可使用 Veri

12、log HDL 語言對本文所述結(jié)構(gòu)進行實現(xiàn) , 并可使用 Modelsim 對其進行前仿真。在使 用相同的輸入視頻測試碼流文件的前提下 , 前仿 真的輸出結(jié)果與 AVS 參考軟件 rm52c 所輸出的測試結(jié)果完全吻合。仿真結(jié)果表明 , 該實現(xiàn)方法完全符合 AVS 視頻標(biāo)準(zhǔn)解碼的要求。在該實現(xiàn)通過功能仿真后 , 便可使用 Quartus 對該實現(xiàn)進行綜合。選擇器件類型為 Stratix 系 列 的 EP2S60F672C5ES 時 , 綜 合 結(jié) 果 如 表 2所 列。綜合后的時鐘可以達到 81MHz , 可以滿足解 碼要求。5結(jié)束語本文提出了一種適用于 AVS 熵解碼器的 VLSI實 現(xiàn) 方

13、法 。 考 慮 到 AVS 硬 件 解 碼 時 的 流 水 線 操 作 , 本方法設(shè)計了高效的數(shù)據(jù)存儲結(jié)構(gòu)來方便后 續(xù)模塊的數(shù)據(jù)讀取操作 , 同時也滿足了設(shè)計的資 源與速度的要求 , 完全可以應(yīng)用于 AVS 視頻解碼 芯片之中。表 2綜合結(jié)果列表Total ALUTS 2,665/48352(5%Total registers 1220Total momery bits298,182/2,544,192(11%所以 , 此時的命令字 CMD0必須有正確的 CRC 校 驗位 (其校驗位為 95H 。而在發(fā)送命令字 CMD1時 , SD 卡已處于 SPI 模式 , 而默認的 SPI 模式無需CRC

14、 校驗 , 此時的 CRC 校驗位可直接寫入 0。 4.2SD 卡的讀寫流程SPI 模式支持單塊 (命令字為 CMD24 和多塊 (命令字為 CMD25 寫操作。多塊寫操作指的是從制定的位置開始寫 , 直到 SD 卡接收到一個停止命 令 (命令字為 CMD12 才停止寫操作。單塊的寫 操作數(shù)據(jù)塊的長度只能是 512字節(jié) , 本設(shè)計采用 的是單塊寫操作 , 其流程圖如圖 3所示。操作時 , 可首先向 SD 卡發(fā)送寫數(shù)據(jù)塊的命令字 CMD24, 在 接收到 SD 卡的響應(yīng)信號 (00 后 , 再發(fā)送數(shù)據(jù)起 始標(biāo)志 (0xFE , 然后發(fā)送 512字節(jié)的數(shù)據(jù) , 并后 跟兩字節(jié)的 CRC 校驗。當(dāng) SD 卡的回應(yīng)信號為 E5h 時 , 即表明 SD 卡可正確接收數(shù)據(jù) , 之

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論