一、SD初始化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 单