引言:本文介紹寫SD卡的理論知識(shí),主要包括SD卡分類、容量、速度、管腳、物理結(jié)構(gòu)以及命令控制等。
1. 概述
SD卡存儲(chǔ)卡,是用于手機(jī)、數(shù)碼相機(jī)、便攜式電腦、MP3和其他數(shù)碼產(chǎn)品上的獨(dú)立存儲(chǔ)介質(zhì),一般是卡片的形態(tài),故統(tǒng)稱為“存儲(chǔ)卡”,又稱為“數(shù)碼存儲(chǔ)卡”、“數(shù)字存儲(chǔ)卡”、“儲(chǔ)存卡”等。SD 卡是在 MMC 卡的基礎(chǔ)上發(fā)展而來,全稱 Secure Digital Card,譯為安全數(shù)字卡,簡(jiǎn)稱SD卡。
由松下電器、東芝和閃迪聯(lián)合推出,1999 年 8 月發(fā)布。SD卡的數(shù)據(jù)傳送和物理規(guī)范與MMC相似,大小和MMC卡差不多,尺寸為32mmx24mmx2.1mm。長(zhǎng)寬和MMC卡一樣,只是比MMC卡厚了0.7mm,以容納更大容量的存貯單元。SD卡與MMC卡保持著向上的兼容,MMC卡可以被新的SD設(shè)備存取,兼容性則取決于應(yīng)用軟件,但SD卡卻不可以被MMC設(shè)備存取。
圖2:SD卡發(fā)展歷程
按照外形與尺寸,SD卡可分為三類:標(biāo)準(zhǔn)SD卡、MiniSD卡和MicroSD 卡,典型參數(shù)如圖3所示。
圖3:三類SD典型參數(shù)
(1)標(biāo)準(zhǔn)SD:規(guī)格最大的一種,今天市面上大多數(shù)消費(fèi)級(jí)數(shù)字相機(jī)和攝像機(jī)均使用此標(biāo)準(zhǔn)的SD卡,這種卡有標(biāo)準(zhǔn)的“缺角”設(shè)計(jì)。
(2)mini-SD:在數(shù)碼相機(jī),PDA等所用的Flash Memory Card(中文名:快閃存儲(chǔ)卡)基礎(chǔ)上發(fā)展出的一種更小更適合小型手機(jī)用的存儲(chǔ)卡。盡管mini-SD卡的外形大小及接口形狀與原來的SD卡不同,但接口等電氣標(biāo)準(zhǔn)相同,以確保兼容性。將mini-SD卡插入專用適配器,可通過原來的SD卡插槽讀寫mini-SD卡。不過,不具備像SD卡那樣防寫入的鎖定功能。
(3)Micro SD:原名Trans-flash Card(TF卡),2004年正式更名為Micro SD Card,由SanDisk(閃迪)公司發(fā)明,主要用于移動(dòng)電話。目前,提供128MB、256MB、512MB、1G、2G、4G、8G、16G、32G、64G、128G、256G、512G、1T容量的Micro SD卡供消費(fèi)者選用。
SD卡管腳定義如下圖4和圖5所示。
??? ?? ??
圖4:SD卡典型管腳定義
圖5:Micro SD卡典型管腳定義
2. SD卡的容量和速度
2.1 SD卡容量
SD卡按照容量標(biāo)準(zhǔn)可分為 4 個(gè)等級(jí):
SD:Secure Digital Card,安全數(shù)字卡;
SDHC :Secure Digital High Capacity,高容量安全數(shù)字卡;
SDXC :SD eXtended Capacity,容量擴(kuò)大化的安全數(shù)字卡;
SDUC:Secure Digital Ultra Capacity,超容量安全數(shù)字卡。
圖6:SD卡按容量分類
市場(chǎng)的主流SD產(chǎn)品是SDHC和SDXC這兩種較大容量的存儲(chǔ)卡,SD卡因容量過小,已逐漸被市場(chǎng)淘汰,SDUC則是容量太大,預(yù)計(jì)會(huì)出現(xiàn)在未來市場(chǎng)。
2.2 SD卡速度
不同品牌和廠商生產(chǎn)的SD卡在對(duì)存取速度上的定義標(biāo)準(zhǔn)不同,這會(huì)使用戶在選擇SD卡時(shí)產(chǎn)生困擾。所以SD協(xié)會(huì)根據(jù)視頻勻速寫入到SD卡的最低持續(xù)速度來劃分不同等級(jí),每個(gè)等級(jí)的速率是以每秒傳輸多少M(fèi)B來衡量的,單位為MB/SSD協(xié)會(huì)定義了三種速度等級(jí):速度等級(jí)、UHS速度等級(jí)與視頻速度等級(jí)。三種速度等級(jí)的具體傳輸速度如圖7所示。
圖7:SD卡速度等級(jí)
從SD2.0的規(guī)范開始,對(duì)SD普通卡和高速卡的速度分級(jí)是:Class2、Class4、Class6和 Class 10 四個(gè)等級(jí)。
UHS 速度等級(jí)
UHS(Ultra High Speed)是與SDXC同時(shí)推出的SD卡總線標(biāo)準(zhǔn)。UHS 速度等級(jí)適用于SDHC和SDXC。SD協(xié)會(huì)定義的UHS速度等級(jí)是UHS速度等級(jí)1(UHS-1)和UHS速度等級(jí) 3(UHS-3)。U1和U3可應(yīng)用于UHS總線IF產(chǎn)品系列(UHS-I,UHS-II和UHS-III)。廠商一般會(huì)直接在SD卡上標(biāo)注速度,這可協(xié)助消費(fèi)者透過讀寫標(biāo)志來選擇所需要的效能。
視頻速度等級(jí)
視頻速度等級(jí)定義為能滿足高分辨率和高質(zhì)量4K/8K 視頻錄制的需求,它還具有支持下一代閃存類型(如3DNAND)的重要功能。此外,視頻速度等級(jí)還涵蓋了HD高清(2K)視頻的速度。SD協(xié)會(huì)定義的視頻速度等級(jí)為V6,V10,V30,V60和V90。V6和V10可應(yīng)用于高速和UHS總線IF產(chǎn)品系列。V30可應(yīng)用于UHS總線 IF產(chǎn)品系列。V60和V90可應(yīng)用于UHS-II/UHS-III 產(chǎn)品系列。
3. SD卡物理結(jié)構(gòu)
SD卡物理結(jié)構(gòu)如圖8所示。
圖8:SD卡物理結(jié)構(gòu)
SD卡從物理結(jié)構(gòu)看包括5個(gè)部分,分別為存儲(chǔ)單元、存儲(chǔ)單元接口、電源檢測(cè)、卡及接口控制器和接口驅(qū)動(dòng)器,具體見圖8。存儲(chǔ)單元是存儲(chǔ)數(shù)據(jù)部件,存儲(chǔ)單元通過存儲(chǔ)單元接口與卡控制單元進(jìn)行數(shù)據(jù)傳輸;電源檢測(cè)單元保證SD卡工作在合適的電壓下,如出現(xiàn)掉電或上電狀態(tài)時(shí),它會(huì)使控制單元和存儲(chǔ)單元接口復(fù)位;卡及接口控制單元控制SD卡的運(yùn)行狀態(tài),它包括有8個(gè)寄存器;接口驅(qū)動(dòng)器控制SD卡引腳的輸入輸出。
常規(guī)的SD卡共有9個(gè)引腳接口,其中包括3根電源線、1根時(shí)鐘線、1根命令線和4根數(shù)據(jù)線。工作模式有兩種:SDIO模式和SPI模式(模式3)。各信號(hào)簡(jiǎn)介如下:
CLK:同步時(shí)鐘線,由SDIO主機(jī)產(chǎn)生,即由主機(jī)控制器輸出;使用SPI模式時(shí),該引腳與SPI總線的SCK時(shí)鐘信號(hào)相連;
CMD:命令控制線,SDIO主機(jī)通過該線發(fā)送命令控制SD卡,如果命令要求SD卡提供應(yīng)答(響應(yīng)),SD卡也是通過該線傳輸應(yīng)答信息;使用SPI模式時(shí),該引腳與SPI總線的MOSI信號(hào)相連,SPI主機(jī)通過它向SD卡發(fā)送命令及數(shù)據(jù),但因?yàn)镾PI總線的MOSI僅用于主機(jī)向從機(jī)輸出信號(hào),所以SD卡返回應(yīng)答信息時(shí)不使用該信號(hào)線;
DAT0-3:在SDIO模式下,它們均為數(shù)據(jù)線,傳輸讀寫數(shù)據(jù),SD卡可將 D0拉低表示忙狀態(tài);在SPI模式下,DAT0與SPI總線的MISO信號(hào)相連,SD卡通過該信號(hào)線向主機(jī)發(fā)送數(shù)據(jù)或響應(yīng),DAT3與總線的CS信號(hào)相連,SPI主機(jī)通過該信號(hào)線選擇要通訊的SD卡。
VDD、VSS1、VSS2:電源和地信號(hào),其中Micro SD卡不包含VSS2信號(hào),即Micro SD卡僅有8根線。
SD卡有兩種工作模式,在SDIO模式下,SD卡共使用到CLK、CMD、DAT[3:0]六根信號(hào)線;SDIO總線與多張SD卡連接時(shí),可以共用CLK時(shí)鐘信號(hào)線,對(duì)于CMD、DAT[3:0]信號(hào)線,每張SD卡都要獨(dú)立連接。SDIO總線與SD卡連接方式,具體見圖9。
圖9:SDIO總線與SD卡互聯(lián)
在SPI模式下,SD卡共使用到CS(DAT[3])、CLK、MISO(DAT[0])、MOSI(CMD)四根信號(hào)線;SPI 總線與多張 SD卡連接時(shí),除CS片選信號(hào)線不可共用外,其他信號(hào)均可公用。SPI總線與SD卡連方式,具體見圖10。
圖10:SPI總線與SD卡互聯(lián)
4. SD卡寄存器
SD卡總共有8個(gè)寄存器,用于設(shè)定或表示SD卡信息,寄存器描述具體見圖11。這些寄存器只能通過對(duì)應(yīng)的命令訪問,對(duì)SD卡的控制操作是通過命令來執(zhí)行的,SD卡定義了64個(gè)命令(部分命令不支持SPI模式),每個(gè)命令都有特殊意義,可以實(shí)現(xiàn)某一特定功能,SD卡接收到命令后,根據(jù)命令要求對(duì)SD卡內(nèi)部寄存器進(jìn)行修改,程序控制中只需要發(fā)送組合命令就可以實(shí)現(xiàn)SD卡的控制以及讀寫操作。
圖11:SD卡寄存器寄存器簡(jiǎn)述
5. SD卡命令控制
5.1 SD卡控制時(shí)序
SD卡的通信是基于命令和數(shù)據(jù)傳輸?shù)?。通訊由一個(gè)起始位(“0”)開始,由一個(gè)停止位(“1”)終止。SD通信一般是主機(jī)發(fā)送一個(gè)命令(Command),從設(shè)備在接收到命令后作出響應(yīng)(Response),如有需要會(huì)有數(shù)據(jù)(Data)傳輸參與。SD卡的基本交互是命令與響應(yīng)交互,如圖12所示,圖中的DataIn和DataOut線分別是SPI的MISO及MOSI信號(hào)。
圖12:命令與響應(yīng)交互
SD數(shù)據(jù)是以塊(Block)形式傳輸?shù)?,SDHC卡數(shù)據(jù)塊長(zhǎng)度一般為512字節(jié),數(shù)據(jù)可以從主機(jī)到卡,也可以是從卡到主機(jī)。數(shù)據(jù)塊需要CRC位來保證數(shù)據(jù)傳輸成功,CRC位由SD卡系統(tǒng)硬件生成。單個(gè)數(shù)據(jù)塊的讀寫時(shí)序見圖12、圖13。
圖 12:?jiǎn)螇K讀操作
圖:13:?jiǎn)螇K寫操作
讀寫操作都是由主機(jī)發(fā)起的,主機(jī)發(fā)送不同的命令表示讀或?qū)懀琒D卡接收到命令后對(duì)命令返回響應(yīng)。在讀操作中,SD卡返回一個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊中包含 CRC校驗(yàn)碼;在寫操作中,主機(jī)接收到命令響應(yīng)后需要先發(fā)送一個(gè)標(biāo)志(TOKEN)然后緊跟一個(gè)要寫入的數(shù)據(jù)塊,卡接收完數(shù)據(jù)塊后會(huì)返回一個(gè)數(shù)據(jù)響應(yīng)及忙碌標(biāo)志,當(dāng)SD卡把接收到的數(shù)據(jù)寫入到內(nèi)部存儲(chǔ)單元完成后,會(huì)停止發(fā)送忙碌標(biāo)志,主機(jī)確認(rèn)SD卡空閑后,可以發(fā)送下一個(gè)命令。SD數(shù)據(jù)傳輸支持單塊和多塊讀寫,它們分別對(duì)應(yīng)不同的操作命令,結(jié)束多塊讀寫時(shí)需要使用命令來停止操作。
5.2 SD卡命令
命令格式
SD命令由主機(jī)發(fā)出,命令格式固定為48bit,通過CMD信號(hào)線連續(xù)傳輸。SD 命令格式,具體見圖14。
圖:14:命令格式
起始位和終止位:命令的主體包含在起始位與終止位之間,它們都只包含一個(gè)數(shù)據(jù)位,起始位為 0,終止位為 1。
傳輸標(biāo)志:用于區(qū)分傳輸方向,該位為1時(shí)表示命令,方向?yàn)橹鳈C(jī)傳輸?shù)絊D卡,該位為0時(shí)表示響應(yīng),方向?yàn)镾D卡傳輸?shù)街鳈C(jī)。命令主體內(nèi)容包括命令、地址信息/參數(shù)和CRC校驗(yàn)三個(gè)部分。
命令號(hào):它固定占用6bit,所以總共有64個(gè)命令,每個(gè)命令都有特定的用途,部分命令不適用于SPI總線,或不適用于SD卡操作,只是專門用于MMC卡或者 SD I/O卡。
地址/參數(shù):每個(gè)命令32bit地址信息/參數(shù)用于命令附加內(nèi)容,例如,廣播命令沒有地址信息,這32bit用于指定參數(shù),而尋址命令這32bit用于指定目標(biāo)SD卡的地址,當(dāng)使用SDIO驅(qū)動(dòng)多張SD卡時(shí),通過地址信息區(qū)分控制不同的卡,使用SPI總線驅(qū)動(dòng)時(shí),通過片選引腳來選擇不同的卡,所以使用這些命令時(shí)地址可填充任意值。CRC7校驗(yàn):長(zhǎng)度為7bit的校驗(yàn)位用于驗(yàn)證命令傳輸內(nèi)容正確性,如果發(fā)生外部干擾導(dǎo)致傳輸數(shù)據(jù)個(gè)別位狀態(tài)改變將導(dǎo)致校準(zhǔn)失敗,也意味著命令傳輸失敗,SD卡不執(zhí)行命令。使用SDIO驅(qū)動(dòng)時(shí),命令中必須包含正確的CRC7校驗(yàn)值;而使用SPI驅(qū)動(dòng)時(shí),命令中的CRC7校驗(yàn)?zāi)J(rèn)是關(guān)閉的,即這CRC7校驗(yàn)位中可以寫入任意值而不影響通訊,僅在發(fā)送CMD0命令時(shí)需要強(qiáng)制帶標(biāo)準(zhǔn)的CRC7校驗(yàn)。
命令說明
SD卡命令可分為標(biāo)準(zhǔn)命令 (如CMD0)和特殊應(yīng)用命令 (如ACMD41),其中特殊應(yīng)用命令只有在先寫入CMD55命令后才能被識(shí)別。按照指令類型又可將 SD卡命令分為基本命令、數(shù)據(jù)塊寫命令、數(shù)據(jù)塊讀命令、擦除命令等12種(class0 ~ class11),部分命令不適用于SPI 總線,或不適用于SD卡操作,只是專門用于MMC卡或者 SD I/O 卡。
感謝關(guān)注公眾號(hào),喜歡就多多轉(zhuǎn)發(fā)吧!