SD/MMC 内部寄存器及上电时序

SD/MMC 内部寄存器

SD Card Registers

Name    Width                                         Description

CID      128   Card identification number: individual card number for identification.

RCA      16    Relative card address

CSD      128   Card specific data: information about the card operation conditions.

SCR      64    SD Configuration Register: information about the SD Card’s special features capabilities.

OCR      32    Operation Condition Register

SD 卡寄存器

名称   宽度     描述
CID    128  卡的识别码:用于识别单个卡的编号。
RCA  16    卡的相对地址(这个寄存器在 SPI 模式下不可用)
CSD  128  卡的特性数据:是关于这个卡工作条件的相关信息。
SCR   64   SD配置寄存器:关于这个SD卡的特殊功能的特性信息。
OCR   32   工作条件寄存器(电压)

Card Identification Register(CID)

这个 CID 寄存器有 16 字节长,如表 3-9 所示,它包含了本卡的特别识别码(ID 号)。 这些信息是在卡的生产期间被
编程(烧录),主控制器不 能修改它们的内容。 注意:SD卡的 CID 寄存器和 MMC 卡的 CID 寄存器在记录结构上是不同的。

Name

Type

Width

CID Slice

Comments

CID Value

Manufacturer ID (MID) Binary 8 [127:120] 由“SD卡协会“控制并且分配的制造商ID号 0x03
OEM/Application ID (OID) ASCII 16 [119:104] 用于辨认卡的OEM 和/或 卡的内容ID号 ‘SD’
Product Name(PNM) ASCII 40 [103:64] SD128, SD064, SD032, SD016, SD008  
Product Revision (PRV) BCD 8 [63:56] 两个二进制编码的十进制数字(BCD) 产品修订号
Serial Number (PSN) Binary 32 [55:24] 32 位无符号整数 产品序列号
Reserved   4 [23:20] 保留  
Manufacture Date Code(MDT) BCD 12 [19:8] 生产日期格式:2001年4月 = 0x014  
CRC7 checksum(CRC) Binary 7 [7:1] CRC 校验值 CRC7
Reserved,always ‘1’   1 [0:0] 这部分没有使用,值始终为“1”  

 

CRC Calculation: G(x) = x7+3+1
M(x) = (MID-MSB)*x119 + ... + (CIN-LSB)*x0
CRC[6...0] = Remainder[(M(x)*x7)/G(x)]

Card Specific Data Register(CSD)

此卡的描述数据寄存器(CSD)包含了访问该卡数据时的必要配置信息。

“cell type”栏内定义了CSD的区域是只读(R)、一次编程(R/W)或可擦除的(R/W/E)[“R/W”是指可以多次擦写,
“R/W(1)”是指只能一次写入,不可擦除]。该张表中所显示的值都对应真实的CSD结构中的各自区域和编码。CSD区域
的样式是依照栏标记(和一个复选标记√)的样式。注意SD卡内的 CSD寄存器和MultiMedia卡的CSD寄存器有着不同的结构。

 http://www.cnblogs.com/Efronc

Name

Field

Width

Cell Type

CSD-Slice

CSD Value

CSD Code

