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() {
}
반응형