版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SD卡操作一、 概述 1、簡(jiǎn)介SD卡是基于flash的存儲(chǔ)卡。SD卡和MMC卡的區(qū)別在于初始化過(guò)程不同。SD卡的通信協(xié)議包括SD和SPI兩類。SD卡使用卡內(nèi)智能控制模塊進(jìn)行FLASH操作控制,包括協(xié)議、安全算法、數(shù)據(jù)存取、ECC算法、缺陷處理和分析、電源管理、時(shí)鐘管理。2、功能介紹2.1 特點(diǎn)1) 主機(jī)無(wú)關(guān)的FLASH內(nèi)存擦除和編程讀或?qū)憯?shù)據(jù),主機(jī)只要發(fā)送一個(gè)帶地址的命令,然后等待命令完成,主機(jī)無(wú)需關(guān)心具體操作的完成。當(dāng)采用新型的FLASH時(shí),主機(jī)代碼無(wú)需更新。2) 缺陷管理3) 錯(cuò)誤恢復(fù)4) 電源管理Flash每個(gè)扇區(qū)有大約10萬(wàn)次的寫(xiě)壽命,讀沒(méi)有限制。擦除操作可以加速寫(xiě)操作,因?yàn)樵趯?xiě)之前會(huì)
2、進(jìn)行擦除。3 SD總線模式3.1 Negotiating Operation Conditions當(dāng)主機(jī)定義了SD卡不支持的電壓范圍時(shí),SD卡將處于非活動(dòng)狀態(tài),將忽略所有的總線傳輸。要退出非活動(dòng)狀態(tài)唯一的方法就是重新上電。3.2 SD卡獲取和識(shí)別SD卡總線采用的是單主多從結(jié)構(gòu),總線上所有卡共用時(shí)鐘和電源線。主機(jī)依次分別訪問(wèn)每個(gè)卡,每個(gè)卡的CID寄存器中已預(yù)編程了一個(gè)唯一的卡標(biāo)識(shí)號(hào),用來(lái)區(qū)分不同的卡。主機(jī)通過(guò)READ_CID命令讀取CID寄存器。CID寄存器在SD卡生產(chǎn)過(guò)程中的測(cè)試和格式化時(shí)被編程,主機(jī)只能讀取該號(hào)。DAT3線上內(nèi)置的上拉電阻用來(lái)偵測(cè)卡。在數(shù)據(jù)傳輸時(shí)電阻斷開(kāi)(使用 ACMD42)
3、。3.3 卡狀態(tài)卡狀態(tài)分別存放在下面兩個(gè)區(qū)域:卡狀態(tài)(Card Status),存放在一個(gè)32位狀態(tài)寄存器,在卡響應(yīng)主機(jī)命令時(shí)作為數(shù)據(jù)傳送給主機(jī)。SD狀態(tài)(SD_Status),當(dāng)主機(jī)使用SD_STATUS(ACMD13)命令時(shí),512位以一個(gè)數(shù)據(jù)塊的方式發(fā)送給主機(jī)。SD_STATUS還包括了和BUS_WIDTH、安全相關(guān)位和擴(kuò)展位等的擴(kuò)展?fàn)顟B(tài)位。3.4 內(nèi)存組織數(shù)據(jù)讀寫(xiě)的基本單元是一個(gè)字節(jié),可以按要求組織成不同的塊。Block:塊大小可以固定,也可以改變,允許的塊大小是實(shí)際大小等信息存儲(chǔ)在CSD寄存器。Sector:和擦除命令相關(guān),由幾個(gè)塊組成。Sector的大小對(duì)每個(gè)設(shè)備是固定的,大小信息
4、存儲(chǔ)在CSD寄存器。WP Group:寫(xiě)保護(hù)單位。大小包括幾個(gè)group,寫(xiě)保護(hù)由一位決定,對(duì)每個(gè)設(shè)備大小是固定的,存儲(chǔ)在CSD寄存器。3.5 讀寫(xiě)操作Single Block Mode:主機(jī)根據(jù)事先定義的長(zhǎng)度讀寫(xiě)一個(gè)數(shù)據(jù)塊。由發(fā)送模塊產(chǎn)生一個(gè)16位的CRC校驗(yàn)碼,接受端根據(jù)校驗(yàn)碼進(jìn)行檢驗(yàn)。讀操作的塊長(zhǎng)度受設(shè)備sector大小 (512 bytes)的限制,但是可以最小為一個(gè)字節(jié)。不對(duì)齊的訪問(wèn)是不允許的,每個(gè)數(shù)據(jù)塊必須位于單個(gè)物理sector內(nèi)。寫(xiě)操作的大小必須為sector大小,起始地址必須與sector邊界對(duì)齊。Multiple Block Mode:主機(jī)可以讀寫(xiě)多個(gè)數(shù)據(jù)塊(相同長(zhǎng)度),根
5、據(jù)命令中的地址讀取或?qū)懭脒B續(xù)的內(nèi)存地址。操作通過(guò)一個(gè)停止傳輸命令結(jié)束。寫(xiě)操作必須地址對(duì)齊。3.6 數(shù)據(jù)傳輸速率SD卡可以通過(guò)單數(shù)據(jù)線(DAT0)或四根數(shù)據(jù)線(DAT0-DAT3)進(jìn)行數(shù)據(jù)傳輸。單根數(shù)據(jù)線傳輸最大傳輸速率為25 Mbit/s,四根數(shù)據(jù)線最大傳輸速率為100 Mbit/s。3.7 數(shù)據(jù)保護(hù)每個(gè)sector的數(shù)據(jù)通過(guò)Error Correction Code (ECC)進(jìn)行保護(hù)。在寫(xiě)sector時(shí)生成ECC,在讀sector時(shí)檢驗(yàn)ECC。如果發(fā)現(xiàn)錯(cuò)誤,在傳輸前進(jìn)行糾正。3.8數(shù)據(jù)擦除SD卡數(shù)據(jù)擦除的最小單位是sector。為了加速擦除操作,多個(gè)sector可以同時(shí)擦除。為了方便選擇,
6、第一個(gè)指令包含起始地址,第二個(gè)指令包含結(jié)束地址,在地址范圍內(nèi)的所有sector將被擦除。3.9 寫(xiě)保護(hù)兩種寫(xiě)保護(hù)方式可供選擇,永久保護(hù)和臨時(shí)保護(hù),兩種方式都可以通過(guò)PROGRAM_CSD指令進(jìn)行設(shè)置。永久保護(hù)位一旦設(shè)置將無(wú)法清除。3.10 拷貝位通過(guò)CSD寄存器中的拷貝位(copy bit)設(shè)置SD卡中的數(shù)據(jù)是原始數(shù)據(jù)還是拷貝數(shù)據(jù)??截愇灰坏┰O(shè)置,將無(wú)法清除,在測(cè)試和格式化時(shí)使用。3.11 CSD寄存器所有SD卡的配置信息存儲(chǔ)在CSD寄存器。通過(guò)SEND_CSD讀取,PROGRAM_CSD修改。4 SPI模式二、 SD卡接口描述1 引腳和寄存器主機(jī)通過(guò)9個(gè)引腳和SD卡相連1.1 SD模式引腳擴(kuò)
7、展數(shù)據(jù)線(DAT1-DAT3)上電后為輸入,SET_BUS_WIDTH命令執(zhí)行后作為數(shù)據(jù)線。即使只有DAT0使用,所有數(shù)據(jù)線都和外部上拉電阻連接,否則DAT1 & DAT2(如果未被使用)的振蕩輸入將引起非期望的高電流損耗。上電后,數(shù)據(jù)線輸入50K(+/-20K)歐姆的上拉(用來(lái)進(jìn)行卡偵測(cè)和SPI模式選擇)。用戶可以在常規(guī)數(shù)據(jù)傳輸時(shí),通過(guò)SET_CLR_CARD_DETECT (ACMD42)命令分離上拉。1.2 SPI模式引腳1.3 寄存器名稱寬度描述CID128卡標(biāo)識(shí)號(hào)RCA16相對(duì)卡地址(Relative card address):本地系統(tǒng)中卡的地址,動(dòng)態(tài)變化,在主機(jī)初始化的時(shí)候確定*
8、SPI模式中沒(méi)有CSD128卡描述數(shù)據(jù):卡操作條件相關(guān)的信息數(shù)據(jù)SCR64SD配置寄存器:SD卡特定信息數(shù)據(jù)OCR32操作條件寄存器主機(jī)通過(guò)重新上電來(lái)重置(reset)卡??ㄓ兴陨頇z測(cè)上電的電路,當(dāng)上電后卡狀態(tài)切換到idle狀態(tài)。也可以通過(guò)GO_IDLE (CMD0)指令來(lái)重置。2 SD卡總線拓?fù)銼D總線有6根通信線和三根電源供應(yīng)線: CMD命令線是雙向信號(hào)線。主機(jī)和卡通過(guò)push pull 模式工作。 DAT0-3數(shù)據(jù)線是雙向信號(hào)線。主機(jī)和卡通過(guò)push pull 模式工作。 CLK時(shí)鐘是從主機(jī)到卡的信號(hào)。CLK通過(guò)push pull 模式操作。 VDDVDD是所有卡的電源供應(yīng)線。 VSS
9、1:2VSS是2根地線。在初始化的時(shí)候,向每個(gè)卡分別發(fā)送命令,允許應(yīng)用檢測(cè)卡并給物理槽(physical slot)分配邏輯地址。數(shù)據(jù)通常分別傳輸給每個(gè)卡。然后,為了方便處理卡堆棧,初始化后所有命令同時(shí)發(fā)送給所有卡,在命令數(shù)據(jù)包中包含了操作地址。SD總線允許動(dòng)態(tài)配置數(shù)據(jù)線數(shù)目。上電后默認(rèn)SD卡只用DAT0作為數(shù)據(jù)傳輸線。初始化后,主機(jī)可以改變總線寬度。這個(gè)特性使得在硬件開(kāi)銷和系統(tǒng)性能間取得平衡。3 SPI總線拓?fù)? 電氣接口4.1 上電上電后,包括熱插入,卡進(jìn)入idle狀態(tài)。在該狀態(tài)SD卡忽略所有總線操作直到接收到ACMD41命令。ACMD41命令是一個(gè)特殊的同步命令,用來(lái)協(xié)商操作電壓范圍,并
10、輪詢所有的卡。除了操作電壓信息,ACMD41的響應(yīng)還包括一個(gè)忙標(biāo)志,表明卡還在power-up過(guò)程工作,還沒(méi)有準(zhǔn)備好識(shí)別操作,即告訴主機(jī)卡還沒(méi)有就緒。主機(jī)等待(繼續(xù)輪詢)直到忙標(biāo)志清除。單個(gè)卡的最大上電時(shí)間不能操作1秒。上電后,主機(jī)開(kāi)始時(shí)鐘并在CMD線上發(fā)送初始化序列,初始化序列由連續(xù)的邏輯“1”組成。序列長(zhǎng)度為最大1毫秒,74個(gè)時(shí)鐘或supply-ramp-up時(shí)間。額外的10個(gè)時(shí)鐘(64個(gè)時(shí)鐘后卡已準(zhǔn)備就緒)用來(lái)實(shí)現(xiàn)同步。每個(gè)總線控制器必須能執(zhí)行ACMD41和CMD1。CMD1要求MMC卡發(fā)送操作條件。在任何情況下,ACMD41或CMD1必須通過(guò)各自的CMD線分別發(fā)送給每個(gè)卡。5 寄存器5
11、.1 OCR(Operating Conditions Register)32位的操作條件寄存器存儲(chǔ)了VDD電壓范圍。SD卡操作電壓范圍為23.6V。然而從內(nèi)存中訪問(wèn)數(shù)據(jù)的電壓是2.73.6V。OCR顯示了卡數(shù)據(jù)訪問(wèn)電壓范圍,結(jié)構(gòu)如下表所示。表3-8 OCR寄存器定義OCR位VDD電壓范圍0-3保留41.61.751.71.861.81.971.92.082.02.192.12.2102.22.3112.32.4122.42.5132.52.6142.62.7152.71.8162.82.9172.93.0183.03.1193.13.2203.23.3213.33.4223.43.5233.
12、53.624-30保留31卡上電狀態(tài)位(忙)OCR結(jié)構(gòu)如下圖所示。如果第32位(busy bit)置位,表明卡上電過(guò)程已結(jié)束。5.2 CID(Card Identification)CID寄存器長(zhǎng)度為16個(gè)字節(jié)的卡唯一標(biāo)識(shí)號(hào),該號(hào)在卡生產(chǎn)廠家編程后無(wú)法修改。SD和MMC卡的CID寄存器結(jié)構(gòu)不一樣。名稱類型寬度CID位內(nèi)容CID值廠商IDBinary8127:120SD卡協(xié)會(huì)管理和分配0x03OEM/Application ID(OID)ASCII16119:104識(shí)別卡的OEM或卡內(nèi)容,由制造商分配0x53,0x44產(chǎn)品名(PNM)ASCII40103:645個(gè)ASCII字符SD128產(chǎn)品版本
13、(PRV)BCD865:562個(gè)二進(jìn)制編碼的十進(jìn)制數(shù)產(chǎn)品版本(30)1序列號(hào)(PSN)Binary3255:2432位無(wú)符號(hào)整數(shù)產(chǎn)品序列號(hào)保留423:20生成日期(MDT)BCD1219:8yym(從2000年的偏移量)如:Apr 2001=0x014CRC7校驗(yàn)和(CRC)Binary77:1CRC Calculation: G(x)=x7+3+1M(x)=(MID-MSB)*x119+.+(CIN-LSB)*x0CRC6.0=Remainder(M(x)*x7)/G(x)CRC7未用10:01、 格式為“n.m”,如“6.2”表示為0110 00105.3 CSD(Card Specifi
14、c Data)CSD寄存器包含訪問(wèn)卡數(shù)據(jù)所需的配置信息。SD卡和MMC卡的CSD不同。6 數(shù)據(jù)交互格式和卡容量通常,SD卡分為2個(gè)區(qū): 用戶區(qū)用戶通過(guò)讀寫(xiě)命令存儲(chǔ)安全和非安全數(shù)據(jù)。 安全保護(hù)區(qū)(Security Protected Area)版權(quán)保護(hù)應(yīng)用程序用來(lái)保存安全相關(guān)數(shù)據(jù),通過(guò)SD安全規(guī)范中定義的條件驗(yàn)證后,由主機(jī)使用安全的讀寫(xiě)指令完成操作。安全保護(hù)區(qū)的大小大概是總大小的1%。三、 SD卡協(xié)議1 SD總線協(xié)議SD總線通信是基于命令和數(shù)據(jù)位流方式的,由一個(gè)起始位開(kāi)始,以一個(gè)停止位結(jié)束:命令命令是開(kāi)始開(kāi)始操作的標(biāo)記。命令從主機(jī)發(fā)送一個(gè)卡(尋址命令)或所有連接的卡(廣播命令)。命令在CMD線上
15、串行傳送。響應(yīng)響應(yīng)是從尋址卡或所有連接的卡(同步)發(fā)送給主機(jī)用來(lái)響應(yīng)接受到的命令的標(biāo)記。命令在CMD線上串行傳送。數(shù)據(jù)數(shù)據(jù)可以通過(guò)數(shù)據(jù)線在卡和主機(jī)間雙向傳送??▽ぶ吠ㄟ^(guò)會(huì)話地址方式實(shí)現(xiàn),地址在初始化的時(shí)候分配給卡。SD總線上的基本操作是command/response。數(shù)據(jù)傳送采用塊方式,數(shù)據(jù)塊后接CRC校驗(yàn)位,操作包括單數(shù)據(jù)塊和多數(shù)據(jù)塊。多數(shù)據(jù)塊更適合快速寫(xiě)操作,多數(shù)據(jù)塊傳輸當(dāng)在CMD線出現(xiàn)停止命令時(shí)結(jié)束。 數(shù)據(jù)傳輸可以在主機(jī)端設(shè)置采用單數(shù)據(jù)線或多數(shù)據(jù)線方式。塊寫(xiě)操作在DAT0數(shù)據(jù)線寫(xiě)操作期間使用忙信號(hào),無(wú)論用來(lái)傳輸?shù)男盘?hào)線數(shù)目是多少。命令格式如下所示:響應(yīng)標(biāo)記(token)根據(jù)內(nèi)容不同具有
16、四種格式,標(biāo)記長(zhǎng)度。長(zhǎng)度為48位或136位。數(shù)據(jù)塊的CRC算法采用16位的CCITT多項(xiàng)式。在命令行中,MSB位首先傳送,LSB位最后傳送。當(dāng)使用寬總線模式時(shí),數(shù)據(jù)同時(shí)在4根數(shù)據(jù)線上傳輸。開(kāi)始位、結(jié)束位和CRC在每根數(shù)據(jù)線上傳送。CRC對(duì)每根數(shù)據(jù)線單獨(dú)計(jì)算。CRC狀態(tài)響應(yīng)和Busy信號(hào)只通過(guò)DAT0由卡發(fā)送給主機(jī)。2 協(xié)議功能描述所有主機(jī)和SD卡間的通信由主機(jī)控制。主機(jī)發(fā)送下述兩類命令:l 廣播命令廣播命令發(fā)送給所有SD卡,有些命令需要響應(yīng)。l 尋址(點(diǎn)對(duì)點(diǎn))命令尋址命令只發(fā)送給具有相應(yīng)地址的卡,并需要從卡返回一個(gè)響應(yīng)。對(duì)卡而言也有兩類操作:l 卡識(shí)別模式在重置(reset)后當(dāng)主機(jī)查找總線上
17、的新卡時(shí),處于卡識(shí)別模式。重置后SD卡將始終處于該模式,直到收到SEND_RCA命令(CMD3)。l 數(shù)據(jù)傳輸模式一旦卡的REC發(fā)布后,將進(jìn)入數(shù)據(jù)傳輸模式。主機(jī)一旦識(shí)別了所有總線上的卡后,將進(jìn)入數(shù)據(jù)傳輸模式。操作模式與卡狀態(tài)關(guān)系:3 卡識(shí)別模式在卡識(shí)別模式,主機(jī)重置所有處于卡識(shí)別模式的SD卡,檢驗(yàn)操作電壓范圍,識(shí)別卡并請(qǐng)求卡發(fā)送相對(duì)卡地址RCA。操作對(duì)每個(gè)卡在各自的CMD線上單獨(dú)進(jìn)行,所有的數(shù)據(jù)傳送只使用CMD線。3.1 重置GO_IDLE_STATE(CMD0)是軟件重置命令,設(shè)置每個(gè)SD卡進(jìn)入Idle狀態(tài)。處于Inactive狀態(tài)的卡不受此命令影響。主機(jī)上電后,所有SD卡進(jìn)入Idle狀態(tài),
18、包括處于Inactive狀態(tài)的卡。至少74個(gè)時(shí)鐘周期后才能開(kāi)始總線傳輸。上電或CMD0后,所有SD卡的命令線處于輸入模式,等待下一個(gè)命令的起始位。卡通過(guò)一個(gè)默認(rèn)的相對(duì)卡地址RCA(RCA=0x0000)和默認(rèn)驅(qū)動(dòng)寄存器設(shè)置(最低速,最高驅(qū)動(dòng)電流)初始化。3.2 操作電壓范圍驗(yàn)證SD的物理規(guī)范標(biāo)準(zhǔn)要求所有SD卡能通過(guò)最小和最大供電電壓間的任何電壓和主機(jī)建立通信。然而,數(shù)據(jù)傳輸時(shí)的最小和最大電壓值在操作條件寄存器OCR中定義,可能并不能覆蓋所有的電壓范圍。SD卡主機(jī)希望通過(guò)讀取卡的OCR寄存器獲取合適的電壓值或彈出卡。SD卡3.3 卡識(shí)別過(guò)程在識(shí)別時(shí)鐘速率fOD下主機(jī)開(kāi)始卡識(shí)別過(guò)程。SD卡的CMD
19、線輸出驅(qū)動(dòng)是push-pull驅(qū)動(dòng)??偩€激活后,主機(jī)要求卡發(fā)送它們的有效操作條件(ACMD41 preceding with APP_CMDCMD55 with RCA=0x0000)。ACMD41命令的響應(yīng)是卡的操作條件寄存器。相同的命令將發(fā)送給系統(tǒng)中所有的卡。不兼容的卡將進(jìn)入Inactive狀態(tài)。主機(jī)然后發(fā)送命令A(yù)LL_SEND_CID(CMD2)到每個(gè)卡以獲取每個(gè)卡的唯一標(biāo)識(shí)CID號(hào)。未識(shí)別的卡通過(guò)CMD線發(fā)送CID號(hào)作為響應(yīng)。當(dāng)卡發(fā)送CID號(hào)后,進(jìn)入識(shí)別狀態(tài)(Identification State)。此后,主機(jī)發(fā)送CMD3(SEND_RELATIVE_ADDR)要求卡發(fā)布一個(gè)新的相對(duì)
20、卡地址RCA,地址比CID短,在以后的數(shù)據(jù)傳輸模式中用來(lái)尋址卡。一旦獲得RCA后,卡狀態(tài)變成就緒狀態(tài)(Stand-by state)。此時(shí),如果主機(jī)要求卡換成其他的RCA號(hào),可以通過(guò)發(fā)送另一個(gè)SEND_RELATIVE_ADDR命令給卡,要求發(fā)布一個(gè)新的RCA,最后發(fā)布的RCA是實(shí)際使用的RCA。主機(jī)對(duì)系統(tǒng)中的每個(gè)卡重復(fù)識(shí)別過(guò)程。所有的SD卡初始化完以后,系統(tǒng)將開(kāi)始初始化MMC卡(如果有的話),使用MMC卡的CMD2和CMD3。4 數(shù)據(jù)傳輸模式直到主機(jī)知道所有CSD寄存器的內(nèi)容,fpp時(shí)鐘速率必須保持在fOD,因?yàn)橐恍┛ㄓ胁僮黝l率限制。主機(jī)發(fā)送SEND_CSD(CMD9)獲取卡定義數(shù)據(jù)(Car
21、d Specific Data,CSD寄存器),如塊大小、卡存儲(chǔ)容量、最大時(shí)鐘速率等。 CMD7用來(lái)選擇一個(gè)卡并將它置于傳輸狀態(tài)(Transfer state),在任何時(shí)間只能有一個(gè)卡處于傳輸狀態(tài)。如果已有一個(gè)卡處于傳輸狀態(tài),它和主機(jī)的連接將釋放,并返回到Stand-by狀態(tài)。當(dāng)CMD7以保留相對(duì)地址“0x0000”發(fā)送時(shí),所有卡將返回到Stand-by狀態(tài)。這可以用來(lái)識(shí)別新的卡而不重置其他已注冊(cè)的卡。在這種狀態(tài)下已有一個(gè)RCA地址的卡不響應(yīng)識(shí)別命令(ACMD41,CMD2,CMD3)。注意:當(dāng)卡接收到一個(gè)帶有不匹配RCA的CMD7時(shí),卡將取消選中。在公用CMD線時(shí),選中一個(gè)卡時(shí)將自動(dòng)不選中其
22、他卡。因此,在SD卡系統(tǒng)中,主機(jī)具有如下功能:l 初始化完成后,在公用CMD線時(shí),不選中卡是自動(dòng)完成的。l 如果使用單獨(dú)的CMD線,需要關(guān)注不選中卡的操作在主機(jī)和選擇的SD卡之間的所有數(shù)據(jù)通信是點(diǎn)對(duì)點(diǎn)的方式。所有尋址命令都需要響應(yīng)。不同數(shù)據(jù)傳輸模式的關(guān)系如圖4-8所示,使用如下步驟:l 所有讀數(shù)據(jù)命令可以在任何時(shí)候通過(guò)停止命令(stop command,CMD12)中止。數(shù)據(jù)傳輸將中止,卡回到傳輸狀態(tài)(Transfer State)。讀命令有:塊讀命令(CMD17),多塊讀命令(CMD18),發(fā)送讀保護(hù)(CMD30),發(fā)送scr(ACMD51),以及讀模式的通用命令(CMD56)。l 所有寫(xiě)數(shù)
23、據(jù)命令可以在任何時(shí)候通過(guò)停止命令(stop command,CMD12)中止。在不選中卡命令CMD7前寫(xiě)命令必須停止。寫(xiě)命令有:塊寫(xiě)命令 (CMD24 and CMD25), 寫(xiě)CID (CMD26), 寫(xiě)CSD(CMD27), lock/unlock 命令(CMD42) 以及寫(xiě)模式通用命令(CMD56)。l 一旦數(shù)據(jù)傳輸完成,卡將退出數(shù)據(jù)寫(xiě)狀態(tài)并進(jìn)入Programming State(傳輸成功)或Transfer State(傳輸失?。 如果一個(gè)快寫(xiě)操作停止,而且最后一塊塊長(zhǎng)度和CRC是有效的,那么數(shù)據(jù)可以被操作(programmed)。l 卡可能提供塊寫(xiě)緩沖。這意味著在前一塊數(shù)據(jù)被操作
24、時(shí),下一塊數(shù)據(jù)可以傳送給卡。如果所有卡寫(xiě)緩沖已滿,只要卡在Programming State,DAT0將保持低電平(BUSY)。l 寫(xiě)CSD、CID、寫(xiě)保護(hù)和擦除時(shí)沒(méi)有緩沖。這表明在卡因這些命令而處于忙時(shí),不再接收其他數(shù)據(jù)傳輸命令。在卡忙時(shí)DAT0保持低電平,并處于Programming State。實(shí)際上如果CMD和DAT0線分離,而且主機(jī)占有的忙DAT0線和其他DAT0線分開(kāi),那么在卡忙時(shí),主機(jī)可以訪問(wèn)其他卡。l 在卡被編程(programming)時(shí),禁止參數(shù)設(shè)置命令。參數(shù)設(shè)置命令包括:設(shè)置塊長(zhǎng)度(CMD16),擦除塊開(kāi)始(CMD32)和擦除塊結(jié)束(CMD33)。l 卡在操作時(shí)不允許讀命
25、令。l 使用CMD7指令把另一個(gè)卡從Stand-by狀態(tài)轉(zhuǎn)移到Transfer狀態(tài)不會(huì)中止擦除和編程(programming)操作??▽⑶袚Q到Disconnect狀態(tài)并釋放DAT線。l 使用CMD7指令可以不選中處于Disconnect狀態(tài)的卡??▽⑦M(jìn)入Programming狀態(tài),重新激活忙指示。l 使用CMD0或CMD15重置卡將中止所有掛起和活動(dòng)的編程(programming)操作。這可能會(huì)破壞卡上的數(shù)據(jù)內(nèi)容,需要主機(jī)保證避免這樣的操作。4.1 寬總線選擇/不選擇寬總線(4位總線寬度)操作模式通過(guò)ACMD6選擇和不選擇。在上電后或GO_IDLE(CMD0)命令后默認(rèn)的總線寬度是1位。ACM
26、D6命令只在“tran state”有效,即只有在卡選中后(CMD7)總線寬度才能修改。4.2 讀數(shù)據(jù)格式DAT總線在沒(méi)有數(shù)據(jù)傳輸時(shí)處于高電平。一個(gè)傳輸數(shù)據(jù)塊包含一個(gè)起始位(LOW),接著連續(xù)的數(shù)據(jù)流。數(shù)據(jù)流包含有效數(shù)據(jù)(如果使用了ECC了還包括錯(cuò)誤糾正位)。數(shù)據(jù)流以一個(gè)結(jié)束位(HIGH)結(jié)束。數(shù)據(jù)傳輸和時(shí)鐘信號(hào)同步。以塊傳輸?shù)挠行?shù)據(jù)包含CRC校驗(yàn)和。產(chǎn)生多項(xiàng)式是標(biāo)準(zhǔn) CCITT多項(xiàng)式。采用了縮短的BCH碼,d=4,有效數(shù)據(jù)長(zhǎng)度最長(zhǎng)為2048字節(jié)。CRC校驗(yàn)和對(duì)每個(gè)DAT線單獨(dú)計(jì)算并附加在每個(gè)數(shù)據(jù)塊后。在寬總線模式操作(DAT0-DAT3)中,16位的CRC校驗(yàn)對(duì)每個(gè)DAT分別計(jì)算。數(shù)據(jù)塊讀
27、傳輸?shù)幕締挝皇菙?shù)據(jù)塊,最大尺寸在CSD中定義(READ_BL_LEN)。開(kāi)始和結(jié)束地址完全包含在一個(gè)物理數(shù)據(jù)快(如READ_BL_LEN定義)中的較小的塊也可以傳遞。CRC附加在每個(gè)數(shù)據(jù)塊的尾部用來(lái)保證數(shù)據(jù)傳輸?shù)耐暾?。CMD17(READ_SINGLE_BLOCK)開(kāi)始一個(gè)塊讀操作,然后傳輸完成后進(jìn)入Transfer狀態(tài)。CMD18(READ_MULTIPLE_BLOCK)開(kāi)始連續(xù)的塊傳輸,直到停止命令。停止命令有一個(gè)執(zhí)行延遲。在停止命令最后一位發(fā)送完以后數(shù)據(jù)傳輸停止。如果主機(jī)使用累計(jì)長(zhǎng)度不是塊對(duì)齊的部分塊,在第一個(gè)不對(duì)齊塊的開(kāi)始,卡會(huì)發(fā)現(xiàn)一個(gè)塊未對(duì)齊錯(cuò)誤,在狀態(tài)寄存器中設(shè)置ADDRESS
28、_ERR錯(cuò)誤,中止傳輸并等待(在Data狀態(tài))停止命令。4.3 數(shù)據(jù)寫(xiě)格式數(shù)據(jù)寫(xiě)傳輸格式類似于讀格式。對(duì)于以塊為單位的寫(xiě)數(shù)據(jù)傳輸,CRC檢驗(yàn)位附加到每個(gè)數(shù)據(jù)塊??ǖ拿扛鶖?shù)據(jù)線在接收到數(shù)據(jù)并在寫(xiě)操作前,執(zhí)行CRC校驗(yàn)。數(shù)據(jù)塊寫(xiě)數(shù)據(jù)塊寫(xiě)(CMD24-27,42,56(W)),一個(gè)或多個(gè)數(shù)據(jù)塊從主機(jī)發(fā)送給卡,主機(jī)在每個(gè)數(shù)據(jù)塊后附加CRC校驗(yàn)。數(shù)據(jù)塊長(zhǎng)度WRITE_BL_LEN(512B)。如果CRC校驗(yàn)失敗,卡將在DAT數(shù)據(jù)線上指示錯(cuò)誤。傳輸?shù)臄?shù)據(jù)將被拋棄,而且后續(xù)傳輸?shù)臄?shù)據(jù)塊(在多數(shù)據(jù)塊寫(xiě)模式)也都會(huì)被忽略。多數(shù)據(jù)塊寫(xiě)命令比連續(xù)的單數(shù)據(jù)塊寫(xiě)命令速度快。不允許部分塊寫(xiě)(小于512B)。當(dāng)主機(jī)試圖在寫(xiě)
29、保護(hù)區(qū)域?qū)憯?shù)據(jù)時(shí)寫(xiě)操作將中止。在這種情況下,卡在狀態(tài)寄存器設(shè)置WP_VIOLATION位,并忽略所有后續(xù)數(shù)據(jù)傳輸,并在Receive-data狀態(tài)下等待停止命令。對(duì)CID和CSD寄存器進(jìn)行編程操作不需要實(shí)現(xiàn)設(shè)置塊長(zhǎng)度,傳輸?shù)臄?shù)據(jù)也是CRC保護(hù)的。如果CSD或CID寄存器一部分存儲(chǔ)于ROM中,那么不可改變部分必須和接收緩沖中的相應(yīng)部分內(nèi)容保持一致。如果匹配失敗,卡將報(bào)告一個(gè)錯(cuò)誤,而且不改變?nèi)魏渭拇嫫鲀?nèi)容。接收到一個(gè)數(shù)據(jù)塊并完成CRC校驗(yàn)后,卡將開(kāi)始寫(xiě),如果寫(xiě)緩沖滿而且不能從一個(gè)新的WRITE_BLOCK命令接收新數(shù)據(jù)時(shí), DAT0線保持為低電平。任何時(shí)候主機(jī)都可以通過(guò)SEND_STATUS(CM
30、D13)命令獲取卡的狀態(tài)。狀態(tài)位READY_FOR_DATA指示卡是否可以接收新數(shù)據(jù)或?qū)懖僮鬟€在進(jìn)行中。主機(jī)通過(guò)CMD7(選中另一個(gè)卡)不選中卡,這個(gè)操作可以把卡的狀態(tài)編程Disconnect并釋放DAT線而不中斷寫(xiě)操作。當(dāng)不選中卡時(shí),如果編程還在進(jìn)行而且寫(xiě)緩沖不可用時(shí),將通過(guò)下拉DAT為低電平來(lái)重新激活忙信號(hào)。實(shí)際上,主機(jī)通過(guò)interleaving可以實(shí)現(xiàn)多個(gè)卡同時(shí)寫(xiě)操作,interleaving過(guò)程可以通過(guò)在卡忙時(shí)訪問(wèn)其他卡實(shí)現(xiàn)。預(yù)擦除設(shè)置優(yōu)先于多數(shù)據(jù)塊寫(xiě)操作設(shè)置多個(gè)寫(xiě)數(shù)據(jù)塊的預(yù)擦除(ACMD23)可以使得接下來(lái)的多個(gè)數(shù)據(jù)塊寫(xiě)操作比沒(méi)有預(yù)先執(zhí)行ACMD23的相同操作更快。主機(jī)可以通過(guò)該命
31、令設(shè)置多少個(gè)數(shù)據(jù)塊將在接下來(lái)的寫(xiě)操作中發(fā)送。如果在所有數(shù)據(jù)塊發(fā)送給卡時(shí)中止了寫(xiě)操作(使用停止傳輸命令),殘余寫(xiě)數(shù)據(jù)塊的內(nèi)容(指要寫(xiě)入新內(nèi)容的數(shù)據(jù)塊?)將變得不確定(可能已擦除或還是原來(lái)的數(shù)據(jù))。如果主機(jī)發(fā)送了超過(guò)ACMD23中定義的數(shù)據(jù)塊數(shù)目的數(shù)據(jù),卡將逐個(gè)擦除數(shù)據(jù)塊(在收到新數(shù)據(jù)時(shí))。多數(shù)據(jù)塊寫(xiě)操作完成后值將重新設(shè)置為默認(rèn)值1。建議在CMD25命令前使用該命令以加速寫(xiě)操作。如果需要預(yù)擦除主機(jī)在寫(xiě)命令前發(fā)送ACMD23。如果不發(fā)送ACMD23命令,設(shè)置的預(yù)擦除數(shù)將在其他指令執(zhí)行時(shí)自動(dòng)清除。發(fā)送寫(xiě)數(shù)據(jù)塊數(shù)目系統(tǒng)使用管道機(jī)制進(jìn)行數(shù)據(jù)緩沖管理,有時(shí)候在多數(shù)據(jù)塊寫(xiě)操作過(guò)程中發(fā)生錯(cuò)誤,使得無(wú)法確定哪一個(gè)
32、數(shù)據(jù)塊是最后成功寫(xiě)入的數(shù)據(jù)塊??梢园颜?xiě)入的數(shù)據(jù)塊數(shù)(the number of well-written blocks)作為對(duì)命令A(yù)CMD22的響應(yīng)。擦除同時(shí)擦除多個(gè)寫(xiě)數(shù)據(jù)塊可以提高數(shù)據(jù)吞吐量。通過(guò)ERASE_WR_BLK_START(CMD32)和ERASE_WR_BLK_END(CMD33)實(shí)現(xiàn)寫(xiě)數(shù)據(jù)塊的識(shí)別。主機(jī)必須嚴(yán)格按照下列的命令操作順序:ERASE_WR_BLK_START,RASE_WR_BLK_END,and ERASE (CMD38)。如果不按順序接收到擦除指令(CMD38)或地址設(shè)置指令(CMD32,33),卡將在狀態(tài)寄存器中設(shè)置ERASE_SEQ_ERROR位,并重
33、置整個(gè)順序(sequence)。如果接收到一個(gè)不順序的命令(除了SEND_STATUS),卡將在狀態(tài)寄存器設(shè)置ERASE_RESET狀態(tài)位,重置擦除順序和執(zhí)行最后的命令。如果擦除范圍包括寫(xiě)保護(hù)扇區(qū),將不被擦除,擦除命令只擦除無(wú)保護(hù)的扇區(qū)。狀態(tài)寄存器的WP_ERASE_SKIP位將設(shè)置。地址設(shè)置命令中的地址是以字節(jié)為單位的塊寫(xiě)地址??▽⒑雎运行∮赪RITE_BLK_LEN(CSD)LSB(最低有效位)。如上所述的塊寫(xiě)操作,卡通過(guò)保持DAT0為低電平指示擦除操作正在進(jìn)行中。實(shí)際的擦除操作時(shí)間可能會(huì)很長(zhǎng),主機(jī)可以通過(guò)CMD7不選中卡或執(zhí)行卡斷開(kāi)操作。卡上擦除操作后的數(shù)據(jù)為“0”或“1”,由卡制造商
34、確定。SCR寄存器的DATA_STAT_AFTER_ERASE(bit55)定義了是“0”或“1”。4.4 寫(xiě)保護(hù)管理寫(xiě)保護(hù)方法如下:l 機(jī)械寫(xiě)保護(hù)開(kāi)關(guān)(由主機(jī)負(fù)責(zé))l 卡內(nèi)部寫(xiě)保護(hù)(由卡負(fù)責(zé))l 密碼保護(hù)鎖操作4.4.1 機(jī)械寫(xiě)保護(hù)開(kāi)關(guān)4.4.2 卡內(nèi)部寫(xiě)保護(hù)4.4.3 密碼保護(hù)鎖操作5 時(shí)鐘控制SD卡主機(jī)可以使用SD卡總線時(shí)鐘信號(hào)設(shè)置卡進(jìn)入節(jié)能模式或控制總線上的數(shù)據(jù)流。主機(jī)可以降低時(shí)鐘頻率或直接關(guān)閉。SD卡主機(jī)必須遵循下列約束:l 總線頻率可以在任何時(shí)候改變(滿足最大和最小值的約束)。l ACMD41(SD_APP_OP_COND)是一個(gè)例外。發(fā)送ACMD41命令后,主機(jī)將執(zhí)行下面步驟1和
35、步驟2直到卡進(jìn)入就緒狀態(tài):1) 持續(xù)發(fā)送100KHZ-400KHZ之間的時(shí)鐘頻率。2) 如果主機(jī)要停止時(shí)鐘,通過(guò)ACMD41命令以小于50ms的間隔設(shè)置busy位。6 CRC7 錯(cuò)誤條件7.1 CRC和非法命令8 命令8.1 卡類型共有四類用來(lái)控制SD卡的命令:l 廣播命令(bc),無(wú)響應(yīng)廣播命令只有在所有CMD線一起連接到主機(jī)時(shí)才能使用。如果分開(kāi)連接,那么每個(gè)卡將單獨(dú)接收命令。l 帶響應(yīng)的廣播命令(bcr)所有卡同時(shí)響應(yīng)。因?yàn)镾D卡沒(méi)有開(kāi)漏模式,這個(gè)命令只有在所有的CMD線分開(kāi)時(shí)采用使用。該命令將被每個(gè)卡分別接收和響應(yīng)。(OPEN DRAIN輸出只能做輸出口,當(dāng)外部無(wú)上拉電阻時(shí),該口為高阻狀
36、態(tài)。只有外部有上拉電阻時(shí),才有可能輸出高或低的電平。)l 尋址(點(diǎn)對(duì)點(diǎn))命令(ac)DAT上沒(méi)有數(shù)據(jù)傳輸。l 尋址(點(diǎn)對(duì)點(diǎn))數(shù)據(jù)傳輸命令(adtc)DAT上傳輸數(shù)據(jù)。所有的命令和響應(yīng)通過(guò)CMD線傳輸。8.2 命令格式命令長(zhǎng)度48位,1.92us25MHZ0 1bit 5.bit 0bit 31.bit 0bit 6.bit 01起始位host命令參數(shù)CRC7end bit7-bit CRC 計(jì)算: G(x) = x7 + x3 + 1M(x) = (start bit)*x39 + (host bit)*x38 +.+ (last bit before CRC)*x0CRC6.0 = 余數(shù)(M
37、(x)*x7)/G(x)8.3 命令分類SD卡命令集分為幾個(gè)類,每個(gè)類支持一個(gè)卡功能集合操作。0123456789-11支持命令基本保留讀塊保留寫(xiě)塊擦除寫(xiě)保護(hù)鎖應(yīng)用保留CMD0+CMD2+CMD3+CMD4+CMD7+CMD9+CMD10+CMD12+CMD13+CMD15+CMD16+CMD17+CMD18+CMD24+CMD25+CMD27+CMD28+CMD29+CMD30+CMD32+CMD33+CMD38+CMD42+CMD55+CMD56+ACMD6+ACMD13+ACMD22+ACMD23+ACMD41+ACMD42+ACMD51+8.4 詳細(xì)命令描述*所有無(wú)用位必須填入,但是值
38、irrelevant表4-3 基本命令(類0和類1)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD0bc31:0無(wú)用GO_IDLE_STATE重置所有卡到Idle狀態(tài)CMD1保留CMD2bcr31:0無(wú)用R2ALL_SEND_CID要求所有卡發(fā)送CID號(hào)CMD3Bcr31:0無(wú)用R6SEND_RELATIVE_ADDR要求所有卡發(fā)布一個(gè)新的相對(duì)地址RCACMD4不支持CMD5保留CMD6保留CMD7ac31:16RCA15:0無(wú)用R1(只來(lái)自選中的卡)選中/不選中卡Command toggles a card between the Stand-by and Transfer states or betw
39、een the Programming and Disconnect state. In both cases the card is selected by its own relative address and deselected by any other address; address 0 deselects all. When the RCA equals 0, the host may do one of the following:use other RCA number to perform card deselectionOrre-send CMD3 to change
40、its RCA number to other then 0 and then use CMD7 with RCA=0 for card de-selection.CMD8保留CMD9ac31:16 RCA15:0無(wú)用R2SEND_CSD尋址卡并讓其發(fā)送卡定義數(shù)據(jù)CSDCMD10ac31:16 RCA15:0無(wú)用R2SEND_CID尋址卡并讓其發(fā)送卡識(shí)別號(hào)CIDCMD11adtc31:0數(shù)據(jù)地址R1READ_DAT_UNTIL_STOP從卡讀取數(shù)據(jù)流,從給定地址開(kāi)始,知道停止傳輸命令結(jié)束CMD12ac31:0無(wú)用R1bSTOP中止多個(gè)塊的讀/寫(xiě)操作CMD13ac31:16 RCA15:0無(wú)用R
41、1SEND_STATUS尋址卡并發(fā)送卡狀態(tài)寄存器CMD14保留CMD15ac31:16 RCA15:0無(wú)用_GO_INACTIVE_STATE設(shè)置卡到inactive狀態(tài)表4-4 塊讀操作命令(類2)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD16ac31:0塊長(zhǎng)度R1SET_BLOCKLEN為接下來(lái)的塊操作指令設(shè)置塊長(zhǎng)度CMD17adtc31:0數(shù)據(jù)地址R1READ_SINGLE_BLOCK讀取一個(gè)塊CMD18adtc31:0數(shù)據(jù)地址R1READ_MULTIPLE_BLOCK連續(xù)讀取多個(gè)塊,直到停止命令CMD19-23保留表4-5 塊寫(xiě)操作命令(類4)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD24adtc31
42、:0 數(shù)據(jù)地址R1WRITE_BLOCK寫(xiě)一個(gè)長(zhǎng)度由SET_BLOCKLEN指定的塊CMD25adtc31:0數(shù)據(jù)地址R1WRITE_ MULTIPLE _BLOCK連續(xù)寫(xiě)多個(gè)塊直到STOP_TRANSMISSION命令CMD26不支持CMD27adtc31:0無(wú)用R1PROGRAM_CSD編輯CSD位表4-6 寫(xiě)保護(hù)(類6)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD28ac31:0 數(shù)據(jù)地址R1bSET_WRITE_PROT設(shè)置地址組保護(hù)位。寫(xiě)保護(hù)由卡配置數(shù)據(jù)的WP_GRP_SIZE指定CMD29ac31:0數(shù)據(jù)地址R1bCLR_WRITE_PROT清除保護(hù)位CMD30adtc31:0寫(xiě)保護(hù)數(shù)據(jù)地址
43、R1SEND_WRITE_PROT要求卡發(fā)送寫(xiě)保護(hù)位狀態(tài)CMD31保留表4-7 擦除命令(類5)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD32ac31:0 數(shù)據(jù)地址R1ERASE_WR_BLK_START設(shè)置要擦除的第一個(gè)寫(xiě)數(shù)據(jù)塊地址CMD32ac31:0 數(shù)據(jù)地址R1ERASE_WR_BLK_END設(shè)置要擦除的最后一個(gè)寫(xiě)數(shù)據(jù)塊地址CMD34CMD37保留CMD38ac31:0無(wú)用R1bERASE擦除所有選中的寫(xiě)數(shù)據(jù)塊CMD39CMD41保留表4-7 擦除命令(類5)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD32ac31:0 數(shù)據(jù)地址R1ERASE_WR_BLK_START設(shè)置要擦除的第一個(gè)寫(xiě)數(shù)據(jù)塊地址CMD
44、32ac31:0 數(shù)據(jù)地址R1ERASE_WR_BLK_END設(shè)置要擦除的最后一個(gè)寫(xiě)數(shù)據(jù)塊地址CMD34CMD37保留CMD38ac31:0無(wú)用R1bERASE擦除所有選中的寫(xiě)數(shù)據(jù)塊CMD39CMD41保留表4-8 卡鎖命令(類7)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD42.CMD54SDA可選命令表4-9 應(yīng)用相關(guān)(Application Specific)命令(類8)命令索引類型參數(shù)響應(yīng)縮寫(xiě)描述CMD55ac31:16 RCA15:0填充位R1APP_CMD告訴卡接下來(lái)的命令是應(yīng)用相關(guān)命令,而非標(biāo)準(zhǔn)命令。CMD56adtc31:1 填充位0:RD/WR,1讀,0寫(xiě)R1GEN_CMD應(yīng)用相關(guān)(通
45、用目的)的數(shù)據(jù)塊讀寫(xiě)命令CMD57CMD59保留CMD60CMD63廠商保留*命令相關(guān)命令,可能指SD卡專用命令所有應(yīng)用相關(guān)命令之前必須先執(zhí)行APP_CMD(CMD55)。表4-10 SD卡使用/保留的應(yīng)用相關(guān)命令A(yù)CMD索引類型參數(shù)響應(yīng)縮寫(xiě)描述ACMD6ac31:2 填充位1:0總線寬度R1SET_BUS_WIDTH00:1bit10:4bitACMD13adtc31:0 填充位R1SD_STATUS設(shè)置SD卡狀態(tài)ACMD17保留ACMD18保留作為SD安全應(yīng)用ACMD19ACMD21保留ACMD22adtc31:0填充位R1SEND_NUM_WR_BLOCKS發(fā)送寫(xiě)數(shù)據(jù)塊的數(shù)目。響應(yīng)為32
46、位+CRCACMD23ac31:23填充位22:0數(shù)據(jù)塊數(shù)目R1SET_WR_BLK_ERASE_COUNT設(shè)置寫(xiě)前預(yù)擦除的數(shù)據(jù)塊數(shù)目(用來(lái)加速多數(shù)據(jù)塊寫(xiě)操作)?!?”=默認(rèn)(一個(gè)塊)(1) ACMD24保留ACMD25保留作為SD安全應(yīng)用ACMD26保留作為SD安全應(yīng)用ACMD38保留作為SD安全應(yīng)用ACMD39ACMD40保留ACMD41bcr31:0OCR without busyR3SD_APP_OP_COND要求訪問(wèn)的卡發(fā)送它的操作條件寄存器(OCR)內(nèi)容ACMD42ac31:1填充位0set_cdR1SET_CLR_CARD_DETECT連接1/斷開(kāi)0卡上CD/DAT3(pin 1
47、的50K歐姆上拉電阻。上拉電阻可用來(lái)檢測(cè)卡ACMD43ACMD49保留作為SD安全應(yīng)用ACMD51adtc31:0填充位R1SEND_SCR讀取SD配置寄存器SCR(1)不管是否使用ACMD23,在多數(shù)據(jù)塊寫(xiě)操作中都需要STOP_TRAN(CMD12)命令9 卡狀態(tài)遷移表10 響應(yīng)所有響應(yīng)通過(guò)CMD線傳輸,響應(yīng)以MSB開(kāi)始,不同類型的響應(yīng)長(zhǎng)度根據(jù)類型不同而不同。響應(yīng)以起始位開(kāi)始(通常為“0”),接著這是傳輸方向的位(卡為0)。除了R3外其他響應(yīng)都有CRC。每個(gè)響應(yīng)都以結(jié)束位(通常為“1”)結(jié)束。共有四類響應(yīng),格式分別為:R1(標(biāo)準(zhǔn)響應(yīng)):長(zhǎng)度48位Bits45:40指示被響應(yīng)的命令索引號(hào)。如果
48、有到卡的數(shù)據(jù)傳輸,每個(gè)數(shù)據(jù)塊傳輸后數(shù)據(jù)線上都會(huì)出現(xiàn)忙信號(hào)。主機(jī)在數(shù)據(jù)塊傳輸后檢測(cè)忙信號(hào)。表4-12 響應(yīng)R1起始位474645:4039:87:10Width1163271值00xxx1描述起始位傳輸位命令索引卡狀態(tài)CRC7結(jié)束位Rb1和 R1相同,帶有一個(gè)可選的忙信號(hào)傳輸。根據(jù)接收到命令前的狀態(tài)和接收到的命令可能變成忙。主機(jī)可以在響應(yīng)時(shí)檢測(cè)忙信號(hào)。R2(CID,CSD):響應(yīng)長(zhǎng)度為136位CID寄存器內(nèi)容作為CMD2和CMD10的響應(yīng)發(fā)送。CSD寄存器內(nèi)容作為CMD9的響應(yīng)發(fā)送。只傳輸CID和CSD的1271位,寄存器的0位被響應(yīng)的結(jié)束位取代。表4-13 響應(yīng)R1起始位135134133:1
49、28127:10Width1161271值00111111x1描述起始位傳輸位保留CID或CSD,包括內(nèi)容CRC7結(jié)束位R1(OCR寄存器):長(zhǎng)度48位OCR寄存器作為ACMD41的響應(yīng)發(fā)送。四、 在S3C2410中的使用1 基本操作1.1 SDI操作根據(jù)傳輸頻率設(shè)置SDIPRE寄存器,改變頻率可以調(diào)整波特率。操作步驟:1) 設(shè)置SDICON,設(shè)置時(shí)鐘和中斷2) 設(shè)置SDIPRE3) 等待74SDCLK,初始化卡1.2 CMD Path Programming1) 寫(xiě)命令參數(shù)(32-bit)到SDICARG寄存器2) 通過(guò)設(shè)置SDICCON8確定命令類型和起始命令3) 當(dāng)SDICSTA的特殊標(biāo)
50、記設(shè)置時(shí),確定SDI命令操作的結(jié)束方式:a) 如果是無(wú)響應(yīng)(no-response)命令,標(biāo)記是SDICSTA11b) 如果是有響應(yīng)(with-response)命令,標(biāo)記是SDICSTA 94) 清除SDICSTA寄存器相應(yīng)標(biāo)記1.3 DAT Path Programming1) 在SDIDTIMER寄存器中設(shè)置超時(shí)2) 在SDIBSIZE中設(shè)置塊大小,通常為0x2003) 在SDIDCON寄存器中設(shè)置塊模式(mode of block)、總線寬度(bus width)、DMA等以及開(kāi)始數(shù)據(jù)傳送4) 通過(guò)檢查SDIFSTA判斷Tx FIFO的可用性(available,half or empty),當(dāng)可用時(shí)(available)寫(xiě)Tx-data到SDIDAT寄存器5) 通過(guò)檢查SDIFSTA判斷Rx FIFO的可
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《黑神話:悟空》2025高中地理練習(xí)題含答案
- 餐飲戰(zhàn)略合作協(xié)議書(shū)合同模板
- 采購(gòu)管材管件合同范文
- 保證合同協(xié)議書(shū)范本
- 智慧養(yǎng)老方案課件
- 山東省煙臺(tái)市蓬萊區(qū)(五四制)2024-2025學(xué)年八年級(jí)上學(xué)期期中考試英語(yǔ)試卷(含解析)
- 河北省邯鄲市臨漳縣2024-2025學(xué)年七年級(jí)上學(xué)期11月期中生物學(xué)試卷(含答案)
- 《紡織纖維鑒別試驗(yàn)方法 第3部分:顯微鏡法》
- 高原常見(jiàn)病防治課件
- 肺部解剖及肺循環(huán)相關(guān)病變課件
- 第五講新聞評(píng)論的結(jié)構(gòu)與節(jié)奏
- 護(hù)士長(zhǎng)競(jìng)聘演講ppt
- 從PK-PD看抗菌藥物的合理應(yīng)用
- 加熱爐施工方案
- 進(jìn)入重慶市特種設(shè)備信息化管理平臺(tái)
- 意象對(duì)話放松引導(dǎo)詞2[生活經(jīng)驗(yàn)]
- 高速公路安全生產(chǎn)標(biāo)準(zhǔn)化指南1
- 學(xué)科融合課題研究實(shí)施方案
- 生物質(zhì)壓塊機(jī)使用說(shuō)明書(shū)
- 非織造布學(xué)——針刺講解
- 臨床藥理學(xué)個(gè)體化藥物治療與精準(zhǔn)醫(yī)學(xué)
評(píng)論
0/150
提交評(píng)論