Layar putih ILI9341 - temukan penyebabnya dalam satu menit

Kamu memasang display SPI ILI9341 murah ke ESP32, meng-upload demo, dan layarnya tetap putih. Tidak ada gambar, tidak ada error, tidak ada apa-apa. Ini terjadi pada saya dengan modul 3,2” di penampil foto ESP32 saya.
Layar putih memberi tahu sesuatu yang jelas. Lampu latar mendapat daya, karena putih adalah tampilan panel saat lampu menyala tanpa gambar. Tapi controller ILI9341 tidak pernah menerima perintah yang benar. Jadi masalahnya ada di antara ESP32 dan controller, bukan di panel atau kode grafisnya.
Minta ID dari chip
ILI9341 bisa menjawab, bukan hanya mendengar. Perintah 0xD3 (Read ID4) membuatnya mengirim ID-nya lewat MISO. Controller yang berfungsi menjawab 00 93 41. Satu jawaban itu sudah menunjukkan apakah sambungannya bekerja.
Sketch kecil ini hanya memakai library SPI, jadi tidak bergantung pada library display atau pengaturannya. Pin-pinnya milik saya. Ganti dengan pin kamu.
#include <SPI.h>
const int PIN_SCK = 18, PIN_MISO = 19, PIN_MOSI = 23;
const int PIN_CS = 5, PIN_DC = 16, PIN_RST = 17;
const int PIN_TOUCH_CS = 33; // keep the touch chip quiet on the shared bus
void setup() {
Serial.begin(115200);
pinMode(PIN_TOUCH_CS, OUTPUT); digitalWrite(PIN_TOUCH_CS, HIGH);
pinMode(PIN_CS, OUTPUT); digitalWrite(PIN_CS, HIGH);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_RST, OUTPUT);
// hardware reset
digitalWrite(PIN_RST, LOW); delay(20);
digitalWrite(PIN_RST, HIGH); delay(150);
SPI.begin(PIN_SCK, PIN_MISO, PIN_MOSI);
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // slow on purpose
digitalWrite(PIN_CS, LOW);
digitalWrite(PIN_DC, LOW); SPI.transfer(0xD3); // command: Read ID4
digitalWrite(PIN_DC, HIGH);
uint8_t id[4];
for (uint8_t& b : id) b = SPI.transfer(0x00); // the first byte is a dummy
digitalWrite(PIN_CS, HIGH);
SPI.endTransaction();
Serial.printf("ILI9341 ID: %02X %02X %02X\n", id[1], id[2], id[3]);
}
void loop() {}
Sengaja dijalankan di 1 MHz. Membaca dari ILI9341 punya batas kecepatan yang lebih rendah daripada menulis, dan clock yang lambat menyingkirkan kecepatan sebagai penyebab.
Arti jawabannya
| Jawaban | Artinya | Periksa |
|---|---|---|
00 93 41 |
Sambungan bekerja | Pengaturan library display (pin, driver, rotasi) |
FF FF FF |
Tidak ada yang menggerakkan MISO | Kabel CS, SCK dan MISO, serta daya modul |
00 00 00 |
MISO tertahan low, atau chip belum di-reset | Kabel RST dan DC, serta CS chip sentuh |
| Nilai acak | Kontak longgar | Tekan ulang setiap kabel dan coba lagi |
Punya saya terbaca FF dan 00. Penyebabnya kabel jumper yang longgar. Menekan ulang setiap kabel ke breadboard menyelesaikannya.
Kalau ID-nya benar tapi layar tetap putih, kabelnya sudah benar dan library-nya diatur untuk pin atau chip lain. Pastikan pin, driver (ILI9341, bukan ST7789) dan bus SPI di library cocok dengan kabelmu.
Hal lain yang perlu dicek
- Daya. Di ESP32, sambungkan VCC modul ke 3,3 V. Beberapa modul punya jumper (sering J1) yang melewati regulatornya. Jangan pernah menutupnya saat VCC di 5 V.
- Bus bersama. Kalau chip sentuh (XPT2046) berbagi SCK, MOSI dan MISO, CS-nya harus tetap high saat kamu bicara dengan display. Kalau tidak, kedua chip menjawab bersamaan.
- Warna salah, tapi ada gambar. Itu bukan masalah kabel. Ubah urutan warna (RGB/BGR) atau pengaturan “invert” di library-mu.