SPI MODE:

1.设置SPI时钟为低速0~400khz-------------SD卡初始化只能在低速模式下进行
2.发送至少74个周期的时钟信号-------------建议适当多发送一些(怕有些电路有延时)
3.发送SD卡命令CMD0-------------------------使在SD卡收到复位命令时,CS为有效电平(低电平),则SD卡切换到SPI模式,进入IDLE状态
4.发送CMD8(SD2.0)--------针对SD2.0进行鉴别同时读取后续4个字节返回值,判断其是否支持工作电压(例如:2.7~3.6v支持则为0x01aa)
5.发送CMD55+ACMD41(SD2.0)-----检测初始化是否完成
6.发送CMD58------------------------对SD2.0版本进一步确认SD卡型号(SDHC为扇区块寻址,普通SD卡为字节寻址)
7.发送CMD55+ACMD41(SD1.0)----------------检测返回值进行判断为SD1.0或MMC卡
8.发送CMD55+ACMD41(SD1.0)----------------检测初始化是否完成
9.发送CMD1(MMC)--------------------------------针对MMC卡进行初始化
10.发送CMD16-------------------------------------设置SD卡扇区大小(默认为512字节)
设置SPI时钟为高速,最大为25Mhz,初始化完成

1.设置SPI时钟为低速0~400khz-------------SD卡初始化只能在低速模式下进行
2.发送至少74个周期的时钟信号-------------建议适当多发送一些(怕有些电路有延时)
3.发送SD卡命令CMD0-------------------------使在SD卡收到复位命令时,CS为有效电平(低电平),则SD卡切换到SPI模式,进入IDLE状态
4.发送CMD8(SD2.0)--------针对SD2.0进行鉴别同时读取后续4个字节返回值,判断其是否支持工作电压(例如:2.7~3.6v支持则为0x01aa)
5.发送CMD55+ACMD41(SD2.0)-----检测初始化是否完成
6.发送CMD58------------------------对SD2.0版本进一步确认SD卡型号(SDHC为扇区块寻址,普通SD卡为字节寻址)
7.发送CMD55+ACMD41(SD1.0)----------------检测返回值进行判断为SD1.0或MMC卡
8.发送CMD55+ACMD41(SD1.0)----------------检测初始化是否完成
9.发送CMD1(MMC)--------------------------------针对MMC卡进行初始化
10.发送CMD16-------------------------------------设置SD卡扇区大小(默认为512字节)
设置SPI时钟为高速,最大为25Mhz,初始化完成