• 正文
    • 1.硬件電路
    • 2. SD卡協(xié)議簡介
    • 3.FPGA實現(xiàn)
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于FPGA的SD卡讀寫操作(二)

2024/07/11
5302
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

引言:上一篇博文介紹了SD卡的理論知識,本文我們介紹如何利用FPGA實現(xiàn)SD卡的讀寫操作。

1.硬件電路

開發(fā)板上裝有一個 Micro SD 卡座,F(xiàn)PGA 通過 SPI 數(shù)據(jù)總線訪問 Micro SD 卡, SD 卡座和 FPGA的硬件電路連接如圖1所示。

圖1:SD卡硬件原理圖設(shè)計

本文通過SD卡SPI模式進行讀寫操作,SPI模式管腳定義如圖1所示。

2. SD卡協(xié)議簡介

SD卡的協(xié)議是一種簡單的命令/響應(yīng)的協(xié)議。全部命令由主機發(fā)起,SD卡接收到命令后并返回響應(yīng)數(shù)據(jù)。根據(jù)命令的不同,返回的數(shù)據(jù)內(nèi)容和長度也不同。

SD卡命令是一個6字節(jié)組成的命令包,其中第一個字節(jié)為命令號,命令號高位bit7和bit6為固定的“01“,其它6個bit為具體的命令號。第2個字節(jié)到第5個字節(jié)為命令參數(shù)。第6個字節(jié)為7個bit的CRC校驗加1個bit的結(jié)束位。如果在SPI模式的時候,CRC校驗位為可選。如圖2所示,Command表示命令,通常使用十進制表示名稱,例如CMD17,這個時候 Command就是十進制的17。

圖2:SD卡命令格式

SD卡對每個命令會返回一個響應(yīng),每個命令有一定的響應(yīng)格式。響應(yīng)的格式跟給它的命令號有關(guān)。在 SPI 模式中,有三種響應(yīng)格式:R1,R2,R3。

圖3:SPI模式響應(yīng)R1格式

圖4:SPI模式響應(yīng)R2格式

圖5:SPI模式響應(yīng)R3格式

2.2.1 SD卡2.0版的初始化步驟

(1)上電后延時至少74clock,等待SD卡內(nèi)部操作完成;

(2) 片選CS低電平選中SD卡;

(3)發(fā)送CMD0,需要返回0x01,進入Idle狀態(tài);

(4)為了區(qū)別SD卡是2.0還是1.0,或是MMC卡,這里根據(jù)協(xié)議向上兼容的,首先發(fā)送只有SD2.0才有的命令CMD8,如果CMD8返回?zé)o錯誤,則初步判斷為2.0卡,進一步循環(huán)發(fā)送命令CMD55+ACMD41,直到返回0x00,確定 SD2.0卡;

(5)如果CMD8返回錯誤則判斷為1.0卡還是MMC卡,循環(huán)發(fā)送 CMD55+ACMD41,返回?zé)o錯誤,則為SD1.0卡,到此SD1.0卡初始成功,如果在一定的循環(huán)次數(shù)下,返回為錯誤,則進一步發(fā)送CMD1進行初始化,如果返回?zé)o錯誤,則確定為MMC卡,如果在一定的次數(shù)下,返回為錯誤,則不能識別該卡,初始化結(jié)束。(通過CMD16可以改變SD卡一次性讀寫的長度);

(6) CS 拉高。

2.2.2 SD卡的讀步驟

(1)發(fā)送 CMD17(單塊)或 CMD18(多塊)讀命令,返回 0X00;

(2)接收數(shù)據(jù)開始令牌fe(或fc)+正式數(shù)據(jù)512Bytes+CRC校驗2Bytes,默認(rèn)正式傳輸?shù)臄?shù)據(jù)長度是 512Bytes。圖 6:單塊讀操作

2.2.3 SD卡的寫步驟

(1)發(fā)送 CMD24(單塊)或 CMD25(多塊)讀命令,返回 0X00;

(2)接收數(shù)據(jù)開始令牌fe(或fc)+正式數(shù)據(jù)512Bytes+CRC校驗2Bytes。

圖 7:單塊寫操作

3.FPGA實現(xiàn)

(1)軟件實現(xiàn)

本文要利用FPGA通過SPI接口實現(xiàn)SD卡讀寫操作。具體功能如下:

(1)SD卡SPI接口驅(qū)動設(shè)計;

(2)SD卡讀寫操作;

(3)讀出數(shù)據(jù)顯示在LED燈上;

(4)按鍵消抖功能。

軟件功能模塊劃分如圖8所示。

圖8:軟件功能模塊框圖

各個模塊功能:

(1)sd_card_test.v模塊為頂層模塊,實現(xiàn)模塊間互聯(lián);(2)spi_master.v實現(xiàn)SPI總線接口對外通信功能;
(3)sd_card_cmd.v實現(xiàn)SD卡命令協(xié)議功能;

(4)sd_card_sec_read_write.v實現(xiàn)SD卡讀寫命令狀態(tài)機操作功能;

(5)sd_card_top.v實現(xiàn)SD卡讀寫功能頂層互聯(lián);
(6)KeyJitters.v實現(xiàn)按鍵操作消抖功能;

(7)sd_test_ctrl.v實現(xiàn)SD卡測試數(shù)據(jù)讀寫狀態(tài)機控制。

?(2)測試結(jié)果

軟件下載至電路板,SD卡讀出數(shù)據(jù)正常顯示在LED上,如圖9所示,顯示讀寫操作正確。

圖9:SD卡讀出數(shù)據(jù)

圖10:SD卡讀出數(shù)據(jù)顯示在LED燈上

感謝關(guān)注公眾號,喜歡就多多轉(zhuǎn)發(fā)吧!

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
EP4CE6F17C8N 1 Altera Corporation Field Programmable Gate Array, 392 CLBs, 472.5MHz, 6272-Cell, PBGA256, 17 X 17 MM, 1 MM PITCH, LEAD FREE, FBGA-256

ECAD模型

下載ECAD模型
$127.84 查看
EPM240M100I5N 1 Altera Corporation Flash PLD, 7.5ns, 192-Cell, CMOS, PBGA100, 6 X 6 MM, 0.50 MM PITCH, LEAD FREE, MICRO, FBGA-100
$100.03 查看
EP2C8Q208C7N 1 Intel Corporation Field Programmable Gate Array, 516 CLBs, 450MHz, 8256-Cell, CMOS, PQFP208, LEAD FREE, PLASTIC, QFP-208

ECAD模型

下載ECAD模型
$358.54 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

專注FPGA技術(shù)開發(fā),涉及Intel FPGA、Xilinx FPGA技術(shù)開發(fā),開發(fā)環(huán)境使用,代碼風(fēng)格、時序收斂、器件架構(gòu)以及軟硬件項目實戰(zhàn)開發(fā),個人公眾號:FPGA技術(shù)實戰(zhàn)。