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