(1)MMC卡分共有7个触点(引脚),分为两种操作模式,分别为MMC模式、与SD模式,两种模式对引脚的定义是不同的。
(2)SD卡分共有9个触点(引脚),多余的2个引脚为数据线,但使用与MMC卡兼容的模式时,这两个多余的引脚没有起到作用。它的应用分为一线和四线模式。
(3)MMC/SD卡说明:由于SD兼容MMC模式,为叙述方便,本文档主要针对MMC加以说明。MMC卡有多种信息,可通过相关命令读出,通过这些信息我们可以知道卡的制造商、生产日期、卡的技术参数等信息。这些信息分别为OCR、CID、CSD, 分述如下:
A,OCR:32位长,为只读信息,各位表示卡支持的电压范围,各位意义如下:
OCR位 位的意义
D31 Card power up status bit (Busy).
D[30-24] reserved
D23 3.5 - 3.6V
D22 3.4 - 3.5V
D21 3.3 - 3.4V
D20 3.2 - 3.3V
D19 3.1 - 3.2V
D18 3.0 - 3.1V
D17 2.9 - 3.0V
D16 2.8 - 2.9V
D15 2.7 - 2.8V
D14 2.6 - 2.7V
D13 2.5 - 2.6V
D12 2.4 - 2.5V
D11 2.3 - 2.4V
D10 2.2 - 2.3V
D9 2.1 - 2.2V
D8 2.0 - 2.1V
D[7-0] Reserved
B,CID:信息长128位,为只读信息,包含如下信息:
Name Field Width CID-slice
Manufacturer ID MID 8 [127:120]
OEM/Application ID OID 16 [119:104]
Product name PNM 48 [103:56]
Product revision PRV 8 [55:48]
Product serial number PSN 32 [47:16]
Manufacturing date MDT 8 [15:8]
CRC checksum CRC 7 [7:1]
not used, always 1 — 1 [0:0]
C,CSD:信息长128位,部分信息可改写,主要包含卡的大小、扇区大小、读写时间等技术参数方面的信息。如需了解各段的详细说明,请参阅MMC Specification, 或者某类卡的参数值。
(4)一次SD卡识别错误的解决
通常情况下,板上SD卡座通路的数据线和CMD、CLK线都要有上拉的电压,一般是3.3V。如果没有这个电压或者电压过低,则会出现-110错误,出现的trace是:
mmc_sd_init_card() failure (err = -110)
error -110 whilst initialising SD card
导致的结果则是SD卡识别不到。
在不支持热插拔的手机里面,AP上额外做CD的PIN脚是空接还是接地,对结果都是没有影响的。只要在程序中屏蔽掉CD使能检测和SD可移除功能即可。
(5)关于SD卡座电压
出现一次BUG:表现在插入SD卡后识别正常,不插SD卡的时候测得供电VDD是0。这里出现一个疑问就是不插SD卡时,卡座到底带电还是不带电。这个可以由初始化来设定,出于降低功耗的目的,可以设定成只有检测到SD卡后才打开供电,不接SD卡时不供电。