Up to 8 unique Secure Digital Card Registers reside in all SD, miniSD, and microSD Flash memory cards, with the SD Association requiring a minimum of 5. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions. In addition, registers may be read-only or write-only. Lastly, registers typically reside outside of main memory but may in some instances be assigned a standard memory address.
The data storage capacities, or sizes, of Secure Digital Card Registers are normally measured in bits. For example, an 8-bit register or a 16-bit register. In addition, with some instruction sets, registers can operate in various modes, breaking down their memory into subsections.
The data table below lists the 8 possible registers found in Secure Digital memory cards.
Register |
Required |
Length |
Description |
OCR |
Yes |
32 bits |
Operating Conditions Register |
CID |
Yes |
128 bits |
Card Identification Register |
RCA |
Yes |
16 bits |
Relative Card Address Register |
DSR |
No |
16 bits |
Driver Stage Register |
CSD |
Yes |
128 bits |
Card Specific Data Register |
SCR |
No |
64 bits |
SD Card Configuration Register |
SSR |
Yes |
512 bits |
SD Status Register |
CSR |
No |
32 bits |
CSR |
Operating Conditions Register (OCR) – 32 bits
The Operating Conditions Register stores important information pertaining to the SD card. Firstly, the Card Power Up Status bit provides notification whether or not the card finished initializing.
Secondly, the Card Capacity Status indicates the presence of either a lower-capacity SDSC or higher-capacity SDHC and SDXC cards. Thirdly, the UHS-II Card Status bit signals the presence of a UHS-II compliant SD card. Lastly, the remaining bits specify the VDD voltage profile best suited for the memory card.
Commands CMD1 (SPI Protocol) and ACMD41 (SD Protocol) request responses comprising the 32 bits of data stored in the Operating Conditions Register. When initializing, SD Cards usually send at least one Busy response (bit31=0). The controller should repeat sending CMD1 or ACMD41 until the Operating Conditions Register Card Power Up Status Bit returns a ‘1’.
Bit Location |
Name |
Value |
31 |
Card Power Up Status |
Busy=0, Ready=1 |
30 |
Card Capacity Status |
SDSC= 0, SDHC/SDXC=1 |
29 |
UHS–II Card Status |
NO=0, YES=1 |
28 – 25 |
Reserved |
|
24 |
1.8V Support |
NO=0, YES=1 (UHS-I cards only.) |
23 |
VDD Voltage Range |
3.5V – 3.6V |
22 |
3.4V – 3.5V |
21 |
3.3V – 3.4V |
20 |
3.2V – 3.3V |
19 |
3.1V – 3.2V |
18 |
3.0V – 3.1V |
17 |
2.9V – 3.0V |
16 |
2.8V – 2.9V |
15 |
2.7V – 2.8V |
14 |
2.6V – 2.7V |
13 |
2.5V – 2.6V |
12 |
2.4V – 2.5V |
11 |
2.3V – 2.4V |
10 |
2.2V – 2.3V |
9 |
2.1V – 2.2V |
8 |
2.0V – 2.1V |
7 |
Low Voltage |
NO=0, YES=1 |
6 – 4 |
Reserved |
|
3 – 0 |
|
Card Identification Register (CID) – 128 bits
The Card Identification Register contains information that uniquely identifies the SD card. This information includes the card serial number (PSN), manufacturer ID number (MID), and the manufacture date (MDT). Permanently set when manufactured, the CID Register can never be changed or altered.
Name |
Field |
Length |
Description |
Manufacturer ID |
MID |
8 bits |
Assigned by the SD Association. Linux Name: manfid |
OEM / Application ID |
OID |
16 bits |
Identifies the card OEM and/or the card contents. Assigned by the SD Association. Linux Name: oemid |
Product Name |
PNM |
40 bits |
5 characters long (ASCII). Linux Name: name |
Product Revision |
PRV |
8 bits (4 + 4) |
Two binary coded decimal (BCD) digits, each 4 bits. The PRV is in the form x.y. The PRV can also be found by using the hwrev and fwrev, where x=hwrev and y=fwrev. Linux Nams: hwrev & fwrev |
Serial Number |
PSN |
32 bits |
Unsigned Integer. Linux Name: serial |
Reserved |
|
4 bits |
|
Manufacture Date |
MDT |
12 bits |
Manufacture date in the form yym starting from 2000. Linux Name: date |
CRC7 Checksum |
CRC |
7 bits |
Used for error checking with the CID. |
Relative Card Address (RCA) – 16 bits
Designed for connecting multiple SD cards to the same host, the RCA carries the card address published by the SD card during its identification. Available in SD Mode only and therefore not supported by the Serial Peripheral Interface (SPI) bus protocol. Instead, the selection of SD cards using the SPI protocol use the dedicated Chip Select (!CS) interface pin.
In addition, with the default RCA Register value of ‘0000h’, CMD7 can place a Secure Digital card in the Stand-by State.
CMD |
Support |
CMD Name |
SD / MMC |
SPI |
CMD0 |
SD / MMC |
Yes |
GO_IDLE_STATE |
CMD2 |
SD / MMC |
No |
ALL_GET_CID |
CMD3 |
SD Only |
No |
GET_RELATIVE_ADDR |
CMD4 |
SD / MMC |
No |
SET_DSR |
CMD7 |
SD / MMC |
No |
SELECT_DESELECT_CARD |
CMD8 |
SD Only |
Yes |
SET_IF_COND |
ACMD41 |
SD Only |
Yes |
SD_SEND_OP_COND |
Driver Stage Register (DSR) – 16 bits
Responsible for drive outputs. Being optional, not all Secure Digital Cards possess a Driver Stage Register.
Card Specific Data Register (CSD) – 128 bits
Required to access card data. Defines the data format, error correction type, maximum data access time, etc. The field structures vary depending on the physical specifications and card capacity. For standard capacity SDSC memory cards, refer to CSD Version 1.0. For high capacity SDHC and SDXC memory cards, refer to CSD Version 2.0.
CSD Register Fields (Version 1.0)
Name |
Field Name |
CSD Structure |
CSD_STRUCTURE |
Reserved |
|
Data Read Access Time |
TAAC |
Data Read Access Time in CLK Cycles |
NSAC |
Max. Data Transfer Rate |
TRAN_SPEED |
Card Command Classes |
CCC |
Max. Read Data Block Length |
READ_BL_LEN |
Partial Block for Read Allowed |
READ_BL_PARTIAL |
Write Block Misalignment |
WRITE_BLK_MISALIGN |
Read Block Misalignment |
READ_BLK_MISALIGN |
DSR Implemented |
DSR_IMP |
Reserved |
|
Device Size |
C_SIZE |
Max. Read Current @VDD Min. |
VDD_R_CURR_MIN |
Max. Read Current @VDD Max. |
VDD_R_CURR_MAX |
Max. Write Current @VDD Min. |
VDD_W_CURR_MIN |
Max. Write Current @VDD Max. |
VDD_W_CURR_MAX |
Reserved |
|
Device Size Multiplier |
C_SIZE_MULT |
Erase Single Block Enable |
ERASE_BLK_EN |
Erase Sector Size |
SECTOR_SIZE |
Write Protect Group Size |
WP_GRP_SIZE |
Write Protect Group Enable |
WP_GRP_ENABLE |
Reserved |
|
Write Speed Factor |
R2W_FACTOR |
Max. Write Data Block Length |
WRITE_BL_LEN |
Partial Blocks for Write Allowed |
WRITE_BL_PARTIAL |
Reserved |
|
File Format Group |
FILE_FORMAT_GRP |
Copy Flag (OTP) |
COPY |
Permanent Write Protection |
PERM_WRITE_PROTECT |
Temporary Write Protection |
TMP_WRITE_PROTECT |
File Format |
FILE_FORMAT |
Reserved |
|
CRC |
CRC |
Not Used (Always ‘1’) |
|
CSD Register Fields (Version 1.0)
Name |
Width (bits) |
Location |
Cell Type |
CSD Structure |
2 |
127 – 126 |
R |
Reserved |
6 |
125 – 120 |
R |
Data Read Access Time |
8 |
119 – 112 |
R |
Data Read Access Time in CLK Cycles |
8 |
111 – 104 |
R |
Max. Data Transfer Rate |
8 |
103 – 96 |
R |
Card Command Classes |
12 |
95 – 84 |
R |
Max. Read Data Block Length |
4 |
83 – 80 |
R |
Partial Block for Read Allowed |
1 |
79 |
R |
Write Block Misalignment |
1 |
78 |
R |
Read Block Misalignment |
1 |
77 |
R |
DSR Implemented |
1 |
76 |
R |
Reserved |
2 |
75 – 74 |
R |
Device Size |
12 |
73 – 62 |
R |
Max. Read Current @VDD Min. |
3 |
61 – 59 |
R |
Max. Read Current @ VDD Max. |
3 |
58 – 56 |
R |
Max. Write Current @VDD Min. |
3 |
55 – 53 |
R |
Max. Write Current @VDD Max. |
3 |
52 – 50 |
R |
Reserved |
1 |
47 |
R |
Device Size Multiplier |
3 |
49 – 47 |
R |
Erase Single Block Enable |
1 |
46 |
R |
Erase Sector Size |
7 |
45 – 39 |
R |
Write Protect Group Size |
7 |
38 – 32 |
R |
Write Protect Group Enable |
1 |
31 |
R |
Reserved for MMC Compatibility |
2 |
30 – 29 |
R |
Write Speed Factor |
3 |
28 – 26 |
R |
Max. Write Data Block Length |
4 |
25 – 22 |
R |
Partial Blocks for Write Allowed |
1 |
21 |
R |
Reserved |
5 |
20 – 16 |
R |
File Format Group |
1 |
15 |
R/W |
Copy Flag (OTP) |
1 |
14 |
R/W |
Permanent Write Protection |
1 |
13 |
R/W |
Temporary Write Protection |
1 |
12 |
R/W |
File Format |
2 |
11 – 10 |
R/W |
Reserved |
2 |
9 – 8 |
R/W |
CRC |
7 |
7 – 1 |
R/W |
Not Used (Always ‘1’) |
1 |
0 |
|
CSD Register Fields (Version 2.0)
Name |
Field Name |
CSD Structure |
CSD_STRUCTURE |
Reserved |
|
Data Read Access Time |
TAAC |
Data Read Access Time in CLK Cycles |
NSAC |
Max. Data Transfer Rate |
TRAN_SPEED |
Card Command Classes |
CCC |
Max. Read Data Block Length |
READ_BL_LEN |
Partial Block for Read Allowed |
READ_BL_PARTIAL |
Write Block Misalignment |
WRITE_BLK_MISALIGN |
Read Block Misalignment |
READ_BLK_MISALIGN |
DSR Implemented |
DSR_IMP |
Reserved |
|
Device Size |
C_SIZE |
Reserved |
|
Erase Single Block Enable |
ERASE_BLK_EN |
Erase Sector Size |
SECTOR_SIZE |
Write Protect Group Size |
WP_GRP_SIZE |
Write Protect Group Enable |
WP_GRP_ENABLE |
Reserved |
|
Write Speed Factor |
R2W_FACTOR |
Max. Write Data Block Length |
WRITE_BL_LEN |
Partial Blocks for Write Allowed |
WRITE_BL_PARTIAL |
Reserved |
|
File Format Group |
FILE_FORMAT_GRP |
Copy Flag (OTP) |
COPY |
Permanent Write Protection |
PERM_WRITE_PROTECT |
Temporary Write Protection |
TMP_WRITE_PROTECT |
File Format |
FILE_FORMAT |
Reserved |
|
CRC |
CRC |
Not Used (Always ‘1’) |
|
CSD Register Fields (Version 2.0)
Name |
Width (bits) |
Location |
Cell Type |
CSD Structure |
2 |
127 – 126 |
R |
Reserved |
6 |
125 – 120 |
R |
Data Read Access Time |
8 |
119 – 112 |
R |
Data Read Access Time in CLK Cycles |
8 |
111 – 104 |
R |
Max. Data Transfer Rate |
8 |
103 – 96 |
R |
Card Command Classes |
12 |
95 – 84 |
R |
Max. Read Data Block Length |
4 |
83 – 80 |
R |
Partial Block for Read Allowed |
1 |
79 |
R |
Write Block Misalignment |
1 |
78 |
R |
Read Block Misalignment |
1 |
77 |
R |
DSR Implemented |
1 |
76 |
R |
Reserved |
6 |
75 – 70 |
R |
Device Size |
22 |
69 – 48 |
R |
Reserved |
1 |
47 |
R |
Erase Single Block Enable |
1 |
46 |
R |
Erase Sector Size |
7 |
45 – 39 |
R |
Write Protect Group Size |
7 |
38 – 32 |
R |
Write Protect Group Enable |
1 |
31 |
R |
Reserved |
2 |
30 – 29 |
R |
Write Speed Factor |
3 |
28 – 26 |
R |
Max. Write Data Block Length |
4 |
25 – 22 |
R |
Partial Blocks for Write Allowed |
1 |
21 |
R |
Reserved |
5 |
20 – 16 |
R |
File Format Group |
1 |
15 |
R |
Copy Flag (OTP) |
1 |
14 |
R/W |
Permanent Write Protection |
1 |
13 |
R/W |
Temporary Write Protection |
1 |
12 |
R/W |
File Format |
2 |
11 – 10 |
R |
Reserved |
2 |
9 – 8 |
R |
CRC |
7 |
7 – 1 |
R/W |
Not Used (Always ‘1’) |
1 |
0 |
|
SD Card Configuration Register (SCR) – 64 bits
Provides information pertaining to special configuration features. Set in register memory by the manufacturer at the time of manufacturing and cannot be changed thereafter.
Name |
Width (bits) |
Location |
Notes |
SCR_STRUCTURE |
4 |
63 – 60 |
SCR Version |
SD_SPEC |
4 |
59 – 56 |
Version 2.00: ‘2’ |
DATA_STAT_AFTER_ERASE |
1 |
55 |
True: ‘1’ |
SD_SECURITY |
3 |
54 – 52 |
Version 2.00: ‘3’
Version 3.00: ‘4’ |
SD_BUS_WIDTHS |
4 |
51 – 48 |
1 & 4 Bit Support: ‘0101’ |
SD_SPEC3 |
1 |
47 |
Version 3.0X: ‘1’ |
EX_SECURITY |
4 |
46-43 |
Extended Security |
SD_SPEC4 |
1 |
42 |
Version 4.XX: ‘1’ |
RESERVED |
6 |
41 – 36 |
Reserved |
CMD_SUPPORT |
4 |
35 – 32 |
CMD23 & CMD20 Support |
RESERVED |
32 |
31 – 0 |
For Manufacturer |
SD Status Register (SSR) – 512 bits
Contains status bits related to SD memory card proprietary features. In addition, may also hold application-specific data in the future.
Name |
Width (bits) |
Location |
DAT_BUS_WIDTH |
2 |
511 – 510 |
SECURED_MODE |
1 |
509 |
RESERVED |
8 |
508 – 502 |
RESERVED |
6 |
501 – 496 |
SD_CARD_TYPE |
16 |
495 – 480 |
SIZE_OF_PROTECTED_AREA |
32 |
479 – 448 |
SPEED_CLASS |
8 |
447 – 440 |
PERFORMANCE_MOVE |
8 |
439 – 432 |
AU_SIZE |
4 |
431 – 428 |
RESERVED |
4 |
427 – 424 |
ERASE_SIZE |
15 |
423 – 408 |
ERASE_TIMEOUT |
6 |
407 – 402 |
ERASE_OFFSET |
2 |
401 – 400 |
UHS_SPEED_GRADE |
4 |
399 – 396 |
UHS_AU_SIZE |
4 |
395 – 392 |
RESERVED |
80 |
391 – 312 |
RESERVED |
312 |
311 – 0 |
(CSR) – 32 bits
No information other than bit length available on this SD card register.
SD Card Manufacturer & OEM / Application IDs
The SD Association assigns the Manufacturer ID (MID) used as part of the Card Identification (CID) register contents. Some Secure Digital Card brands also manufacture their own SD cards. When this occurs, the Manufacturer ID (MID) and OEM / Application ID (OID) may match identically. Otherwise, the MID and OID will differ.
Company |
MID |
OEMID |
Brands |
Panasonic |
0x000001 |
PA |
Panasonic |
Toshiba |
0x000002 |
TM |
Toshiba |
SanDisk |
0x000003 |
SD or PT |
SanDisk |
Samsung |
0x00001b |
SM |
ProGrade, Samsung |
AData |
0x00001d |
AD |
AData |
Phison |
0x000027 |
PH |
AgfaPhoto, Delkin, Integral, Lexar, Patriot, PNY, Polaroid, Sony, Verbatim |
Lexar |
0x000028 |
BE |
Lexar, PNY, ProGrade |
Silicon Power |
0x000031 |
SP |
Silicon Power |
Kingston |
0x000041 |
42 |
Kingston |
Transcend |
0x000074 |
JE or J` |
Transcend |
Patriot |
0x000076 |
|
Patriot |
Sony |
0x000082 |
JT |
Gobe, Sony |
|
0x00009c |
SO |
Angelbird (V60), Hoodman |
|
0x00009c |
BE |
Angelbird (V90) |
Recommendations
To conclude, understanding the data contained within the registers built into SD cards and how to access that data can aid in the data recovery process of Secure Digital memory cards. For example, receiving an incomplete or incorrect Manufacturer ID (MID) or OEM / Application ID may indicate a physically damaged or malfunctioning memory card.
IT-SD Related Articles