CMD253C3
100000
-/-
現(xiàn)貨庫存,如實(shí)報(bào)貨,價(jià)格優(yōu)勢(shì),一站式配套服務(wù)
CMD253C3
10000
/23+
-
CMD25
80000
-/23+
原裝現(xiàn)貨
CMD25
80000
-/23+
原裝現(xiàn)貨
CMD25
8750
SOP8/2024+
原廠原裝現(xiàn)貨庫存支持當(dāng)天發(fā)貨
CMD25
3588
-/-
原裝 部分現(xiàn)貨量大期貨
CMD250005A
10000
QFN16/22+
終端可以免費(fèi)供樣,支持BOM配單
CMD250005A
3588
-/-
原裝 部分現(xiàn)貨量大期貨
CMD251C3
10002
-/23+
進(jìn)口原裝
CMD251C3
200
QFN/22+
原裝進(jìn)口訂貨7-10天
CMD251C3
12100
-/23+
Qorvo專營(yíng),原裝現(xiàn)貨
CMD251C3
10000
12WFQFN/25+
只做原裝,假一罰十價(jià)格優(yōu)勢(shì)。
CMD252-0000
1100
SOP16/2025+
一級(jí)代理,原裝假一罰十價(jià)格優(yōu)勢(shì)長(zhǎng)期供貨
CMD252-0000
35922
SOP16/-
一手渠道 假一罰十 原包裝常備現(xiàn)貨林R Q2280193667
CMD252-0000
2501
SOP16/0347+
全新原裝有現(xiàn)貨鑫盛金誠(chéng)信經(jīng)營(yíng)
CMD252-0000
2501
SOP16/0347+
全新原裝有現(xiàn)貨鑫盛金誠(chéng)信經(jīng)營(yíng)
CMD252C4
1956
-/2313
原廠原裝現(xiàn)貨射頻混合器,優(yōu)勢(shì)庫存
CMD253
5000
-/25+
海外原裝 發(fā)貨7-10天
CMD253C3
10000
/23+
-
CMD257C4
26800
QFN/2425+
保證全新原裝,每一片都來自原廠
模式的等待狀態(tài),這是數(shù)據(jù)傳輸模式的初始狀態(tài)。此時(shí)通過卡選擇命令cmd7就進(jìn)入傳輸狀態(tài),可以進(jìn)行數(shù)據(jù)的寫入與讀出了。 3. 2 sd寫操作 sd卡的讀寫是以數(shù)據(jù)塊為基本單位的。數(shù)據(jù)塊的大小因卡而異,通常塊大小為512字節(jié)(byte)到2048字節(jié)。特定卡的數(shù)據(jù)塊的大小在卡的特性寄存器(csd)中有定義。特殊情況下,部分卡支持小塊(最小可以字節(jié)為單位)讀寫。但推薦以塊為單位進(jìn)行讀寫。 sd卡支持單塊寫入和多塊寫入。單塊寫入使用命令cmd24,多塊寫入使用命令cmd25。當(dāng)有多個(gè)數(shù)據(jù)塊要寫入時(shí),使用多塊寫入要比多次執(zhí)行單塊寫入能獲得更高的效率。 由于sd卡內(nèi)部具有緩存區(qū),上述過程sd卡處于接收數(shù)據(jù)狀態(tài),接收到的數(shù)據(jù)并未真正寫入到sd卡的記憶體(memo2ry)內(nèi),而是存放在sd卡的緩存區(qū)內(nèi)。當(dāng)接收數(shù)據(jù)完成后, sd卡自動(dòng)進(jìn)入數(shù)據(jù)編程狀態(tài),這才真正地把數(shù)據(jù)寫入sd卡的記憶體內(nèi)。 3. 3 sd讀操作 與寫操作對(duì)應(yīng), sd卡支持單塊讀取和多塊讀取。單塊讀取使用命令cmd17,多塊讀取使用命令cmd18。當(dāng)有多個(gè)數(shù)據(jù)塊要讀取
d(sd_init,0); //發(fā)送初始化命令retry++;if(retry==100) //重試100次{sd_disable(); //關(guān)片選return(init_cmd1_error); //如果重試100次失敗返回錯(cuò)誤號(hào)}}while(temp!=0);sd_disable(); //關(guān)片選return(true); //返回成功}數(shù)據(jù)塊的讀寫 完成sd卡的初始化之后即可進(jìn)行它的讀寫操作。sd卡的讀寫操作都是通過發(fā)送sd卡命令完成的。spi總線模式支持單塊(cmd24)和多塊(cmd25)寫操作,多塊操作是指從指定位置開始寫下去,直到sd卡收到一個(gè)停止命令cmd12才停止。單塊寫操作的數(shù)據(jù)塊長(zhǎng)度只能是512字節(jié)。單塊寫入時(shí),命令為cmd24,當(dāng)應(yīng)答為0時(shí)說明可以寫入數(shù)據(jù),大小為512字節(jié)。sd卡對(duì)每個(gè)發(fā)送給自己的數(shù)據(jù)塊都通過一個(gè)應(yīng)答命令確認(rèn),它為1個(gè)字節(jié)長(zhǎng),當(dāng)?shù)?位為00101時(shí),表明數(shù)據(jù)塊被正確寫入sd卡。 在需要讀取sd卡中數(shù)據(jù)的時(shí)候,讀sd卡的命令字為cmd17,接收正確的第一個(gè)響應(yīng)命令字節(jié)為0xfe,隨后是512個(gè)字節(jié)的用戶數(shù)據(jù)塊,最后為2個(gè)字節(jié)的crc驗(yàn)證碼。
接收數(shù)據(jù),并通過txdata 發(fā)送數(shù)據(jù)。主要的數(shù)據(jù)傳輸方式有兩種:比特流數(shù)據(jù)傳輸和多塊數(shù)據(jù)傳輸,另外,該控制器還支持無響應(yīng)包數(shù)據(jù)傳輸。為確保傳輸?shù)恼_,包含了crc16 校驗(yàn)的子模塊。 2.2 cmd控制模塊的設(shè)計(jì) 由于sd/mmc 卡的操作命令不一致,在模塊中并沒有對(duì)命令作譯碼,而是通過軟件來設(shè)置命令的類型。單塊(signalblock data)讀數(shù)據(jù)命令(cmd17),寫數(shù)據(jù)命令(cmd24);多塊(multi-block data)讀數(shù)據(jù)命令(cmd18),寫數(shù)據(jù)命令(cmd25)等需要控制模塊根據(jù)sd_cmd_index 寄存器的內(nèi)容來發(fā)布相應(yīng)的命令,并作不同的狀態(tài)轉(zhuǎn)換。cmd 控制模塊的狀態(tài)轉(zhuǎn)換圖如圖2 所示。 圖2 cmd 控制模塊的狀態(tài)轉(zhuǎn)換 2.3 data控制模塊的設(shè)計(jì) 本模塊主要功能是向卡發(fā)送數(shù)據(jù)和從卡讀取數(shù)據(jù),另外,針對(duì)sd 卡該模塊可以通過data[3] 檢測(cè)卡是否插入,通過data[2]發(fā)送讀等待信號(hào),通過data[1]接收卡送來的中斷信號(hào)以及通過data[0]來檢測(cè)卡是否處于忙狀態(tài)。 apb 總線上還有其他一些功能模塊,如sp
輸入輸出。 以下是本系統(tǒng)軟件模擬spi時(shí)序的部分c語言代碼: (2)sd卡的初始化。 sd卡的初始化流程圖,如圖10所示。sd卡上電延時(shí)74個(gè)時(shí)鐘周期后,單片機(jī)向sd卡發(fā)送復(fù)位命令cmd0使sd卡進(jìn)入spi模式,之后循環(huán)發(fā)送激活sd卡指令cmd1直到接收到sd卡響應(yīng)的第0位為"0". 圖10 sd卡初始化流程 (3)sd卡數(shù)據(jù)塊的讀寫。 完成sd卡的初始化后,就可以對(duì)sd卡進(jìn)行讀寫操作。讀寫操作都是通過指令來完成的:?jiǎn)螇K寫命令cmd24,多塊寫命令cmd25;單塊讀命令cmd17,多塊讀命令cmd18.單塊讀寫時(shí),數(shù)據(jù)塊的長(zhǎng)度為512字節(jié),多塊讀寫時(shí)sd卡收到一個(gè)停止命令cmd12后停止讀寫。圖11和圖12分別是sd卡單塊讀、寫的spi時(shí)序圖,圖13和圖14分別是單塊讀、寫sd卡的軟件流程圖。 圖11 單塊讀時(shí)序圖 圖12 單塊寫時(shí)序圖 圖13 讀sd卡流程圖 圖14 fat16文件讀寫流程圖 4. fat16 文件讀寫 按照fat16 文件系統(tǒng)的文件組織規(guī)范,編寫讀文件函數(shù)和寫文件函數(shù)。fat16 文件讀寫
retry==100) //重試100次 {sd_disable(); //關(guān)片選 return(init_cmd1_error); //如果重試100次失敗返回錯(cuò)誤號(hào) } }while(temp!=0); sd_disable(); //關(guān)片選 return(true); //返回成功 } 數(shù)據(jù)塊的讀寫 完成sd卡的初始化之后即可進(jìn)行它的讀寫操作。sd卡的讀寫操作都是通過發(fā)送sd卡命令完成的。spi總線模式支持單塊(cmd24)和多塊(cmd25)寫操作,多塊操作是指從指定位置開始寫下去,直到sd卡收到一個(gè)停止命令cmd12才停止。單塊寫操作的數(shù)據(jù)塊長(zhǎng)度只能是512字節(jié)。單塊寫入時(shí),命令為cmd24,當(dāng)應(yīng)答為0時(shí)說明可以寫入數(shù)據(jù),大小為512字節(jié)。sd卡對(duì)每個(gè)發(fā)送給自己的數(shù)據(jù)塊都通過一個(gè)應(yīng)答命令確認(rèn),它為1個(gè)字節(jié)長(zhǎng),當(dāng)?shù)?位為00101時(shí),表明數(shù)據(jù)塊被正確寫入sd卡。 在需要讀取sd卡中數(shù)據(jù)的時(shí)候,讀sd卡的命令字為cmd17,接收正確的第一個(gè)響應(yīng)命令字節(jié)為0xfe,隨后是512個(gè)字節(jié)的用戶數(shù)據(jù)塊,最后為2個(gè)字節(jié)的crc驗(yàn)證碼。