Labview&STM32實驗:SD卡扇區讀寫(SPI)

對於很多分佈系統或者大容量資料無損傳輸等應用來說,往往受限於匯流排頻寬和傳輸速率,無法及時將全部資訊傳遞到伺服器上,此時最佳的解決方案是本地流盤,然後一次性透過TCP/IP或者FTP等檔案協議傳輸至上位機。在嵌入式系統中,最常用到的本地儲存介質就是SD卡。

SD卡一般有9根據通訊線,支援SDIO和SPI兩種通訊方式。前者是專門的為SD卡開發的,只需要4根通訊線即可,速度和穩定性都要優於SPI,但在底層驅動相對比較複雜。在STM32中,STM32自帶的SPI的通訊速率事可達18Mbps,每秒可能傳輸2MB多的資料,也能滿足絕大多數應用的需要。

本次實驗,將釆用STM自帶的SPI總來訪問外部SD卡。

SD卡的容量一般都在1G以上,而且是以扇區來進行管理的,即每次讀寫都要找到該物理地址所處的扇區。

本次實驗重點介紹如何訪問SD卡扇區。

實驗預期效果:SD卡初始化成功後,會返回SD卡型別識別符,接著會返回以MB為單位的SD卡容量;然後寫入一段指定長度的字串至SD卡的扇區0,寫入成功後,前面板會有相應的資訊提示;讀取成功後,也有相應的資訊提示。

一, 程式步驟:

1, 初始化SPI2

2, 初始化SD卡

3, 獲取SD卡容量大小

4, 寫入字串串至扇區0

5, 讀取扇區0中的字串

二, 程式編寫:

硬體連線圖

Labview&STM32實驗:SD卡扇區讀寫(SPI)

1, 初始化SPI2

定義各IO口

Labview&STM32實驗:SD卡扇區讀寫(SPI)

2, 初始化SD卡

Labview&STM32實驗:SD卡扇區讀寫(SPI)

3, 獲取SD卡容量大小

Labview&STM32實驗:SD卡扇區讀寫(SPI)

4, 寫入字串串至扇區0

Labview&STM32實驗:SD卡扇區讀寫(SPI)

5, 讀取扇區0中的字串

Labview&STM32實驗:SD卡扇區讀寫(SPI)

再加個while迴圈,不斷更新

Labview&STM32實驗:SD卡扇區讀寫(SPI)

完成程式的編寫

3, 編譯,下載

程式執行狀態,觀察前面板。

插入一張4GB的SD卡,顯示的資訊

Labview&STM32實驗:SD卡扇區讀寫(SPI)

拔出SD卡後,顯示的資訊:

Labview&STM32實驗:SD卡扇區讀寫(SPI)

再重新插入SD卡,顯示的資訊:

Labview&STM32實驗:SD卡扇區讀寫(SPI)