2025-04-02 12:05 PM
I am using an L432KC board and I am trying to read .txt files from my SD card through SPI, extract the bitmap array, and then push the bitmap through TFT_eSPI.h library.
I am able to work with SD card and the display individually, but not together. If I run SD.begin() first, I can communicate with the SD card until I initialize the display.
If I initialize the display first, SD card initialization fails. If I still try to run non-SD operations on my display like fillscreen, its too slow.
I was originally using the same SCLK, MOSI and MISO for both and different chip selects but I couldn't successfully initialize the SD until I connected it to different MOSI, MISO and SCLK.
pins for SD
MOSI = D11
MISO = D12
SCLK = D13
CS = D3
Pins for tft-espi
This is my code to initialize my sd card. printdirectory() works as expected if the initialization does not fail.
void initSD() {
// Initialize the SD card
if (!SD.begin(D3)) {
Serial.println("SD card initialization failed!");
return;
}
File root = SD.open("/bsr");
printDirectory(root, 0);
Serial.println("SD card initialized successfully.");
}
This is my code that initializes both. After tft.begin() I fail to open the files I could previously open
//Initialize TFT display
void initDisp(){
digitalWrite(A3, HIGH);
digitalWrite(D3, HIGH);
initSD(); // Initialize the SD card
if (SD.exists("/bsr/JONATHAN.JPG")) {
Serial.println("BSR folder exists on SD card.");
} else {
Serial.println("BSR folder does not exist on SD card.");
}
//---------Until this point, expected behavior
tft.begin();
tft.fillScreen(TFT_BLACK);
}
2025-04-02 12:07 PM
I am using build flags so that tft_espi works with the pins mentioned. Should I use build flags for SD.h as well?