MMC卡除了接口中没有第8和第9脚外,其余与SD卡接口相同。
2.2 SD通信模式下的SD/MMC卡接口电路
S3C2410与SD/MMC卡座的接口电路如图1所示。接口电路原理图说明如下:
图1 SD/MMC卡SD模式接口电路原理图
CD/DAT3(第1脚)通过10KΩ电阻上拉到3.3V,使SD/MMC卡上电后自动进入SD模式。本接口中该引脚用于卡上电后的模式选择。
CLK(第5脚)为时钟输入信号,SDCMD(第2脚)为命令响应线,DATO-DAT;涕7,8,9引脚加上CD/DAT3组成4位数据线。
CD(第10脚)为卡插入检测信号。由于CD/DAT3引脚用于模式选择,故在卡座中增加该引脚作为卡检测信号。由于该引脚被上拉,当卡未插入卡座内时,从INT0/GPF0引脚读到的是高电平;当卡完全插入到卡座内时,卡座内部触点接地,则从INT0/GPF0读到的是低电平。通常通过检测该引脚的电平值来判断卡的动态拔插动作。
WP(第12脚)为卡座中增加的卡写保护检测信号.检测原理与CD脚相同。应当注意,SD/MMC卡并不检测该引脚,因此.卡写保护控制必须由主机实现。在设计SDfMMC卡座接12时。WP不是必需的。
为保证输入的稳定性.除VCC、VSS1和VSS2、GND外的引脚均通过10Kfl上拉到3.3V。
3 S3C2410与SD/MMC的通信实现
在SD/MMC卡与主机的通信过程中.卡一直是从设备.由主机发送命令来控制它。当S3C2410(下称主机)以查询方式获取卡已插入卡座.或者当卡插人卡座后通过CD引脚发送中断给主机后.主机首先应完成卡的初始化.之后才能对卡上的数据进行读写。
3.1 卡的初始化和识别
SD/MMC卡在上电后进入空闲状态(Idle State)。此时.主机需要按照一定的处理流程完成卡的初始化。该过程主要的工作就是卡的识别(Card Identification),包括识别卡的类型、读取卡上的信息、为卡分配地址等。卡的初始化处理流程见图2。
图2 卡初始化处理流程
在卡识别过程中.首先发送CMD8命令判断卡是否支持V2.00及以上协议。关键语句如下(语句中的SD_HC_SEND_IF_COND为CMD8命令描述的简写,其余同):
SdmmcSendCmd(SD_HC_SEND_IF_COND,0x1aa);
if((rSDIRSPO & Ox1aa) == 0x1aa ) {/* V2.00及以上协议卡 */
。..。..
}
此处CMD8命令参数中bit[7]一[0]为0/1交替的0blOl01010即0xaa.是推荐使用的检测模式;bit[1l]-[8]则用于检测卡能否在主机提供的电压下运行,Ob0001表示2.7-3.6V电压.其他取值目前不可用.若卡支持v2.00及以上协议.且能够在指定的电压下运行.则返回0xlaa。