SD卡 SPI模式操作(2)读操作

原文(本人转载):SD卡 SPI模式操作(2)读操作
作者是初学者,水平有限,本文仅作为个人学习笔记使用,不能保证内容的正确性。部分资料来源于网络,参考了SD卡协议2.0手册等资料,如果有歧义,可以与作者联系。

目录

SD卡 SPI模式操作(1)初始化SD卡
SD卡 SPI模式操作(2)读操作
SD卡 SPI模式操作(3)写操作

简介

SD卡在SPI模式下,初始化完成之后就可以进行块操作,如读操作。SD卡有两种读取数据块的方式:

  • 单次读数据块
  • 连续读数据块

其中,每次读取的数据块大小,数据块的长度由CMD16( SET_BLOCKLEN)命令设置。高容量SD卡的块大小固定为512字节,因此起始地址应与块边界对齐。

单次读数据块

命令号参数响应名称描述
CMD17[31:0]:数据地址,单位:字节(SDSC),单位:512字节(SDHC)R1READ_SINGLE_BLOCK读取一个块的数据,参数为块的首地址。块的长度由CMD16设置,对于高容量卡,块大小固定为512字节

通过发送CMD17(READ_SINGLE_BLOCK)命令,让SD卡按照参数的地址返回一个块的数据。当发生错误的时候,SD卡会响应一个数据错误令牌。
SD卡-SPI模式单次读操作.png

连续数据块

命令号参数响应名称描述
CMD18[31:0]:数据地址,单位:字节(SDSC),单位:512字节(SDHC)R1READ_MULTIPLE_BLOCK连续读取多块数据,直到主机发送CMD12命令,参数为块的首地址。块的长度由CMD16设置,对于高容量卡,块大小固定为512字节

与单次读扇区相似,通过发送CMD18(READ_MULTIPLE_BLOCK)命令,让SD卡按照参数指定的地址开始连续返回数据块,需要停止读取时,MCU发送CMD12(STOP_TRANSMISSION)命令停止读取。当发生错误的时候,SD卡会响应一个数据错误令牌。
SD卡-SPI模式连续读数据块.png

数据错误令牌格式

与R2令牌的内容相似,长度为1字节,其中高4位固定为0。在发送命令CMD17、CMD18之后,如果响应的R1令牌指示发生错误,SD卡将继续响应该令牌。
数据错误令牌格式.png

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值