实 用 文 档1 第十九章MMC/SD/SDIO主控制器概述S3C2410 (S3C2440 )(二者均为 ARM 不是单纯的 SD 控制器而是ARM 内部集成的)的SD 主控制器支持 MMC/SD卡和 SDIO 设备特性SD 存储卡规格 1.0/MMC规格 2.11 兼容SDIO 卡规格 1.0 兼容16 字(64 字节)FIFO(深度 16) 用于 Tx/Rx 40 位命令寄存器 (SDICARG[31:0]+SDICCON[7:0]) 136 位响应寄存器 (SDIRSPn[127:0]+ SDICSTA[7:0]) 8 位预定标逻辑CRC7 和 CRC16 发生器表决、中断和 DMA 数据传输模式 (字或字节传输 ) 1 位/4 位(宽总线 )模式和块 / 流模式切换支持SD/SDIO 模式下支持高达25MHz 的数据传输速度MMC 模式下支持高达 20MHz 的数据传输速度方框图实 用 文 档2 图 19-1 方框图SDI 操作一根串行时钟信号线与5 根数据线同步移位和采样信息,Making the appropriate bit settings to the SDIPRE register depends on the transmission frequency,可以修改频率以调整波特率数据寄存器的值。编程过程(通用)SDI 模块可以根据如下基本步骤编程:设置 SDICON ,适当地配置时钟和中断设置 SDIPRE 合适的值等待 74 个 SDCLK 时钟周期以初始化存储卡实 用 文 档3 CMD 路径编程向 SDICARG 寄存器写入 32 位命令设置 SDICCON[8] ,确定命令类型和开始命令当 SDICSTA 置位时,确认 SDI 命令操作结束如果命令类型是无应答,标记是SDICSTA[11] 如果命令类型是有应答,标记是SDICSTA[9] 通过向 SDICSTA 寄存器中的标记位写1 来清零相应标记数据路径编程向 SDIDTIMER 寄存器写入 timeout period 向 SDIBSIZE 寄存器写入块大小 (块长度,一般 0x200 字节) 确定块的模式:宽总线、DMA 等。设置 SDIDCON 寄存器以启动数据传输检查 SDIFSTA(available 、半满、空 ),如果 Tx FIFO 是 available 则向 SDIDAT 寄存器中写入 Tx-data 。检查 SDIFSTA(available 、半满、空 ),如果 Rx FIFO 是 available则从 SDIDAT 寄存器中读取 Rx-data 。当数据传输结束标记SDIDSTA[4] 置位时,确认 SDI 数据操作结束。通过向 SDICSTA 寄存器中的标记位写1 来清零相应标记