CSD structure CSD_STRUCTURE 2 R [127:126] 1.0 00b
Reserved - 6 R [125:120] - 000000b
data read access time TAAC 8 R [119:112] 1.5msec 00100110b
同上in CLK cycles NSAC 8 R [111:104] 0 00000000b
max.data transfer rate TRAN_SPEEN 8 R [103:96] 25MHz 00110010b
card command classes CCC 12 R [95:84] ALL 1F5h
max.read data block length READ_BL_LEN 4 R [83:80] 512Byte 1001b
partial blocks for read allowed READ_BL_PARTIAL 1 R [79:79] YES 1b
write block misalignment WRITE_BLK_MISALIGN 1 R [78:78] NO 0b
read block misalignment READ_BLK_MISALIGN 1 R [77:77] NO 0b
DSR implemented DSR_IMP 1 R [76:76] NO 0b
Reserved - 2 R [75:74] - 00b
device size C_SIZE 12 R [73:62] 如下 -
max.read current @VDD min VDD_R_CURR_MIN 3 R [61:59] 100mA 111b
max.read current @VDD max VDD_R_CURR_MAX 3 R [58:56] 80mA 110b
max.wirte current @VDD min VDD_W_CURR_min 3 R [55:53] 100mA 111b
max.write current @VDD max VDD_W_CURR_MAX 3 R [52:50] 80mA 110b
device size multiplier C_SIZE_MULT 3 R [49:47] 如下 -
erase single block enable ERASE_BLK_EN 1 R [46:46] YES 1b
erase sector size SECTOR_SIZE 7 R [45:39] 32blocks 00111111b
write protect group size WP_GRP_SIZE 7 R [38:32] 128sectors 11111111b
write protect group enable WP_GRP_EN 1 R [31:31] YES 1b
Rserved for MultiMediaCard   2 R [30:29] - 00b
write speed factor R2W_FACTOR 3 R [28:26] X16 100b
max.write data block length WRITE_BL_LEN 4 R [25:22] 512Byte 1001b
Reserved - 5 R [20:16] - 0000b
file format group FILE_FORMAT_GRP 1 R/W(1) [15:15] 0 0b
copy flag(OTP) COPY 1 R/W(1) [14:14] Not Original 1b
permanent write protection PERM_WRITE_PROTECT 1 R/W(1) [13:13] Not Protected 0b
temporary write protection TMP_WRITE_PROTECT 1 R/W [12:12] Not Protected 0b
File format FILE_FORMAT 2 R/W(1) [11:10] HD w/partition 00b
Reserved - 2 R/W [9:8] - 00b
CRChttp://www.cnblogs.com/Efronc CRC 7 R/W [7:1] - CRC7
not used, always’1’ - 1 - [0:0] - 1b

  SD/MMC 内部寄存器及上电时序_第1张图片 

 SD/MMC 内部寄存器及上电时序_第2张图片

CSD_STRUCTURE :描述 CSD 结构的版本。00:CSD version No. 1.0 其他保留
TAAC 定义这个异步部分的读操作时间(相对于SD 卡的时钟(CLK))。

TAAC Bit Position                         Code                                                                                    备注
         2:0            time unit 0=1ns, 1=10ns, 2=100ns, 3=1μs, 4=10μs, 5=100μs, 6=1ms, 7=10ms        时间单位
         6:3            time value 0=reserved, 1=1.0, 2=1.2, 3=1.3, 4=1.5, 5=2.0, 6=2.5, 7=3.0, 8=3.5,    时间数值
                                        9=4.0, A=4.5, B=5.0, C=5.5, D=6.0, E=7.0, F=8.0
         7               Reserved                                                                                                    保留

NSAC 定义了时钟的相关特性在最差情况下的数据访问时间。它的单位是100 个时钟周期。所以,该时钟的相关部分所确定的读访问时间的最大值是25.5K
(255*100)个时钟周期。

      min [ { { ( TAAC*f ) + (NSAC*100)}*1/8 }, { (100ms * f ) * 1/8 } ] 
      where units = (8 clocks) and “ f ” is the clock frequency.
TRAN_SPEED定义最大的数据传送速率。
 

TRAN_SPEED Bit                                               Code
      2:0                         transfer rate unit 0 = 100kbit / s, 1 = 1Mbit / s, 2 = 10Mbit / s, 3 = 100Mbit / s, 4... 7 = reserved
      6:3                         time value 0=reserved, 1=1.0, 2=1.2, 3=1.3, 4=1.5, 5=2.0, 6=2.5, 7=3.0, 8=3.5, 9=4.0, A=4.5,
                                                  B=5.0, C=5.5, D=6.0, E=7.0, F=8.0

 

CCC 是该卡命令规定的子集(命令类别),定义了这个卡所能支持的命令类别。在CCC 中的一个位的值为“1”则意味着对应的命令类别是可以支持的。

READ_BL_LEN 是最大的可读取数据块长度是用2^READ_BL_LEN 来计算的。所以,这个最大块长度是在512...2048 字节的范围内。注意:在SD 卡中,
                     WRITE_BL_LEN 总是等于 READ_BL_LEN 的。

READ_BL_PARTIAL 在 SD 卡中总是为1。块的部分读取在SD 卡上总是被允许的。它意味着可以使用适当小的块。块最小可以小为1 个字节。
                             READ_BL_PARTIAL = 0 意味着块大小只能使用READ_BL_LEN 的大小来做数据传送。
                             READ_BL_PARTIAL = 1 意味着可以使用小的块。最小的块将等于最小的地址单元(一个字节)。

