ข้ามไปยังเนื้อหา
Display Engineer
การแก้ปัญหา

ILI9341 กับ ST7789: วิธีดูว่าจอของคุณใช้ตัวควบคุมใด

บอร์ดที่ขายในชื่อเดียวกันมาพร้อมตัวควบคุม ILI9341 หรือ ST7789 วิธีระบุจากอาการหรือโดยการอ่านรีจิสเตอร์ ID และการตั้งค่าที่แก้จอขาวและสีผิด

DEDisplay Engineer Applications Team · วิศวกรแอปพลิเคชันด้านจอวิศวกรตรวจทานเมื่อ 11 ต.ค. 2569

ทำไมบอร์ดเดียวกันจึงอาจมีตัวควบคุมต่างกัน

บอร์ดจอราคาประหยัดสร้างจากจอที่ซื้อในตลาดเปิด เมื่อล็อตหนึ่งเปลี่ยนผู้จำหน่าย ตัวควบคุมก็อาจเปลี่ยนด้วย ขณะที่ชื่อบอร์ด PCB และผังขายังคงเหมือนเดิม ESP32-2432S028R (Cheap Yellow Display) และ ESP32-2432S024 ต่างมีทั้งรุ่น ILI9341 และ ST7789

ระบุจากอาการ

สิ่งที่เห็นเมื่อใช้การตั้งค่า ILI9341

สาเหตุที่เป็นไปได้

วิธีแก้

จอขาวหรือว่าง แบ็คไลท์ติด

ตัวควบคุมเป็น ST7789

เปลี่ยนเป็นไดรเวอร์ ST7789

มีภาพ แต่สีดูเป็นเนกาทีฟ

จอ ST7789 ต้องกลับสี

สลับการกลับสี (TFT_INVERSION_ON)

สีแดงและน้ำเงินสลับกัน

ลำดับสี

ตั้งลำดับ BGR (TFT_RGB_ORDER TFT_BGR)

ภาพกลับด้านหรือเลื่อน

การตั้งค่าการหมุน / การเข้าถึงหน่วยความจำ

เปลี่ยนการหมุน (MADCTL)

มืดทั้งหมด

ขาแบ็คไลท์ผิดหรือถูกใช้ซ้ำ

ตรวจสอบ GPIO ของแบ็คไลท์

เปลี่ยน การตั้งค่าทีละอย่าง และเก็บตัวอย่างที่ใช้งานได้ไว้เปรียบเทียบ

ระบุโดยการอ่าน ID

หากบอร์ดต่อสาย MISO ของจอไว้ คุณสามารถอ่าน ID ของตัวควบคุมแทนการเดาได้ ILI9341 ตอบ 0x9341 ต่อคำสั่ง Read ID4 (0xD3) ใน TFT_eSPI tft.readcommand8(0xD3, n) อ่านไบต์ที่ n ของรีจิสเตอร์ หากไม่ได้ 0x93 และ 0x41 ให้ลองไดรเวอร์ ST7789 บอร์ดที่ไม่มี MISO อ่านไม่ได้ ให้ใช้ตารางอาการแทน

การตั้งค่าที่แตกต่าง

รายการ

ILI9341

ST7789

ไดรเวอร์ TFT_eSPI

ILI9341_DRIVER / ILI9341_2_DRIVER

ST7789_DRIVER

LovyanGFX

Panel_ILI9341

Panel_ST7789

ESP-IDF

espressif/esp_lcd_ili9341

esp_lcd_new_panel_st7789() (มีในตัว)

การกลับสี

มักปิด

มักเปิด

เทมเพลตสำหรับทั้งสองอยู่ในหน้า ILI9341 และ ST7789V

การหลีกเลี่ยงปัญหานี้ในผลิตภัณฑ์

สำหรับผลิตภัณฑ์ ให้ระบุโมดูลที่ datasheet ระบุชื่อตัวควบคุม และผู้จำหน่ายกำหนดตัวควบคุมคงที่ต่อล็อตการผลิต เพื่อไม่ให้เฟิร์มแวร์เสียระหว่างล็อต โมดูล SPI 2.8 นิ้ว 240×320 ของเราใช้ ST7789V ที่ระบุไว้ ตัวอย่างเริ่มที่ 1 ชิ้น

คำถามที่พบบ่อย

โค้ด ILI9341 รันบน ST7789 ได้หรือไม่?

ไม่ได้อย่างน่าเชื่อถือ ทั้งคู่เป็นตัวควบคุม 240×320 แต่ลำดับการเริ่มต้นต่างกัน จึงควรเปลี่ยนไดรเวอร์แทนการแก้โค้ด ILI9341

ทำไมสีบนจอ ST7789 ของฉันกลับด้าน?

จอ ST7789 จำนวนมากต้องเปิดการกลับสี (INVON) เปิด TFT_INVERSION_ON หรือเรียก tft.invertDisplay(true)

จะอ่าน ID ของตัวควบคุมได้อย่างไร?

เมื่อต่อ MISO ไว้ ให้อ่านรีจิสเตอร์ 0xD3 (Read ID4): ILI9341 คืนค่า 0x93 0x41 หากไม่มี MISO ให้ระบุจากอาการ

โมดูลที่กล่าวถึงในคู่มือนี้

ไม่แน่ใจว่าจอแบบใดเหมาะกับงานออกแบบของคุณ?

ส่งขนาด อินเทอร์เฟซ และโปรเซสเซอร์โฮสต์มาให้เรา วิศวกรจอจะตอบกลับภายใน 12 ชั่วโมงพร้อมตัวเลือก 2–3 รายการ datasheet และโค้ดเริ่มต้น ตัวอย่างเริ่มที่ 1 ชิ้น