Your post is not about Arduino IDE in any way, so why did you think it was appropriate to choose the Development Tools > IDE 2.x forum category???
In the future, when creating a topic please take some time to pick the forum category that best suits the subject of your topic. There is an "About the _____ category" topic at the top of each category that explains its purpose.
You have exhibited this same pattern of choosing a completely inappropriate category for every single one of the forum topics you have created. You are causing the forum maintainers to waste a lot of time cleaning up after you. People who do that tend to get account suspensions.
Important note: GPIO 22 is shared in my project: it’s TFT_DC (VSPI)andSD_CS (HSPI).
That is intentional on my side (I was trying to save pins), but it could absolutely cause conflicts / black screen / weird behavior depending on timing and library behavior. If you suspect this, I can rewire SD_CS to another free GPIO and retest.
3) Hardware I’m using (links / part identification)
I don’t want to pretend I know the exact listing you bought, so here’s the exact component description:
TFT module: MSP4031-type 3.5” SPI TFT, ST7796S driver, 480×320 (rotated in code), with FT6336U capacitive touch (I2C, addr 0x38).
If you want me to be precise, I can paste the exact URLs of the store pages I bought from — I just don’t have them in front of me right now.
About the forum category
Understood — my mistake on category selection. This is a hardware display / wiring issue, not Arduino IDE.
If you want the fastest progress on the black screen: the first thing I’ll do is move SD_CS off GPIO 22 (so TFT_DC is not shared), then confirm TFT works without SD initialized, then add SD back.
I know there are many ESP32xyz, and many differences. My two ESP32 have me hold BOOT until my ESP goes into boot mode (USB disconnect/reconnect), click upload, then after upload is finished, press RESET. I hope this helps. Also, make your code send something to the Serial Monitor.
void setup () {
Serial.begin(115200);
delay(2000); // safer than while (!Serial)
Serial.println("Hello, Lois!");
}
Hmm, DC is Direct Command on the display, for the telling the display whether it is receiving a command or data, whereas CS is Chip Select. It seems to me that if the program selects the SD card, its not going to be able to send anything to the display. Since you have not posted your code, we cannot see how you have arranged that switching, but one way for sure to find out would e to disconnect the SD card CS signal and see whether your display then shows something.
Let us know the results of the request in post #8, connecting one piece of hardware at a time and testing each one individually.