SPI协议读写SD卡介绍

前言

在前面的文章中,我们主要介绍了如何利用SDIO协议对SD卡进行读写操作的流程及注意事项。虽然SDIO协议读写SD卡的效率很高,但是,操作却比较麻烦,另外,还需要使用的芯片具有SDIO外设。这对于不具备SDIO外设的芯片而言,绝对是一个灾难。但值得庆幸的是,SD卡还支持利用SPI协议实现对SD卡的操作。比如,目前流行的DSP28335芯片便不具备SDIO外设。所以,如果想利用该DSP芯片扩展SD卡,就需要使用SPI协议。当然,该芯片是具备SPI外设的,即使没有,我们也可以通过软件进行模拟。然而在实际应用中,为了更进一步提高数据的传输效率,我们还可以使用McBSP外设,该外设的SPI模式同样可以实现SPI协议读写SD卡。
本文,我们主要介绍利用SPI协议读写SD卡的一些重要的知识。

SDIO协议与SPI协议的比较

SDIO协议与SPI协议相较而言,SDIO协议读写SD卡的速度更快,再加上其支持4线模式,即利用4条数据线,同时发送4Bits数据,数据的传输效率就更高了,但是由于使用的引脚较多,所以也导致了控制相对比较困难。
而SPI外设只具有两条数据线MISO和MOSI,分别用作数据的输入和输出,由于引脚较少,所以控制相对较容易。但是,数据的传输效率相对而言就比较低了。
但是,两中协议的共同之处在于:均是通过命令实现对SD卡的控制,仍然是结合状态机实现编程。

SD卡如何工作在SPI模式下

当SD卡上电之后,只有第一次发送的CMD0命令才可以选择SD卡工作在SPI模式下。这意味着,当SD卡处于SPI模式下时,仅能通过重新上下电,才能再次选择SD卡的通讯模式,即选择SDIO模式或者SPI模式,否则SD卡将一直处于SPI模式下。并且,SPI模式下的SD卡不支持 V2.0版本之后新增的命令。

卡识别模式与数据传输模式的切换

与SDIO协议一样,SPI模式下的SD卡同样具有两种工作模式—卡识别模式数据传输模式。状态机流程如下:
在这里插入图片描述

初始化SD卡

SPI模式下初始化SD卡的状态机如下:
在这里插入图片描述

主机读取SD卡中的数据

SPI模式下,仍然支持读取单块数据或者多块数据,时序图如下。

读取单块数据

在这里插入图片描述

读取多块数据

在这里插入图片描述

主机向SD卡写入数据

与读取数据一样,主机也可以选择向SD卡写入单块数据或者多块数据,时序图如下。

写入单块数据

在这里插入图片描述

写入多块数据

在这里插入图片描述

注意事项

1、工作在SPI模式下的SD卡,不再具备速度等级之分,将被当作class 0的速度等级进行处理;
2、SPI模式不支持SDIO模式下的一些命令;
3、SPI模式与SDIO模式下相同的命令,可能具有不同的作用。
4、SPI模式下的命令和响应的详细信息,请参考SD协议,有详细介绍。

总结

本文主要介绍了SD卡工作在SPI模式的一些重要知识点,但是同样不涉及程序实现部分。但是相信大家已经对如何实现控制SD卡有了一个大概的轮廓,相信实现起来也不是很难。由于本文能力有限,文章难免有不足或错误之处,还望各位读者可以及时指正,谢谢大家!

 

 

https://blog.csdn.net/IssacMi/article/details/102785961?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-9-102785961.nonecase&utm_term=spi%E8%AF%BB%E5%86%99sd

 

https://www.csdn.net/gather_22/Mtjacg3sNzk2OTQtYmxvZwO0O0OO0O0O.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值