SDMMC卡初始化及读写流程..docVIP

  • 5
  • 0
  • 约7.47千字
  • 约 10页
  • 2017-01-27 发布于重庆
  • 举报
SDMMC卡初始化及读写流程.

二、MMC/SD卡的模型和工作原理 PIN脚、SD卡总线、SD卡结构、SD卡寄存器、上电过程 SD卡寄存器: ?OCR:操作电压寄存器: 只读,32位 第31位:?表示卡上电的状态位? ?CID: 卡身份识别寄存器 只读 128位 生产厂商、产品ID,生产日期和串号等? ?CSD: 部分可写 128位 卡的容量、擦出扇区大小、读写最大数据块的大小、读操作的电流、电压等等 ?CSR: 卡配置寄存器 64位 数据位宽? ?RCA: 16位 相关的卡地址寄存器,卡识别过程中主控器和卡协商出来的一个地址? ?三、SD卡命令和响应格式 命令和相应格式 SD卡命令,命令类型,ACMD命令 响应类型、卡类型、卡状态转换表 命令的格式: 48位 起始位0 方向位(host to card: 1, card to host: 0) 内容 CRC7 结束位1·? 响应的格式:48位 或者136位? 卡命令: 命令的类型: ?bc: broadcast without Response?无响应的广播? ?bcr: broadcast with Response?有响应的广播? ?ac: Address(point-to-point) Command:?点对点,DATA0~DATA3数据线上无数据? ?adtc: Adress(point-to-point) Data Transfer Commands 点对点,DATA0~DATA3数据线上有数据 ?CMD0, CMD2, CMD3, CMD55, ACMD41 命令可能会导致卡的状态发生变化? ?响应类型: R1,R1b, R2, R3,R6(SD2.0扩展了R7)? ?扩展内容:? SPI工作模式: 要知道的特点:只支持一个卡,没有RCA,命令只是MMC/SD的基本的子集? ?SDHC:(支持2GB~32GB):理解CMD8的作用,命令格式和响应,了解CSDV2.0寄存器做了扩展   SDIO WIFI: 增加CMD52, CMD53?? CMD8可以通过重新定义先前保留的位,来扩展一些已经存在的命令的新功能。ACMD41扩大到支持高容量SD记忆卡的初始化 上面介绍了一个控制寄存器等信息? 绿色表示sd和mmc的不同点 对于计算卡的容量 要注意 对于sd 卡 可以参考Simplified_Physical_Layer_Spec v2.0.pdf手册上面有 对于mmc ?可以参考JESD84-A441.pdf 注意对于大卡的mmc 是通过发送8号命令 来获取ext_csd ?中的212到215位置来得到的 -S-------------------------------------------------------------------------- ----------------------------------------------------------------- static void sd_init(void) { int retries; u8 *resp; unsigned int cardaddr; / resp = mmc_cmd(2, 0, MSC_CMDAT_RESPONSE_R2, MSC_CMDAT_RESPONSE_R2); //serial_puts( ?SD carsd CID ?=R2= ?); ?serial_dump_data(resp, 15); resp = mmc_cmd(3, 0, MSC_CMDAT_RESPONSE_R1, MSC_CMDAT_RESPONSE_R1); cardaddr = (resp[4] 8) | resp[3]; ?//发生3命令 来或者rca rca = cardaddr 16; //serial_puts(rca=); serial_puts_hex(rca); resp = mmc_cmd(9, rca, MSC_CMDAT_RESPONSE_R2, MSC_CMDAT_RESPONSE_R2); sd2_0 = (resp[14] 0xc0) 6; //serial_puts(sd2_0=====); serial_puts_hex(sd2_0); //serial_puts( ?SD carsd CSD Register =R2= ); ?serial_dump_data(resp, 16); OUTREG16(A_MSC_CLKRT(0), 0); resp = mmc_cmd(7, rca, MSC_CMDAT_BUSY | MSC_CMDAT_RESPONSE_R1, MSC_CMDAT_RESPONSE_R1); resp = mmc_cmd(55,

文档评论(0)

1亿VIP精品文档

相关文档