본문 바로가기

ESPRESSIF/ESP32

ESP32 SD Card Test

ESP32 SD Card 테스트를 위해 확장 테스트 보드 xBee-EXP-SSM_SD 를 사용 하였다.

 

SC Card의 CS 핀은 GPIO5 에 연결되어 있으므로 SD Card 초기화 시에 핀 설정을 정의 할수 있다.

#define SD_CS_PIN         5


void initSDCard(){
  if(!SD.begin(SD_CS_PIN)){
    Serial.println("Card Mount Failed");
    return;
  }
  uint8_t cardType = SD.cardType();

  if(cardType == CARD_NONE){
    Serial.println("No SD card attached");
    return;
  }

  Serial.print("SD Card Type: ");
  if(cardType == CARD_MMC){
    Serial.println("MMC");
  } else if(cardType == CARD_SD){
    Serial.println("SDSC");
  } else if(cardType == CARD_SDHC){
    Serial.println("SDHC");
  } else {
    Serial.println("UNKNOWN");
  }
  
  uint64_t cardSize = SD.cardSize() / (1024 * 1024);
  Serial.printf("SD Card Size: %lluMB\n", cardSize);
}

 

 

SD 카드의 파일 리스트를 출력 하기위해 간단한 함수를 작성했다.

void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
  Serial.printf("Listing directory: %s\n", dirname);

  File root = fs.open(dirname);
  if(!root){
    Serial.println("Failed to open directory");
    return;
  }
  if(!root.isDirectory()){
    Serial.println("Not a directory");
    return;
  }

  File file = root.openNextFile();
  while(file){
    if(file.isDirectory()){
      Serial.print("  DIR : ");
      Serial.println(file.name());
      if(levels){
        listDir(fs, file.name(), levels -1);
      }
    } else {
      Serial.print("  FILE: ");
      Serial.print(file.name());
      Serial.print("  SIZE: ");
      Serial.println(file.size());
    }
    file = root.openNextFile();
  }
}

 

 

ESP32의 SD Card 테스트를 위해 SD Card의 파일리스트를 출력 하는 예제를 작성해 보았다.

#include <Arduino.h>

#include "FS.h"
#include "SD.h"
#include "SPI.h"

#define SD_CS_PIN         5


void setup() {
  Serial.begin(115200);
  initSDCard();

  listDir(SD, "/", 0);
}

void loop() {
  
}

 

 

 

반응형