FPGA_SD_SPI初始化、读步骤和写步骤

SD卡初始化与读写操作详解
本文详细介绍了SD卡的初始化步骤,包括如何区分不同版本的SD卡,并提供了具体的命令序列。此外,还介绍了SD卡的读写操作流程,包括发送命令、接收数据和发送数据的具体步骤。

 一、SD卡初始化步骤

  1、上电后延时至少74Clock,等待SD卡内部操作完成。

  2、片选CS低电平选中SD卡。

  3、发送CMD0( {8'h40, 8'h00, 8'h00, 8'h00, 8'h00, 8'h95} ),需要返回0x01,进入Idle状态。

  4、为了区别SD卡是2.0还是1.0,或者是MMC卡,这里根据协议向上兼容的,首先发送只有SD2.0才有的命令CMD8( CMD8= {8'h48, 8'h00, 8'h00, 8'h01, 8'haa, 8'h87} ),

  如果CMD8返回无错误,则初步判断为2.0卡,进一步发送命令循环发送CMD55 (8'h77, 8'h00, 8'h00, 8'h00, 8'h00, 8'hff)+ ACMD41 ( {8'h69, 8'h40, 8'h00, 8'h00, 8'h00, 8'hff} ),直到返回0x00,确定是SD2.0卡。

  5、如果CMD8返回错误则判断为1.0卡或者MMC卡,循环发送CMD55 + ACMD41,返回无错误,则为SD1.0卡,到此SD1.0卡初始化成功,如果在一定的循环次数下,返回为错误,则进一步发送CMD1进行初始化,

  如果返回无错误,则确定是MMC卡,如果在一定的次数下,返回无错误,则不能识别该卡,初始化结束。

  6、CS拉高。

 二、SD卡读步骤

  1、发送CMD17( {8'h51, 8'h00, 8'h00, 8'h00, 8'h00, 8'hff } )(单块)或CMD18(多块)读命令,返回0x00

  2、接受数据开始令牌0xfe(或者0xfc) + 正式数据512Bytes + CRC校验2Bytes默认正式传输的数据长度是512Bytes,可用CMD16设置块长度。

  三、SD卡写步骤

  1、发送CMD24( {8'h58, 8'h00, 8'h00, 8'h00, 8'h00, 8'hff} )(单块)或者CMD25(多块)写命令,返回0x00。

  2、发送数据开始令牌0xfe(或者 0xfc) + 正式数据512Bytes + CRC校验2Bytes。

 

转载于:https://www.cnblogs.com/VerilogHDL/p/5449441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值