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卡同样具有两种工作模式—卡识别模式数据传输模式。状态机流程如下:
SPI协议读写SD卡介绍_第1张图片

初始化SD卡

SPI模式下初始化SD卡的状态机如下:
SPI协议读写SD卡介绍_第2张图片

主机读取SD卡中的数据

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

读取单块数据

SPI协议读写SD卡介绍_第3张图片

读取多块数据

SPI协议读写SD卡介绍_第4张图片

主机向SD卡写入数据

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

写入单块数据

SPI协议读写SD卡介绍_第5张图片

写入多块数据

SPI协议读写SD卡介绍_第6张图片

注意事项

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

总结

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

你可能感兴趣的:(外部存储器驱动开发)