SDHC卡写单块和读单块

这篇博客详细介绍了如何对SDHC卡进行单块读写操作。在初始化后,通过CMD17和CMD24命令进行读写,块大小固定为512字节。写数据时,需发送CMD24命令,附带扇区地址,接着发送数据和CRC校验码。读数据的流程类似,读取CMD17的返回值后,等待起始字节0xFE,然后读取512字节数据和CRC校验码。操作过程中,遵循特定的协议和标志位检测,确保数据传输的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化完成以后,SD卡进入读写就绪状态,可以通过cmd17,cmd24进行单块的读写操作,块的默认大小为512字节标准SD卡我们可以认为设置块的字节大小,但是最大不能超过512byte。但是高容量的SD卡(SDHC)块的大小只能为512字节,这个设置本身是不用调整的,如过有兴趣可以参考一下CMD16这个命令。

写数据:


CMD24:0x58,0xHH,0xHH,0xHH,0xHH,0xff.0x58不解释,紧跟的4byte是传说中的data address,这个地方官方的DATASHEET写的很省略,打开winhex,找到SD卡打开,单击一个文件,程序会自动跳到文件对应的数据的首地址,左下角对应的数字就是扇区号,号,把这个号记录下来,如果我们想往该文件写数据,那刚才的扇区号就是对应的首地址,它是10进制的,因此要转化一下16进制,把转换好的数从高到底,由左向右的写进CMD24的4个参数中。0xff,是CRC校验码和结束位1,也不解释了。下面看时序:

由图可知write_block有这么几步:

1、发送CMD24命令,将要写的扇区地址带入参数,同时在DATA_OUT上接收response,返回值内容在下面说明。

2、发送512字节的数据,如果cmd返回值0x00正确的话,就可以发送512个字节的数据了,要注意的是紧挨着512

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值