專利名稱:存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種存儲(chǔ)卡數(shù)據(jù)傳輸方法,尤其涉及一種存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法。
背景技術(shù):
普通的存儲(chǔ)卡如MMC/SD卡在與讀卡設(shè)備間傳輸大量數(shù)據(jù)時(shí),讀卡設(shè)備和存儲(chǔ)卡之間可以通過(guò)多塊數(shù)據(jù)傳輸操作來(lái)完成,該數(shù)據(jù)傳輸操作包括多塊數(shù)據(jù)讀和多塊數(shù)據(jù)寫(xiě),其過(guò)程狀態(tài)轉(zhuǎn)換圖如圖1所示。如果讀卡設(shè)備想要和存儲(chǔ)卡完成大量的數(shù)據(jù)傳輸,可使存儲(chǔ)卡進(jìn)入到旁置狀態(tài)110,當(dāng)存儲(chǔ)卡進(jìn)入旁置狀態(tài)110時(shí)讀卡設(shè)備通過(guò)向存儲(chǔ)卡發(fā)出CMD7命令120使存儲(chǔ)卡進(jìn)入傳送狀態(tài)130,在傳送狀態(tài)130中讀卡設(shè)備可以通過(guò)CMD16命令140設(shè)置數(shù)據(jù)塊長(zhǎng)度,通過(guò)CMD23命令設(shè)置多塊數(shù)據(jù)傳輸?shù)臄?shù)量,然后分別通過(guò)CMD18命令150和CMD25命令160完成多塊數(shù)據(jù)讀寫(xiě)操作。從上面的過(guò)程可以看出一旦通過(guò)CMD16命令140設(shè)定了數(shù)據(jù)塊長(zhǎng)度,在后續(xù)的多塊傳輸過(guò)程中就只能以該數(shù)據(jù)長(zhǎng)度來(lái)完成后續(xù)的數(shù)據(jù)傳輸。也就是說(shuō),普通的存儲(chǔ)卡與讀卡設(shè)備間傳輸大量數(shù)據(jù)只支持定長(zhǎng)的多塊數(shù)據(jù)傳輸。但是在具體的應(yīng)用中(如網(wǎng)絡(luò)應(yīng)用),根據(jù)業(yè)務(wù)和應(yīng)用的不同,在數(shù)據(jù)傳輸?shù)倪^(guò)程中數(shù)據(jù)包的包長(zhǎng)可能會(huì)有很大的變化,從應(yīng)用層向數(shù)據(jù)鏈路層逐級(jí)將這些數(shù)據(jù)包寫(xiě)入存儲(chǔ)卡中或從存儲(chǔ)卡中讀出需要事先將這些數(shù)據(jù)包拆分成等長(zhǎng)的數(shù)據(jù)包,這樣要讀卡設(shè)備將這些數(shù)據(jù)拆分成等長(zhǎng)的數(shù)據(jù)包需要完成大量的冗余操作,所以在對(duì)這些數(shù)據(jù)進(jìn)行拆分和組裝的過(guò)程中會(huì)降低讀卡設(shè)備對(duì)數(shù)據(jù)的處理速度,同時(shí)操作也不是很靈活。
舉例說(shuō)明如下,如果要完成兩個(gè)數(shù)據(jù)包傳輸,其中一個(gè)是64Byte長(zhǎng)的小包,另一個(gè)是1514Byte長(zhǎng)的大包,要將這兩個(gè)數(shù)據(jù)包傳輸?shù)酱鎯?chǔ)卡中可按如下步驟進(jìn)行1)可使存儲(chǔ)卡進(jìn)入到旁置狀態(tài)110;2)在傳送狀態(tài)130中讀卡設(shè)備可以通過(guò)CMD16命令140設(shè)置數(shù)據(jù)塊長(zhǎng)度為512Byte;3)通過(guò)CMD23命令設(shè)置多塊數(shù)據(jù)傳輸?shù)臄?shù)量為4;4)然后通過(guò)CMD25命令160完成多塊數(shù)據(jù)寫(xiě)操作。如果將步驟2)中數(shù)據(jù)塊長(zhǎng)度定為1514Byte長(zhǎng)的話,雖然可以通過(guò)兩次塊傳輸來(lái)完成數(shù)據(jù)的傳送,但是每個(gè)數(shù)據(jù)塊的長(zhǎng)度都是1514Byte長(zhǎng),這樣在整個(gè)數(shù)據(jù)傳輸?shù)倪^(guò)程中浪費(fèi)了(1514-64)*8=11600個(gè)時(shí)鐘周期。從上面的過(guò)程中我們可以看出,讀卡設(shè)備要想將一個(gè)64Byte長(zhǎng)的小包和一個(gè)1514Byte長(zhǎng)的大包傳給存儲(chǔ)卡,需要事先將這兩個(gè)數(shù)據(jù)包拆分成4個(gè)512Byte的數(shù)據(jù)塊,然后才能進(jìn)行傳輸;同理,再回傳的過(guò)程中也要經(jīng)歷同樣的過(guò)程,所以在對(duì)這些數(shù)據(jù)進(jìn)行拆分和組裝的過(guò)程中會(huì)降低對(duì)數(shù)據(jù)的處理速度;如果將塊長(zhǎng)度設(shè)置得較大又會(huì)因?yàn)槔速M(fèi)了傳輸?shù)臅r(shí)鐘周期而導(dǎo)致傳輸?shù)乃俣却蟠笙陆怠?br>
發(fā)明內(nèi)容
因此本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,該方法對(duì)數(shù)據(jù)的傳輸操作既靈活方便又提高了傳輸?shù)男省?br>
本發(fā)明具體是這樣實(shí)現(xiàn)的一種存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,該方法包括如下步驟讀卡設(shè)備使存儲(chǔ)卡進(jìn)入到旁置狀態(tài);當(dāng)存儲(chǔ)卡進(jìn)入旁置狀態(tài)后讀卡設(shè)備通過(guò)向存儲(chǔ)卡發(fā)送命令使存儲(chǔ)卡進(jìn)入傳送狀態(tài);在傳送狀態(tài)中讀卡設(shè)備通過(guò)命令設(shè)置多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量;其特征在于,該方法還包括如下步驟在存儲(chǔ)卡傳輸命令列表中添加可變長(zhǎng)多塊數(shù)據(jù)讀命令和可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)命令,當(dāng)多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量設(shè)置完畢后,通過(guò)上述添加的命令完成存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)的讀寫(xiě)。
按上述方案,可變長(zhǎng)多塊數(shù)據(jù)讀命令和可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)命令的命令格式如下表
按上述方案,在存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作過(guò)程中,在讀數(shù)據(jù)部分前面加入數(shù)據(jù)長(zhǎng)度字段,這樣,每塊讀數(shù)據(jù)分成數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)內(nèi)容兩個(gè)部分,其中數(shù)據(jù)長(zhǎng)度表示該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容長(zhǎng)度,數(shù)據(jù)內(nèi)容表示該數(shù)據(jù)塊實(shí)際傳輸?shù)臄?shù)據(jù)內(nèi)容。
按上述方案,在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit;在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit;在8線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為4bit;其中,1、4、8線傳輸模式是指在傳輸數(shù)據(jù)時(shí)所用的不同的總線寬度。
按上述方案,如果讀出的數(shù)據(jù)塊個(gè)數(shù)達(dá)到了設(shè)置的多塊數(shù)據(jù)的塊數(shù)量或讀卡設(shè)備發(fā)出停止命令,存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作結(jié)束。
按上述方案,在存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作過(guò)程中,在寫(xiě)數(shù)據(jù)部分前面加入數(shù)據(jù)長(zhǎng)度字段,這樣,每塊寫(xiě)數(shù)據(jù)分成數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)內(nèi)容和循環(huán)冗余碼三個(gè)部分,其中數(shù)據(jù)長(zhǎng)度表示該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容長(zhǎng)度,數(shù)據(jù)內(nèi)容表示該數(shù)據(jù)塊實(shí)際傳輸?shù)臄?shù)據(jù)內(nèi)容,循環(huán)冗余碼部分表示對(duì)該塊數(shù)據(jù)進(jìn)行循環(huán)冗余碼校驗(yàn)的值。
按上述方案,在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit;在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit;在8線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為4bit;其中,1、4、8線傳輸模式是指在傳輸數(shù)據(jù)時(shí)所用的不同的總線寬度。
按上述方案,存儲(chǔ)卡通過(guò)循環(huán)冗余碼校驗(yàn)向讀卡設(shè)備確認(rèn)數(shù)據(jù)傳輸?shù)恼_性,存儲(chǔ)卡將返回循環(huán)冗余碼校驗(yàn)結(jié)果作為每條數(shù)據(jù)線上的循環(huán)冗余碼狀態(tài)令牌,如果發(fā)生傳輸錯(cuò)誤,存儲(chǔ)卡將返回一個(gè)負(fù)的循環(huán)冗余碼狀態(tài)‘101’;如果沒(méi)有傳輸錯(cuò)誤,存儲(chǔ)卡將返回一個(gè)正的循環(huán)冗余碼狀態(tài)‘010’。
按上述方案,如果某個(gè)數(shù)據(jù)塊的循環(huán)冗余碼校驗(yàn)錯(cuò)誤,存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作結(jié)束。
按上述方案,當(dāng)某個(gè)數(shù)據(jù)塊的循環(huán)冗余碼校驗(yàn)完畢后,如果寫(xiě)入的數(shù)據(jù)塊個(gè)數(shù)達(dá)到了設(shè)置的多塊數(shù)據(jù)的塊數(shù)量或讀卡設(shè)備發(fā)出停止命令,存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作結(jié)束。
由于采用了上述處理步驟,本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)普通的存儲(chǔ)卡與讀卡設(shè)備間傳輸大量數(shù)據(jù)只支持定長(zhǎng)的多塊數(shù)據(jù)傳輸,針對(duì)這種實(shí)際情況,本發(fā)明在多塊數(shù)據(jù)傳輸前不進(jìn)行數(shù)據(jù)塊長(zhǎng)度的設(shè)置,而是在每塊數(shù)據(jù)前面的固定字段中加入該數(shù)據(jù)塊的長(zhǎng)度信息,實(shí)現(xiàn)了可變長(zhǎng)多塊數(shù)據(jù)傳輸,這樣對(duì)數(shù)據(jù)的傳輸操作既靈活方便又提高了傳輸?shù)男省?br>
對(duì)比背景技術(shù)中的例子舉例說(shuō)明如下,如果要完成兩個(gè)數(shù)據(jù)包傳輸,其中一個(gè)是64Byte長(zhǎng)的小包,另一個(gè)是1514Byte長(zhǎng)的大包,根據(jù)本發(fā)明,要將這兩個(gè)數(shù)據(jù)包傳輸?shù)酱鎯?chǔ)卡中可按如下步驟進(jìn)行1)可使存儲(chǔ)卡進(jìn)入到旁置狀態(tài);2)然后通過(guò)CMD22命令完成可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作。因?yàn)榭勺冮L(zhǎng)多塊數(shù)據(jù)寫(xiě)操作的塊長(zhǎng)度在數(shù)據(jù)塊的開(kāi)始部分且是可變的,所以我們選擇第一個(gè)數(shù)據(jù)塊長(zhǎng)度為64Byte,第二數(shù)據(jù)塊長(zhǎng)度為1514Byte,并將這兩個(gè)塊長(zhǎng)度分別在每塊的數(shù)據(jù)字段前進(jìn)行標(biāo)識(shí),這樣對(duì)數(shù)據(jù)的傳輸操作變得靈活方便,同時(shí)也提高了傳輸?shù)男省?br>
圖1為普通MMC存儲(chǔ)卡與讀卡設(shè)備數(shù)據(jù)傳輸過(guò)程狀態(tài)轉(zhuǎn)換圖;圖2為本發(fā)明的存儲(chǔ)卡與讀卡設(shè)備數(shù)據(jù)傳輸過(guò)程狀態(tài)轉(zhuǎn)換圖;圖3是本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)讀操作時(shí)序圖;圖4是普通MMC存儲(chǔ)卡的多塊數(shù)據(jù)讀操作時(shí)序圖;圖5是本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)讀操作停止時(shí)序圖;圖6是本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作時(shí)序圖;圖7是普通MMC存儲(chǔ)卡的多塊數(shù)據(jù)寫(xiě)操作時(shí)序圖;圖8是本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作停止時(shí)序圖;圖9是本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)讀操作流程圖;圖10是本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作流程圖。
具體實(shí)施例方式
以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施過(guò)程作進(jìn)一步的說(shuō)明本發(fā)明的設(shè)計(jì)構(gòu)思本發(fā)明針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,為存儲(chǔ)卡與讀卡設(shè)備間傳輸大量數(shù)據(jù),增加可變長(zhǎng)的多塊數(shù)據(jù)傳輸方式,即在多塊數(shù)據(jù)傳輸前不進(jìn)行數(shù)據(jù)塊長(zhǎng)度的設(shè)置,而是在每塊數(shù)據(jù)前面的固定字段中加入該數(shù)據(jù)塊的長(zhǎng)度信息,表明該數(shù)據(jù)塊的數(shù)據(jù)長(zhǎng)度,以實(shí)現(xiàn)可變長(zhǎng)多塊數(shù)據(jù)傳輸。
為了實(shí)現(xiàn)上述設(shè)計(jì)構(gòu)思,本發(fā)明在技術(shù)上作了一系列的改進(jìn),下面以MMC存儲(chǔ)卡為一個(gè)具體的實(shí)施例(但不限于MMC卡的具體命令、命令格式、響應(yīng)、響應(yīng)格式、狀態(tài)指示和寄存器標(biāo)志或MMC卡本身,也可以是MMC其它未用到的或已用到的采取復(fù)用方式的命令、命令格式、響應(yīng)、響應(yīng)格式、狀態(tài)指示和寄存器標(biāo)志或SD卡來(lái)實(shí)現(xiàn))對(duì)本發(fā)明的技術(shù)要點(diǎn)進(jìn)行描述1.在存儲(chǔ)卡傳輸命令列表中添加CMD21(可變長(zhǎng)多塊數(shù)據(jù)讀)和CMD22(可變長(zhǎng)多塊數(shù)據(jù)寫(xiě))命令,具體的命令格式如表1
表12.存儲(chǔ)卡與讀卡設(shè)備數(shù)據(jù)傳輸過(guò)程狀態(tài)轉(zhuǎn)換如圖2所示,步驟一讀卡設(shè)備使存儲(chǔ)卡進(jìn)入到旁置狀態(tài)230;步驟二讀卡設(shè)備通過(guò)發(fā)送CMD7命令250使存儲(chǔ)卡進(jìn)入傳送狀態(tài)260;步驟三在傳送狀態(tài)260中讀卡設(shè)備可以通過(guò)CMD23命令240來(lái)設(shè)置多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量;步驟四通過(guò)CMD21命令210和CMD22命令220來(lái)完成存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)的讀寫(xiě)。
3.可變長(zhǎng)多塊數(shù)據(jù)讀寫(xiě)過(guò)程時(shí)序如圖3所示為存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作時(shí)序,如圖5所示為存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作停止時(shí)序。從圖中可以看出,可變長(zhǎng)多塊數(shù)據(jù)讀操作時(shí)序是在普通MMC卡的多塊數(shù)據(jù)讀操作時(shí)序(如圖4所示)的基礎(chǔ)上進(jìn)行了改進(jìn),具體過(guò)程是在普通MMC卡的多塊數(shù)據(jù)讀操作時(shí)序的讀數(shù)據(jù)部分410前面加入數(shù)據(jù)長(zhǎng)度310字段,這樣,本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)讀操作時(shí)序的讀數(shù)據(jù)部分分成兩個(gè)部分?jǐn)?shù)據(jù)長(zhǎng)度310和數(shù)據(jù)內(nèi)容320,其中數(shù)據(jù)長(zhǎng)度字段表示該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容長(zhǎng)度,數(shù)據(jù)內(nèi)容表示該數(shù)據(jù)塊實(shí)際傳輸?shù)臄?shù)據(jù)內(nèi)容;在讀數(shù)據(jù)的過(guò)程中,讀卡設(shè)備如果發(fā)送CMD12停止命令510(如圖5所示),之后存儲(chǔ)卡必須停止向讀卡設(shè)備發(fā)送數(shù)據(jù),并且作出響應(yīng)520。
在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit;在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit;在8線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為4bit。其中,1、4、8線傳輸模式是指在傳輸數(shù)據(jù)時(shí)所用的不同的總線寬度。數(shù)據(jù)長(zhǎng)度字段用32bit表示,所以在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit*1;數(shù)據(jù)長(zhǎng)度字段用8bit表示,所以在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit*4;數(shù)據(jù)長(zhǎng)度字段用4bit表示,所以在8線傳輸模式數(shù)據(jù)長(zhǎng)度字段為4bit*8。以下舉例說(shuō)明數(shù)據(jù)總線寬度與本發(fā)明實(shí)現(xiàn)的關(guān)系比如1)讀卡設(shè)備從存儲(chǔ)卡讀64bit長(zhǎng)的數(shù)據(jù)包,其數(shù)據(jù)內(nèi)容為01010101_01010101_01010101_01010101_01010101_01010101_01010101_01010101。
在1線傳輸模式下,其數(shù)據(jù)長(zhǎng)度與數(shù)據(jù)內(nèi)容的關(guān)系如表2
表2在4線傳輸模式下,其數(shù)據(jù)長(zhǎng)度與數(shù)據(jù)內(nèi)容的關(guān)系如表3
表3在8線傳輸模式下,其數(shù)據(jù)長(zhǎng)度與數(shù)據(jù)內(nèi)容的關(guān)系如表4
表4
2)讀卡設(shè)備從存儲(chǔ)卡讀32bit長(zhǎng)的數(shù)據(jù)包,其數(shù)據(jù)內(nèi)容為10101010_10101010_10101010_10101010。
在1線傳輸模式下,其數(shù)據(jù)長(zhǎng)度與數(shù)據(jù)內(nèi)容的關(guān)系如表5
表5在4線傳輸模式下,其數(shù)據(jù)長(zhǎng)度與數(shù)據(jù)內(nèi)容的關(guān)系如表6
表6在8線傳輸模式下,其數(shù)據(jù)長(zhǎng)度與數(shù)據(jù)內(nèi)容的關(guān)系如表7
表7如圖6所示為存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作時(shí)序,如圖8所示為存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作停止時(shí)序。從圖中可以看出,可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作時(shí)序是在普通MMC卡的多塊數(shù)據(jù)寫(xiě)操作時(shí)序(如圖7所示)的基礎(chǔ)上進(jìn)行了改進(jìn),具體過(guò)程是在普通MMC卡的多塊數(shù)據(jù)寫(xiě)操作時(shí)序的寫(xiě)數(shù)據(jù)部分710前面加入數(shù)據(jù)長(zhǎng)度610字段,這樣,本發(fā)明的可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作時(shí)序的寫(xiě)數(shù)據(jù)部分分成三個(gè)部分?jǐn)?shù)據(jù)長(zhǎng)度610、數(shù)據(jù)內(nèi)容620和CRC(Cyclic RedundancyCode,循環(huán)冗余碼)630,其中數(shù)據(jù)長(zhǎng)度表示該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容長(zhǎng)度,數(shù)據(jù)內(nèi)容表示該數(shù)據(jù)塊實(shí)際傳輸?shù)臄?shù)據(jù)內(nèi)容,CRC部分表示對(duì)該塊數(shù)據(jù)進(jìn)行CRC校驗(yàn)的值,存儲(chǔ)卡通過(guò)CRC校驗(yàn)向讀卡設(shè)備確認(rèn)數(shù)據(jù)傳輸?shù)恼_性。數(shù)據(jù)內(nèi)容后緊接著是CRC校驗(yàn)比特,存儲(chǔ)卡將返回CRC校驗(yàn)結(jié)果640作為每條數(shù)據(jù)線上的CRC狀態(tài)令牌。如果發(fā)生傳輸錯(cuò)誤,存儲(chǔ)卡將返回一個(gè)負(fù)的CRC狀態(tài)‘101’;如果沒(méi)有傳輸錯(cuò)誤,存儲(chǔ)卡將返回一個(gè)正的CRC狀態(tài)‘010’;在寫(xiě)數(shù)據(jù)的過(guò)程中,讀卡設(shè)備如果發(fā)送CMD12停止命令810(如圖8所示),之后讀卡設(shè)備必須停止向存儲(chǔ)卡寫(xiě)數(shù)據(jù),且存儲(chǔ)卡要作出響應(yīng)820。
在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit;在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit;在8線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為4bit。其中,1、4、8線傳輸模式是指在傳輸數(shù)據(jù)時(shí)所用的不同的總線寬度。數(shù)據(jù)長(zhǎng)度字段用32bit表示,所以在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit*1;數(shù)據(jù)長(zhǎng)度字段用8bit表示,所以在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit*4;數(shù)據(jù)長(zhǎng)度字段用4bit表示,所以在8線傳輸模式數(shù)據(jù)長(zhǎng)度字段為4bit*8。
以下是完成存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀寫(xiě)操作的詳細(xì)流程1.存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作如圖9所示,步驟一通過(guò)CMD23命令設(shè)置數(shù)據(jù)塊個(gè)數(shù)910;步驟二發(fā)送可變長(zhǎng)多塊數(shù)據(jù)讀CMD21命令920;步驟三按可變長(zhǎng)多塊數(shù)據(jù)讀操作時(shí)序(如圖3)讀取數(shù)據(jù)930;步驟四判斷可變長(zhǎng)多塊數(shù)據(jù)讀操作是否結(jié)束940,其結(jié)束條件為讀出的數(shù)據(jù)塊個(gè)數(shù)達(dá)到了設(shè)置的數(shù)據(jù)塊個(gè)數(shù)或讀卡設(shè)備發(fā)出CMD12停止命令(如圖5),如果操作未結(jié)束返回步驟三,否則結(jié)束后返回。
2.存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作如圖10所示,步驟一通過(guò)CMD23命令設(shè)置數(shù)據(jù)塊個(gè)數(shù)1010;步驟二發(fā)送可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)CMD22命令1020;步驟三按可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作時(shí)序(如圖6)寫(xiě)入數(shù)據(jù)1030;步驟四判斷該數(shù)據(jù)塊的CRC校驗(yàn)是否正確1040,如果正確進(jìn)行步驟五,否則結(jié)束;步驟五判斷可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作是否結(jié)束1050,其結(jié)束條件為寫(xiě)入的數(shù)據(jù)塊個(gè)數(shù)達(dá)到了設(shè)置的數(shù)據(jù)塊個(gè)數(shù)或讀卡設(shè)備發(fā)出CMD12停止命令(如圖8),如果操作未結(jié)束返回步驟三,否則結(jié)束后返回。
注1本發(fā)明時(shí)序圖中用到的時(shí)序值如表8
表8其中,F(xiàn)OP是讀卡設(shè)備用于讀操作的存儲(chǔ)卡時(shí)鐘頻率。下面是一個(gè)計(jì)算的例子TAAC的CSD(特定卡數(shù)據(jù)寄存器,提供了有關(guān)如何存取卡內(nèi)容的信息)值為0×26,等于1.5mSec;NSAC的CSD值為0;主機(jī)頻率FOP為10MHz;則NAC=10×(1.5×10-3×10×106+0)=150,000時(shí)鐘周期。
本發(fā)明時(shí)序圖中的縮寫(xiě)形式如表9
表9注2本發(fā)明為了敘述上的方便引用了《多媒體卡體統(tǒng)規(guī)范4.1版》中相應(yīng)的CMD7、CMD12、CMD16、CMD18、CMD23、CMD25命令,其命令的基本格式如表10所示,其命令的表述如表11所示,其他細(xì)節(jié)請(qǐng)參閱《多媒體卡體統(tǒng)規(guī)范4.1版》。
表10
表1權(quán)利要求
1.一種存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,該方法包括如下步驟讀卡設(shè)備使存儲(chǔ)卡進(jìn)入到旁置狀態(tài);當(dāng)存儲(chǔ)卡進(jìn)入旁置狀態(tài)后讀卡設(shè)備通過(guò)向存儲(chǔ)卡發(fā)送命令使存儲(chǔ)卡進(jìn)入傳送狀態(tài);在傳送狀態(tài)中讀卡設(shè)備通過(guò)命令設(shè)置多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量;其特征在于,該方法還包括如下步驟在存儲(chǔ)卡傳輸命令列表中添加可變長(zhǎng)多塊數(shù)據(jù)讀命令和可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)命令,當(dāng)多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量設(shè)置完畢后,通過(guò)上述添加的命令完成存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)的讀寫(xiě)。
2.如權(quán)利要求1所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,可變長(zhǎng)多塊數(shù)據(jù)讀命令和可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)命令的命令格式如下表
3.如權(quán)利要求1或2所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,在存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作過(guò)程中,在讀數(shù)據(jù)部分前面加入數(shù)據(jù)長(zhǎng)度字段,這樣,每塊讀數(shù)據(jù)分成數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)內(nèi)容兩個(gè)部分,其中數(shù)據(jù)長(zhǎng)度表示該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容長(zhǎng)度,數(shù)據(jù)內(nèi)容表示該數(shù)據(jù)塊實(shí)際傳輸?shù)臄?shù)據(jù)內(nèi)容。
4.如權(quán)利要求3所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit;在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit;在8線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為4bit;其中,1、4、8線傳輸模式是指在傳輸數(shù)據(jù)時(shí)所用的不同的總線寬度。
5.如權(quán)利要求4所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,如果讀出的數(shù)據(jù)塊個(gè)數(shù)達(dá)到了設(shè)置的多塊數(shù)據(jù)的塊數(shù)量或讀卡設(shè)備發(fā)出停止命令,存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)讀操作結(jié)束。
6.如權(quán)利要求1或2所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,在存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作過(guò)程中,在寫(xiě)數(shù)據(jù)部分前面加入數(shù)據(jù)長(zhǎng)度字段,這樣,每塊寫(xiě)數(shù)據(jù)分成數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)內(nèi)容和循環(huán)冗余碼三個(gè)部分,其中數(shù)據(jù)長(zhǎng)度表示該數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容長(zhǎng)度,數(shù)據(jù)內(nèi)容表示該數(shù)據(jù)塊實(shí)際傳輸?shù)臄?shù)據(jù)內(nèi)容,循環(huán)冗余碼部分表示對(duì)該塊數(shù)據(jù)進(jìn)行循環(huán)冗余碼校驗(yàn)的值。
7.如權(quán)利要求6所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,在1線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為32bit;在4線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為8bit;在8線傳輸模式,數(shù)據(jù)長(zhǎng)度字段為4bit;其中,1、4、8線傳輸模式是指在傳輸數(shù)據(jù)時(shí)所用的不同的總線寬度。
8.如權(quán)利要求7所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,存儲(chǔ)卡通過(guò)循環(huán)冗余碼校驗(yàn)向讀卡設(shè)備確認(rèn)數(shù)據(jù)傳輸?shù)恼_性,存儲(chǔ)卡將返回循環(huán)冗余碼校驗(yàn)結(jié)果作為每條數(shù)據(jù)線上的循環(huán)冗余碼狀態(tài)令牌,如果發(fā)生傳輸錯(cuò)誤,存儲(chǔ)卡將返回一個(gè)負(fù)的循環(huán)冗余碼狀態(tài)‘101’;如果沒(méi)有傳輸錯(cuò)誤,存儲(chǔ)卡將返回一個(gè)正的循環(huán)冗余碼狀態(tài)‘010’。
9.如權(quán)利要求7或8所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,如果某個(gè)數(shù)據(jù)塊的循環(huán)冗余碼校驗(yàn)錯(cuò)誤,存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作結(jié)束。
10.如權(quán)利要求9所述的存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,其特征在于,當(dāng)某個(gè)數(shù)據(jù)塊的循環(huán)冗余碼校驗(yàn)完畢后,如果寫(xiě)入的數(shù)據(jù)塊個(gè)數(shù)達(dá)到了設(shè)置的多塊數(shù)據(jù)的塊數(shù)量或讀卡設(shè)備發(fā)出停止命令,存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)操作結(jié)束。
全文摘要
本發(fā)明公開(kāi)了一種存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)傳輸方法,該方法包括如下步驟讀卡設(shè)備使存儲(chǔ)卡進(jìn)入到旁置狀態(tài);當(dāng)存儲(chǔ)卡進(jìn)入旁置狀態(tài)后讀卡設(shè)備通過(guò)向存儲(chǔ)卡發(fā)送命令使存儲(chǔ)卡進(jìn)入傳送狀態(tài);在傳送狀態(tài)中讀卡設(shè)備通過(guò)命令設(shè)置多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量;該方法還包括如下步驟在存儲(chǔ)卡傳輸命令列表中添加可變長(zhǎng)多塊數(shù)據(jù)讀命令和可變長(zhǎng)多塊數(shù)據(jù)寫(xiě)命令,當(dāng)多塊數(shù)據(jù)傳輸?shù)膲K數(shù)量設(shè)置完畢后,通過(guò)上述添加的命令完成存儲(chǔ)卡可變長(zhǎng)多塊數(shù)據(jù)的讀寫(xiě)。本發(fā)明對(duì)數(shù)據(jù)的傳輸操作既靈活方便又提高了傳輸?shù)男省?br>
文檔編號(hào)G06F13/38GK101086724SQ200610087320
公開(kāi)日2007年12月12日 申請(qǐng)日期2006年6月7日 優(yōu)先權(quán)日2006年6月7日
發(fā)明者曹會(huì)揚(yáng) 申請(qǐng)人:普天信息技術(shù)研究院