sd/mmc的cmd命令

SD/MMC 初始化流程

步骤是:1)配置时钟,慢速一般为400K,设置工作模式

        2)发送CMD0,进入空闲态,该指令没有反馈

      3)发送CMD8,如果有反应,CRC值与发送的值相同,说明该卡兼容SD2.0协议。

        4)发送CMD55+ACMD41,判断SD卡的上电是否正确,短反馈成功说明该卡为SD卡(短反馈第31位置1为HC卡),否则发送CMD0,有反应说明是MMC卡

        5)发送CMD2,验证SD卡是否接入,长反馈(CID)

        6)发送CMD3,读取SD卡的RCA(地址),短反馈

      7)发送CMD9,读取CSD寄存器获取卡的相关信息

        8)发送CMD7,使能SD卡

        9)配置高速时钟,准备数据传输,一般20M~25M

      10)发送CMD55+ACMD51读取SCR寄存器,SD卡可以通过该值获得位宽,如果是MMC卡则需要使用主线测试来确定卡的位宽。

      11)SD卡发送CMD55+ACMD6配置为4bit数据传输模式(根据SCR读出来的值确定),MMC卡发送CMD6来设置位宽

      12)发送CMD7,使能SD卡,使其进入传输状态),接着发送CMD16设置块大小(根据前面读取的CSD信息确定)。

      13) 把命令参数设置为0,再次发送CMD7,取消选中所有卡。

 

SD 读操作(注意:标准卡和HC卡最大区别在于单块或者多块读写时命令的起始地址参数对齐,标准卡是以字节计算为起始地址的,而HC则按块地址作为起始地址.例如,一般情况下从CSD获取的卡信息中,块长度都为512字节大小,那么要访问第一个512字节时,对于标准卡,命令的参数直接写512,而HC卡则写1.另外,标准卡所使用的SD协议有可能是1.0也有可能是2.0,但是HC的卡就一定是2.0的,大部分的SD卡都是2.0的,而最新的XC卡则使用3.0的协议.)

步骤是:1)发送CMD7,以卡的相对地址为参数,选中该卡,并使其进入Tran状态

        2)发送CMD17/CMD18,命令的参数需要根据初始化时所判断的卡类型填写,按字节或按块.

      3)循环读取数据

        4)发送CMD12,强制停止所有传输.

        5)发送CMD7,以0作为命令参数,取消所有选中.

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值