WRITE_BLK_MISALIGN 定义是否可以用一条写入命令来涵盖存储器设备上多于一个物理块。这个块的大小定义在WRITE_BL_LEN 中。
                             WRITE_BLK_MISALIGN = 0 表示跨过物理块的界线是不允许的。
                             WRITE_BLK_MISALIGN = 1 表示跨过物理块的界线是被允许的。

READ_BLK_MISALIGN 定义是否可以用一条读取命令来涵盖存储器设备上多于一个物理块。这个块的大小定义在READ_BL_LEN 中。
                             READ_BLK_MISALIGN = 0 表示跨过物理块的界线是不允许的。
                             READ_BLK_MISALIGN = 1 表示跨过物理块的界线是被允许的。

DSR_IMP 定义卡上是否集成了可配置的驱动级。如果被设置了,一个驱动级寄存器(DSR)必须是可用的。(DSR_IMP = 0 没有可用的SDR

C_SIZE(设备大小) 这个参数用于计算卡的容量(不包括安全保护区域)。卡的存储容量是通过C_SIZE、C_SIZE_MULT 和READ_BL_LEN 来计算
            的,请看这个公式:
            存储器容量 = BLOCKNR * BLOCK_LEN = (C_SIZE+1)*2^(C_SIZE_MULT+2)*2^(READ_BL_LEN)
            而那些参数是:
            BLOCKNR = (C_SIZE+1) * MULT
            MULT = 2^(C_SIZE_MULT+2)
            BLOCK_LEN = 2^(READ_BL_LEN)
           因此,最大的容量可以编码为:4096*512*2048 = 4 GByte。举例来说:4 MByte 的卡BLOCK_LEN = 512 可以编码为C_SIZE_MULT = 0 
           和C_SIZE = 2047。

          READ_BL_LEN 是最大的可读取数据块长度是用2^READ_BL_LEN 来计算的。所以,这个最大块长度是在512...2048 字节的范围内。注意:在SD 卡中,
          WRITE_BL_LEN 总是等于 READ_BL_LEN 的。


VDD_R_CURR_MIN, VDD_W_CURR_MIN
 是在最小限度的电压供应下,读取和写入操作所需求的最大电流值。 
VDD_R_CURR_MAX, VDD_W_CURR_MAX 是在最大电压供应下,读取和写入操作需求的最大电流值。
C_SIZE_MULT (设备大小的乘数) 这个参数用来表示MULT,用于计算设备的容量大小(参考“C_SIZE”)。MULT 定义为2^(C_SIZE_MULT+2)。

ERASE_BLK_EN 定义擦除一个可写块(参见WRITE_BL_LEN)是否为允许的(即除了下面给出的SECTOR_SIZE 之外)。
                       ERASE_BLK_EN = 0 主控制器只能擦除一个SECTOR_SIZE 单元。
                       ERASE_BLK_EN = 1 主控制器可以擦除一个SECTOR_SIZE 单元或一个WRITE_BLK_LEN 单元。

SECTOR_SIZE 这个可擦除扇区的大小。这个寄存器是一个7 位的二进制编码值,定义了可写块的数量(参阅WRITE_BL_LEN)。实际大小是这个数量加上1。
                     一个0 意味着 1 个可写块,127 是128 个可写块。

WP_GRP_SIZE 这个写保护组的大小。这个寄存器是一个7 位的二进制编码值,定义可擦除组的数量(参阅SECTOR_SIZE)。实际大小是这个数量加上1。
                      一个0 意味着 1 个可擦除组,127 是128 个可擦除组。
WP_GRP_ENABLE 一个“0”表示没有写保护组存在,“1”则相反。
R2W_FACTOR 将典型的块编程(烧录)时间定义为读取访问时间的倍数.
 

    R2W_FACTOR     Multiples of Read Access Time           备注
            0              1
            1              2 (write half as fast as read)  半个快速写和读取一样
            2              4
            3              8
            4             16
            5             32
          6, 7           Reserved                                        保留

WRITE_BL_LEN 这个最大的写入数据块长度是用2^WRITE_BL_LEN 来计算的。这个最大的块长度的范围可以是512 到2048 字节。当写入块的长度设定为
                       512 时总是被支持的(即SD 卡系统的默认值)。注意:在SD 卡中,WRITE_BL_LEN 总是等于READ_BL_LEN 的。

WRITE_BL_PARTIAL 定义了“块写入”命令是否能用于不完整的块。
               WRITE_BL_PARTIAL = 0 意味着块的大小只能是 WRITE_BL_LEN,和它相关联的部分(partial)必须是512 个单元的块,能用于块索引数据的写入。
               WRITE_BL_PARTIAL = 1 意味着设置很小的块也能使用。最小的块大小是 1 个字节。

FILE_FORMAT_GROUP 指示被选中组件的文件格式。这个区域是ROM,只能读取.

FILE_FORMAT_GRP   FILE_FORMAT                                  Type                                              备注
              0                   0              Hard disk-like file system with partition table               有分配表,类似硬盘的文件系统
              0                   1  DOS FAT (floppy-like) with boot sector only (no partition table) 只有启动扇区DOS FAT(类似软盘)(没有分配表)
              0                   2              Universal File Format                                              通用文件格式
              0                   3              Others/Unknown                                                    其它的/未知的
              1              0, 1, 2, 3        Reserved                                                              保留

COPY 这个位标志此卡是否为原创(0)或非原创(1)。一旦设置为非原创,这个位不能重置成原创。“原创”和“非原创”的定义是由应用程序来确定和
         修改的,并非卡的特性。

PERM_WRITE_PROTECT 永久地保护该卡上除了安全保护区域内的所有内容,禁止改写或擦除(该卡所有的写入和擦除命令都无效了)。它的缺省值为“0”,
         也就是没有永久性地写入保护。这个特性位只能写入一次,因此它可以用来将SD 卡设置成只读的ROM,而使用者无法改写其中的内容。

TMP_WRITE_PROTECT 临时性地保护该卡上除了安全保护区域内的所有内容,后期可以改写或擦除(该卡所有的写入和擦除命令是临时失效)。该位可以被
         设置和重置。它的缺省值为“0”,也就是没有写入保护。

FILE_FORMAT 说明了该卡上的文件格式。这个区域是ROM,只能读取。定义同FILE_FORMAT_GROUP

CRC 这个 CRC 区域带有CSD 内容的校验和。这个校验和在主控制器对CSD 做任何修改后肯定会重新计算。缺省值符合CSD 初始化时候的内容。

SD card Configuration Register (SCR)

除了 CSD 寄存器外,还有一个配置寄存器的名字是:SD 卡配置寄存器(SCR)。SCR 提供了SD 卡的一些特殊特性在这张卡内。它的大小是64 位。这个
寄存器内容由制造商在生产厂内设置。

Description Field Width Cell Type SCR  
  4 R   0
4 R 0
1 R  0 0
3 R 2
4 R  5
- 16 R  0 0
- 32 R  0 0

Description

Field

Width

Cell Type

SCR Slice

SCR Value

SCR Code

SCR Structure SCR_STRUCTURE 4 R [63:60] V1.0 0
SD Card—Spec. Version SD_SPEC 4 R [59:56] V1.01 0
data_status_after erases DATA_STAT_AFTER_ERASE 1 R [55:55] 0 0
SD Security Support SD_SECURITY 3 R [54:52] Prot 2, Spec V1.01 2
DAT Bus widths supported SD_BUS_WIDTHS 4 R [51:48] 1 & 4 5
Reserved - 1 R [47:32] 0 0
Reserved for manufacturer usage - 3 R [31:0] 0 0

SCR_STRUCTURE 关于SD卡内的物理级说明中SCR结构的版本号。

SD_SPEC描述这张SD卡在物理级上所支持的说明版本。

DATA_STAT_AFTER_ERASE 定义了数据在擦除后的状态。是“0”或“1”中的任何一个(这要依赖卡的供应商)。

SD_SECURITY 描述了该卡所支持的安全算法。0:无 1:安全协议1.0 安全说明版本 0.96 2:安全协议2.0 安全说明版本 1.0 - 1.01。其他保留

SD_BUS_WIDTHS描述该卡所支持的所有数据总线宽度。从SD 卡支持最少1 位或4 位宽度这两种总线模式开始,任何SD 卡都将最少要设置0 和2 这两个位
                       (即SD_BUS_WIDTH = 0101 )。1.4位保留


Operating Conditions Register (OCR)

这个 32 位的工作条件寄存器储存了卡的 VDD 电压轮廓图。任何标准的 SD 卡主控制器可以使用 2V 至 3.6V 的工作电压
来让 SD 卡能执行这个电压识别操作(CMD1)。而访问存储器的阵列操作无论如何都需要 2.7V 至 3.6V 的工作电压。
OCR 寄存器显示了在访问卡的数据时所需要的电压范围。OCR 寄存器的结构描述:

电压

电压

0 Reserved 16 2.8-2.9
1 Reserved 17 2.9-3.0
2 Reserved 18 3.0-3.1
3 Reserved 19 3.1-3.2
4 1.6-1.7 20 3.2-3.3
5 1.7-1.8 21 3.3-3.4
6 1.8-1.9 22 3.4-3.5
7 1.9-2.0 23 3.5-3.6
8 2.0-2.1 24 Reserved
9 2.1-2.2 25 Reserved
10 2.2-2.3 26 Reserved
11 2.3-2.4 27 Reserved
12 2.4-2.5 28 Reserved
13 2.5-2.6 29 Reserved
14 2.6-2.7 30 Reserved
15 2.7-2.8 31 上电时的状态位(0:忙)


SD/MMC 接口及上电时序

SD需要高速读写,同时也要使手持等嵌入式设备能方便使用,特设有两个访问接口中:SD模式接口SPI接口SD卡在上电初期,卡主控通过检测引脚1(DAT3)来决定使用SD模式还是SPI模式。当此脚接50KOhm上拉电阻时,卡进入SD模式;当此脚为低电平,卡则工作于SPI模式。

 SPI Bus Mode Pad Definition

Pin        Name            Type1                 SPI Description

1          CS             I               Chip Select (Active low)

2        DataIn                 I               Host to Card Commands and Data

3         VSS                  S               Supply Voltage Ground(can be canceled if there are only 8 pins)

4         VDD                  S               Supply Voltage

5         CLK                   I                Clock

6         VSS2                S                Supply Voltage Ground

7       DataOut              O                Card to Host Data and Status

8         RSV                 I                  Reserved

9         RSV                 I                  Reserved

 NOTES:

1)  The ‘ RSV ’ pins are floating inputs. It is the responsibility of the host designer to connect external
     pull up resistors to those lines. Otherwise non-expected high current consumption may occur due to 
     the floating inputs.

