#if !defined(CONFIG_IDF_TARGET_ESP32)
#define VSPI FSPI
#endif
#define PIN_MOSI 20
#define PIN_MISO 21
#define PIN_SCK 47
#define PIN_CS 48
static const int spiClk = 80000000;
SPIClass vspi = SPIClass(VSPI);
void initSD(void)
{
vspi.begin(PIN_SCK, PIN_MISO, PIN_MOSI, PIN_CS);
pinMode(vspi.pinSS(), OUTPUT);
digitalWrite(vspi.pinSS(), HIGH);
digitalWrite(vspi.pinSS(), LOW);
if (!SD.begin(PIN_CS, vspi, spiClk)) {
Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); // don't do anything more:
}
Serial.println(F("SD CARD INITIALIZED."));
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);
digitalWrite(vspi.pinSS(), HIGH);
}
void readFile(fs::FS &fs, const char * path){
Serial.printf("Reading file: %s\n", path);
File file = fs.open(path);
if(!file){
Serial.println("Failed to open file for reading");
return;
}
Serial.print("Read from file: ");
while(file.available()){
Serial.write(file.read());
}
file.close();
}
void sd_test_read(void)
{
digitalWrite(vspi.pinSS(), LOW);
readFile(SD, "/test.txt");
digitalWrite(vspi.pinSS(), HIGH);
}
void setup(void)
{
Serial.begin(115200);
initSD();
sd_test_read();
}