注冊登錄后可以在線提問,行業(yè)從業(yè)者將幫助您解答!
您需要 登錄 才可以下載或查看,沒有賬號?請用中文注冊用戶!
×
3.1.SD卡的命令格式:
SD卡1.png (25.55 KB, 下載次數(shù): 43)
下載附件
保存到相冊
2018-7-17 11:43 上傳
SD卡的指令由6字節(jié)(Byte)組成,如下:
Byte1:0 1 x x x x x x(命令號,由指令標(biāo)志定義CMD39為100111即16進(jìn)制0x27,那么完整的CMD39第一字節(jié)為01100111,即0x27+0x40)。
Byte2-5:Command Arguments,命令參數(shù),有些命令沒有參數(shù)。 Byte6:前7位為CRC(Cyclic Redundacy Check,循環(huán)冗余校驗)校驗位,最后一位為停止位0。 3.2. SD卡的命令 SD卡命令共分為12類,分別為class0到Class11. 3.2.1. Class0 :(卡的識別、初始化等基本命令集)
CMD0:復(fù)位SD 卡。
CMD1:讀OCR寄存器。
CMD9:讀CSD寄存器。
CMD10:讀CID寄存器。
CMD12:停止讀多塊時的數(shù)據(jù)傳輸。
CMD13:讀 Card_Status 寄存器。
3.2.2.Class2 (讀卡命令集): CMD16:設(shè)置塊的長度。
CMD17:讀單塊。
CMD18:讀多塊,直至主機(jī)發(fā)送CMD12為止 。 3.2.3.Class4(寫卡命令集) : CMD24:寫單塊。
CMD25:寫多塊。
CMD27:寫CSD寄存器 。 3.2.4.Class5 (擦除卡命令集): CMD32:設(shè)置擦除塊的起始地址。
CMD33:設(shè)置擦除塊的終止地址。
CMD38: 擦除所選擇的塊。 3.2.5.Class6(寫保護(hù)命令集): CMD28:設(shè)置寫保護(hù)塊的地址。
CMD29:擦除寫保護(hù)塊的地址。
CMD30: Ask the card for the status of the write protection bits class7:卡的鎖定,解鎖功能命令集。 class8:申請?zhí)囟罴?。 class10 -11 :保留。 3.3.SD卡的工作流程 首先看下脫離操作系統(tǒng)如何在ARM處理器上實現(xiàn)SD卡的讀寫。過程可以分為3個大的步驟:初始化sd卡、寫sd卡、讀sd卡。
3.3.1.工作條件檢測
卡在識別模式下的命令流程如圖3.1所示(英文版見標(biāo)準(zhǔn)SD卡協(xié)議P24)
SD卡2.png (194.49 KB, 下載次數(shù): 59)
下載附件
保存到相冊
2018-7-17 11:43 上傳
圖3.1 卡在識別模式下的命令流程 1)在主機(jī)和SD卡進(jìn)行任何通信之前,主機(jī)不知道SD卡支持的工作電壓范圍,卡也不知道是否支持主機(jī)當(dāng)前提供的電壓。因此主機(jī)首先使用默認(rèn)的電壓發(fā)送一條reset指令(CMD0)。
2)為了驗證SD卡的接口操作狀態(tài),主機(jī)發(fā)送SEND_IF_COND(CMD8),用于取得SD卡支持工作的電壓范圍數(shù)據(jù)。SD卡通過檢測CMD8的參數(shù)部分來檢查主機(jī)使用的工作電壓,主機(jī)通過分析回傳的CMD8參數(shù)部分來校驗SD卡是否可以在所給電壓下工作,如果SD卡可以在指定電壓下工作,則它回送CMD8的命令響應(yīng)字 。如果不支持所給電壓,則SD卡不會給出任何響應(yīng)信息,并繼續(xù)處于IDLE狀態(tài)。
3)在發(fā)送ACMD41命令初始化高容量的SD卡前,需要強(qiáng)制發(fā)送CMD8命令。強(qiáng)制低電壓主機(jī)在發(fā)送CMD8前發(fā)送ACMD41,萬一雙重電壓SD卡沒有收到CMD8命令且工作在高電壓狀態(tài),在這種情況下,低電壓主機(jī)不能不發(fā)送CMD8命令給卡,則收到ACMD41后進(jìn)
入無活動狀態(tài)。 4)SD_SEND_OP_COND(ACMD)命令是為SD卡主機(jī)識別卡或者電壓不匹配時拒絕卡的機(jī)制設(shè)計的。主機(jī)發(fā)送命令操作數(shù)代表要求的電壓窗口大小。如果SD卡在所給的范圍內(nèi)不能實現(xiàn)數(shù)據(jù)傳輸,將放棄下一步的總線操作而進(jìn)入無活動。操作狀態(tài)寄存器也將被定義。 5)在主機(jī)發(fā)出復(fù)位命令(CMD0)后,主機(jī)將先發(fā)送CMD8再發(fā)送ACMD41命令重新初始化SD卡。 3.3.2.卡的初始化和識別處理 當(dāng)總線被激合后,主機(jī)就開始卡的初始化和識別3處理。初始化處理設(shè)置它的操作狀態(tài)和是設(shè)置OCR中的HCS比特命令SD_SEND_OP_COND(ACMD41)開始。HCS比特位被設(shè)置為1表示主機(jī)支持高容量SD卡。HCS被設(shè)置為0表示主機(jī)不支持高容量SD卡。
卡的初始化和識別流程見圖3.2
SD卡3.png (179.52 KB, 下載次數(shù): 61)
下載附件
保存到相冊
2018-7-17 11:43 上傳
圖 3.2卡的初始化和識別流程 3.3.3.數(shù)據(jù)傳輸模式 卡在識別模式結(jié)束后,主機(jī)時鐘fpp(數(shù)據(jù)傳輸時鐘頻率)將保存為fod(卡識別模式下的時鐘),由于有些卡對操作時鐘有限制。主機(jī)必須發(fā)送SEND_CSD(CMD9)來獲得卡規(guī)格數(shù)據(jù)積存器內(nèi)容,如塊大小,卡容量。廣播命令SET_DSR(CMD4)配置所有識別卡的驅(qū)動階段。它對DSR積存器進(jìn)行編程以適應(yīng)應(yīng)用總線布局,總線上的卡數(shù)目和數(shù)據(jù)傳輸頻率。 SD卡數(shù)據(jù)傳輸模式的流程圖(英文版協(xié)議P26)如圖3.3所示
SD卡4.png (182.69 KB, 下載次數(shù): 63)
下載附件
保存到相冊
2018-7-17 11:43 上傳
圖3.3 SD卡數(shù)據(jù)傳輸模式的流程圖 1)CMD7命令用來選擇某個SD卡,使其進(jìn)入Transfer狀態(tài),在指定時間段內(nèi),只有一個卡能處于Transfer狀態(tài)。當(dāng)某個先前被選中的處于Transfer狀態(tài)的SD卡接收到CMD7之后,會釋放與控制器的連接,并進(jìn)入Stand-by態(tài)。當(dāng)CMD7使用保留地址0x0000時,所有的SD卡都會進(jìn)入Stand-by狀態(tài) 。 2)所有的數(shù)據(jù)讀命令都可以被停止命令(CMD12)在任意時刻終止。數(shù)據(jù)傳輸會終止,SD卡返回Transfer狀態(tài)。讀命令有:塊讀操作(CMD17)、多塊讀操作(CMD18)、發(fā)送寫保護(hù)(CMD30)、發(fā)送scr(ACMD51)以及讀模式下的普通命令
(CMD56)。 3)所有的數(shù)據(jù)寫命令都可以被停止命令(CMD12)在任意時刻終止。寫命令也會在取消選擇命令(CMD7)之前停止。寫命令有:塊寫操作(CMD24,CMD25)、編程命令(CMD27)、鎖定/解鎖命令(CMD42)以及寫模式下的普通命令(CMD56)。 4)數(shù)據(jù)傳輸一旦完成,SD卡會退出數(shù)據(jù)寫狀態(tài),進(jìn)入Programming狀態(tài)(傳輸成功)或者Transfer狀態(tài)(傳輸失敗)。 深圳雷龍發(fā)展有限公司從事NANDFLASH行業(yè)10+年.目前代理ATO Solution小容量SLC NAND,SPI NAND,MCP等。想了解更多請咨詢QQ:2852826868;電話13691982107
|