2)Hot insertion and removal are allowed. The SanDisk SD Card will not be damaged by inserting or removing
     it into the SD bus even when the power is up:  
          >>The inserted card will be properly reset also when CLK carries a clock frequency fPP.

          >>Data transfer failures induced by removal/insertion should be detected by the bus master using
              the CRC codes that suffix every  bus transaction.

3)Power Protection

         >>Cards can be inserted into or removed from the bus without damage. If one of the supply pins
             (VDD or VSS) is not connected properly, then the current is drawn through a data line to supply the card.

         >>Data transfer operations are protected by CRC codes; therefore, any bit changes induced by card
              insertion and removal can be detected by the SD bus master. The inserted card must be properly 
              reset also when CLK carries a clock frequency fpp. If the hot insertion feature is implemented in the host,
              than the host has to withstand a shortcut between VDD and VSS without damage.

部分翻译:

2)热拔插是被允许的。当电源就绪时,SD 卡甚至不会由于在 SD 总线上拔插而损坏:
     >>当 CLK 上运载一个时钟频率 fPP 时,这个插入的卡将会被正确地复位(重置)。
     >>数据传送失败可能是由拔插动作导致的,应该由总线管理器在每次总线传送的尾部加上 CRC 编码来侦测
        (用于确认每次的传送是否成功)。
3)电源保护

     >>卡可以在总线上拔插而不会损坏。如果一条电源供应引脚(VDD 或 VSS)没能正确连接上,则电流将通过数据线
          汲取而供应到卡上。

     >>数据传送操作是通过 CRC 编码来保护的,因此,由拔插卡引起的任何位的变动将会被 SD 总线管理器侦测到。
         当 CLK 上运载一个时钟频率 fPP 时,这个插入的卡必须要正确地复位(重置)。如果这个热插入特性是在主机
         内实现的,则该主机要经得起 VDD 和 VSS 之间短路而不损坏。

上电时序如图:(SPI模式不支持CMD15,详见SD/MMC card 命令)

 

 SD/MMC 内部寄存器及上电时序_第3张图片

 

你可能感兴趣的:(SD/MMC 内部寄存器及上电时序)