天天看點

SPI協定讀寫SD卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取SD卡中的資料主機向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卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取SD卡中的資料主機向SD卡寫入資料注意事項總結

初始化SD卡

SPI模式下初始化SD卡的狀态機如下:

SPI協定讀寫SD卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取SD卡中的資料主機向SD卡寫入資料注意事項總結

主機讀取SD卡中的資料

SPI模式下,仍然支援讀取單塊資料或者多塊資料,時序圖如下。

讀取單塊資料

SPI協定讀寫SD卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取SD卡中的資料主機向SD卡寫入資料注意事項總結

讀取多塊資料

SPI協定讀寫SD卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取SD卡中的資料主機向SD卡寫入資料注意事項總結

主機向SD卡寫入資料

與讀取資料一樣,主機也可以選擇向SD卡寫入單塊資料或者多塊資料,時序圖如下。

寫入單塊資料

SPI協定讀寫SD卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取SD卡中的資料主機向SD卡寫入資料注意事項總結

寫入多塊資料

SPI協定讀寫SD卡介紹前言SDIO協定與SPI協定的比較SD卡如何工作在SPI模式下卡識别模式與資料傳輸模式的切換初始化SD卡主機讀取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