SD卡初始化、读写流程及其相关CMD

文章详细介绍了SD卡的初始化流程,包括CMD8命令用于区分SD卡版本,ACMD41确认操作电压和SDHC支持,CMD2和CMD3获取CID和设置RCA,CMD9获取CSD寄存器信息,以及CMD7选中卡进行读写。接着,文章阐述了SD卡的读写操作,包括单块和连续块的读写,以及相关CMD命令的使用,如CMD16设置块大小,CMD17和CMD18进行读取,CMD24和CMD25进行写入。

一、SD初始化flow

sd_init_flow

		CMD8: 区分SD卡2.0,只有2.0及以后的卡才支持CMD8命令。
			  使用参数0x1aa,即告诉SD卡,主机供电为2.7~3.6V之间。如果SD卡支持CMD8,且支持该电压范围,则会通过CMD8的响应。
			  
		ACMD41: abbreviation: sd_send_op_cond
				发送(APP CMD)ACMD41之前,要先发送CMD55。
				进一步确认卡的操作电压范围; 并通过HCS位来告诉SD卡,主机是不是支持高容量卡(SDHC)。
				
		CMD2: 用于获取CID寄存器数据。
			  SD卡在收到CMD2后,将返回R2长响应(136位)。
			  其中包含128位有效数据(CID寄存器内容),存放在SDIO_RESP1~4等4个寄存器里面。通过读取这四个寄存器,就可以获得SD卡的CID信息。
			  
		CMD3: 用于设置RCA(卡相对地址,必须为非0)。
			  对于SD卡(非MMC卡),在收到CMD3后,将返回一个新的RCA给主机,方便主机寻址。
			  对于MMC卡,则不是由SD卡自动返回RCA,而是主机主动设置MMC卡的RCA,即通过CMD3带参数(高16位用于RCA设置),实现RCA设置。
			  
		CMD9:获得卡RCA之后,我们便可以发送CMD9(带RCA参数),获得SD卡的CSD寄存器内容(SD卡的容量和扇区大小等十分重要的信息)。
		
		CMD7:选中我们要操作的SD卡,即可开始对SD卡的读写操作了。

二、SD读写操作

2.1 读操作

2.1.1 单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值