Gt9xx1024x600
Here is where things get murky. "GT9XX" is a family name, not a single chip. It usually refers to a series of display controllers manufactured by Goodix (or found in generic Chinese LCD modules). The most common variant you will encounter with the 1024x600 panel is the GT911 or GT928.
Wait, isn't GT911 a touch controller? Yes, and no. The confusing part is that vendors often bundle two chips into one marketing term:
When a listing says "GT9XX 1024x600", they are likely advertising the capacitive touch controller (the GT9 family), while the display driver is something else. gt9xx1024x600
After power-up and firmware init, write these values via I2C (address 0x5D or 0x14 – check your board).
| Register Address | Purpose | Value for 1024x600 | Notes |
|----------------|---------|--------------------|-------|
| 0x8048 | X Resolution (Low Byte) | 0x00 | 1024 = 0x0400 |
| 0x8049 | X Resolution (High Byte) | 0x04 | Little-endian: low byte first |
| 0x804A | Y Resolution (Low Byte) | 0x58 | 600 = 0x0258 |
| 0x804B | Y Resolution (High Byte) | 0x02 | |
| 0x804C | Touch threshold | 0x28 (40 dec) | Adjust for sensitivity |
| 0x804D | Switch 1 (output panel info) | 0x01 | Enable coordinate output | Here is where things get murky
Note: Some GT9xx use
0x8050for Y resolution – check your datasheet. The above is standard for GT911/GT9147.
Add or modify the I2C node:
&i2c1
status = "okay";
gt9271: touchscreen@5d
compatible = "goodix,gt9271";
reg = <0x5d>;
interrupt-parent = <&gpio4>;
interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
irq-gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio4 21 GPIO_ACTIVE_HIGH>;
touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
;
;
This is easier. Use the GT911 library by tobozo or m5stack.
Sample wiring for ESP32:
Critical note: The GT911’s I2C address is 0x5D by default, but if the INT pin is left floating during boot, it switches to 0x14. Always pull the INT pin high (3.3V) via a 10k resistor before powering on to lock it to 0x5D.