原理圖:
圖 SD卡部分
圖 MCU中與SD卡相關的介面
連線關係如下:
- [ESP32 IO26 – CS MICROSD]
- [ESP32 IO23 – MOSI(DI) MICROSD]
- [ESP32 IO19 – MISO(DO) MICROSD]
- [ESP32 IO18 – SCK MICROSD]
- [ESP32 GND – GND MICROSD]
- [3.3V – VCC MICROSD]
軟體:
我們將使用SD卡庫用於溝通。您可以在此處下載:
https://github.com/nhatuan84/esp32-micro-sdcard
下載後,將其解壓縮並將解壓縮的資料夾複製到Arduino資料夾下的libraries資料夾。
這個庫提供了一些類和介面:
– SD.begin(uint8_t cs,int8_t mosi,int8_t miso,int8_t sck)
:使用SPI引腳初始化庫
開啟檔案:
– SD.open(filename,FILE_WRITE)
:開啟檔案進行寫入
– SD.open(filename)
:開啟檔案進行讀取
– SD.open(“/”)
:開啟sdcard at root“/”
開啟遍歷目錄:
– openNextFile()
:遍歷目錄
– name()
:獲取檔名或目錄
– isDirectory()
:檢查條目是否為目錄
讀寫檔案&獲取檔案屬性:
– size()
:獲取檔案大小
– close()
:關閉開啟的條目
– println(文字)
:將文字寫入開啟的檔案
– available()
:檢查可用的資料reading
– read()
:如果資料可用則讀取資料
– close()
:關閉開啟的檔案
以下是相應的程式碼:
/*******************************************************
ESP32 測試SD卡
功能:對SD卡進行檔案的寫&讀操作
引腳:GPIO26 -> CS GPIO14 -> MOSI(DI) GPIO12 -> MISO(DO) GPIO27 - SCK
*******************************************************/
#include
#include
File root;
void setup()
{
Serial.begin(115200);
Serial.print("Initializing SD card...");
/*初始化SD庫SPI引腳*/
if (!SD.begin(26, 14, 12, 27)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
/*從根目錄root“/”*/
root = SD.open("/");
if (root) {
printDirectory(root, 0);
root.close();
} else {
Serial.println("error opening test.txt");
}
/*開啟“test.txt”寫入*/
root = SD.open("test.txt", FILE_WRITE);
/*如果成功開啟 - > root!= NULL 然後寫字串“Hello world!”*/
if (root) {
root.println("Hello world!");
root.flush();
/*關閉檔案 */
root.close();
} else {
/* 如果檔案開啟錯誤,則列印錯誤 */
Serial.println("error opening test.txt");
}
delay(1000);
/*寫完後再重新開啟檔案並讀取它 */
root = SD.open("test.txt");
if (root) {
/* 從檔案中讀取,直到其中沒有其他內容 */
while (root.available()) {
/* 讀取檔案並列印到串列埠監視器*/
Serial.write(root.read());
}
root.close();
} else {
Serial.println("error opening test.txt");
}
Serial.println("done!");
}
void loop()
{
}