Vì sao cùng một board có thể có bộ điều khiển khác
Board màn hình giá rẻ được làm từ tấm nền mua trên thị trường tự do. Khi một lô đổi nhà cung cấp, bộ điều khiển cũng có thể thay đổi, trong khi tên board, PCB và sơ đồ chân vẫn giữ nguyên. ESP32-2432S028R (Cheap Yellow Display) và ESP32-2432S024 đều có phiên bản ILI9341 và ST7789.
Nhận biết qua triệu chứng
Hiện tượng với cấu hình ILI9341 | Nguyên nhân có thể | Cách sửa |
|---|---|---|
Màn hình trắng hoặc trống, đèn nền sáng | Bộ điều khiển là ST7789 | Chuyển sang driver ST7789 |
Có hình, màu trông như âm bản | Tấm nền ST7789 cần đảo màu | Bật/tắt đảo màu ( |
Đỏ và xanh dương bị hoán đổi | Thứ tự màu | Đặt thứ tự BGR ( |
Ảnh bị lật gương hoặc lệch | Cài đặt xoay / truy cập bộ nhớ | Đổi hướng xoay (MADCTL) |
Tối hoàn toàn | Sai chân đèn nền hoặc bị dùng lại | Kiểm tra GPIO đèn nền |
Thay đổi từng cài đặt một và giữ một ví dụ chạy tốt để so sánh.
Nhận biết bằng cách đọc ID
Nếu board có nối đường MISO của tấm nền, bạn có thể đọc ID bộ điều khiển thay vì đoán. ILI9341 trả về 0x9341 cho lệnh Read ID4 (0xD3). Trong TFT_eSPI, tft.readcommand8(0xD3, n) đọc byte n của một thanh ghi. Nếu không nhận được 0x93 và 0x41, hãy thử driver ST7789. Board không có MISO thì không đọc được, nên hãy dùng bảng triệu chứng.
Các cài đặt khác nhau
Mục | ILI9341 | ST7789 |
|---|---|---|
Driver TFT_eSPI | | |
LovyanGFX | | |
ESP-IDF | | |
Đảo màu | thường tắt | thường bật |
Mẫu cấu hình cho cả hai có trên trang ILI9341 và ST7789V.
Tránh vấn đề này trong sản phẩm
Với sản phẩm, hãy chỉ định module có datasheet ghi rõ bộ điều khiển và nhà cung cấp cố định bộ điều khiển cho mỗi lô sản xuất, để firmware không bị hỏng giữa các lô. Module SPI 2,8 inch 240×320 của chúng tôi dùng ST7789V được chỉ định; mẫu từ 1 chiếc.
Câu hỏi thường gặp
Mã ILI9341 có chạy trên ST7789 được không?
Không ổn định. Cả hai đều là bộ điều khiển 240×320, nhưng chuỗi khởi tạo khác nhau, nên hãy đổi driver thay vì vá mã ILI9341.
Vì sao màu trên màn hình ST7789 của tôi bị đảo?
Nhiều tấm nền ST7789 cần đảo màu hiển thị (INVON). Bật TFT_INVERSION_ON hoặc gọi tft.invertDisplay(true).
Làm sao đọc ID bộ điều khiển?
Khi có nối MISO, đọc thanh ghi 0xD3 (Read ID4): ILI9341 trả về 0x93 0x41. Không có MISO thì nhận biết qua triệu chứng.

