第三章 SD 記憶卡
3.1 SD 記憶卡概述
3.1.4 SD 記憶卡的暫存器
在使用 SD 記憶卡時,必須知道卡片的詳細資訊才能夠正確的進行操 作,而卡片的各種詳細資訊就存放在內部暫存器中,表3-2 列出了 SD 記憶 卡內部的六個暫存器,其為OCR、CID、CSD、RCA、DSR 與 SCR,要存 取這些暫存器的資料需要透過相對應的命令才能讀取,詳細的暫存器內容 說明請參考SD Memory Card Specification [4]。
表 3-2 SD 記憶卡內部暫存器 [4]
Name Width Description
CID 128 Card identification number; card individual number for identification RCA 16 Relative card address; local system address of a card, dynamically
suggested by the card and approved by the host during initialization DSR 16 Driver Stage Register; to configure the card’s output drivers CSD 128 Card Specific Data; information about the card operation conditions SCR 64 SD Configuration Register; information about the SD Memory Card’s
Special Features capabilities OCR 32 Operation condition register
OCR 暫存器 (Operation Conditions Register)
OCR 暫存器有 32 位元,是儲存 SD 記憶卡的操作電壓範圍,由於記憶 卡的匯流排並不支援所有的操作電壓,所以OCR 暫存器會提供這張記憶卡 的操作電壓範圍。每一個位元對應一個電壓檔位,如果該位元為1,則表示 支援該電壓範圍;反之則不支援該電壓範圍。
另外,在第31 位元還包含了 1 位元的狀態資訊,如果記憶卡的電源起 動程序執行完成,則狀態資訊位元會設置為 1,當記憶卡在 BUSY 狀態下
當電源起動程序執行完成後,第 30 位元(CCS)會依據記憶卡容量來設 定,如為高容量記憶卡,則 CCS 會設置為 1。如電源起動程序無法執行完 成,則CCS 不會被設置。
圖3-6 為本系統使用的創見(Transcend) 2GB SD 記憶卡,其讀取的 OCR 數值為0x80FF800,可以得知其操作電壓範圍為 2.7V~3.6V,且記憶卡的狀 態為電源起動程序執行完成,不支援高容量模式。讀取OCR 暫存器的專用 命令為ACMD41 (SEND_APP_OP_COND)。
OCR = 0x80FF8000
31 30 [30:24] [23:16] [15:8] [7:4] [3:0]
1 0 00 FF 80 0 0
Reserve
Openating Voltage 2.7 – 3.6V
Reserve Card capacity status Busy bit
圖 3-6 OCR 結構分析 [4]
CID 暫存器 (Card IDentification)
CID 暫存器的資料格式為 128 位元,使用 CMD10(SEND_CID)命令來 讀取,其記錄了該SD 記憶卡的製造廠商、產品名稱、版本與序號等識別資 訊,每一張記憶卡都有一個唯一的識別號碼(PSN),本系統使用的創見 (Transcend) 2GB SD 記憶卡 CID 值為:
CID = { 0x1E,0x41,0x42,0x53,0x44,0x43,0x20,0x20 0x10,0x4B,0x60,0xD0,0x50,0x00,0xA9,0x47 }
CSD 暫存器 (Card-Specific Data)
CSD 暫存器提供如何操作記憶卡的資訊,其為 128 位元資料格式,其 定義了資料容量、錯誤校正形式、最大存取時間以及是否可以使用DSR 暫 存器等資訊。可使用CMD9 (SEND_CSD)命令來讀取 CSD 暫存器的資料。
本系統使用的創見(Transcend) 2GB SD 記憶卡 CSD 值為:
CSD = { 0x00,0x2F,0x00,0x32,0x5F,0x5A,0x83,0xB6 0xED,0xB7,0xFF,0xBF,0x96,0x80,0x00,0xF7 } RCA 暫存器 (Relative Card Address)
RCA 暫存器是一 16 位元的卡片位址暫存器,在卡片識別流程期間登 錄,主裝置可用此位址來指定記憶卡,RCA 的初始設定值為 0x0000。CMD3 (Send_Relative_Addr)命令可以用來登錄新的 RCA 位址,可用 CMD7 (Select/
Deselect_Card)命令來選擇特定 RCA 位址的記憶卡。
DSR 暫存器 (Driver Stage Register)
DSR 暫存器儲存記憶卡的命令與資料匯流排驅動電流與斜率,主裝置 可以依照DSR 設定隨意地根據資料線寬度、傳輸速率、卡片數量來改善匯 流排驅動能力,出廠設定值為0x0404。可用 CMD4(SET_DSR) 命令來設定 DSR 暫存器。
SCR 暫存器
64 位元的 SCR(SD CARD Configuration Register)暫存器是用來擴展 CSD 暫存器,其提供該記憶卡特殊功能的設定資訊,此暫存器需在製造後 出廠前就被設定好,使用ACMD51 (SD_APP_SEND_SCR)命令來讀取 SCR 暫存器資料。