【esp32 學習筆記】讓SD卡發光發熱~

FBshark發表於2024-06-11

原理圖:

【esp32 學習筆記】讓SD卡發光發熱~

圖 SD卡部分

【esp32 學習筆記】讓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()
{
}

相關文章