Register Map ((exclusive)): Gt911

The byte-wise sum of all configuration registers from 0x8047 to 0x80FE . Invert the result (2's complement or XOR with 0xFF depending on driver version) to create the checksum.

A crucial plot point in the GT911 register map story is the . The GT911 is unique because it can operate on two different addresses, and the register map is accessed differently depending on how the chip wakes up.

| Start Addr | Size | Description | |------------|------|-------------| | 0x8040 | 1 | Config checksum | | 0x8041 | 1 | Config version number | | 0x8042 | 184 | Main configuration block (touch thresholds, XY mapping, etc.) | gt911 register map

After this hardware setup, proceed with I2C software commands:

| :--- | :--- | :--- || | Command | Writing 0x00 (read coordinates), 0x01 (read raw data), or 0x05 (screen off). || 0x8047 – 0x813F | Configuration | Settings for resolution, touch thresholds, and sensor orientation. || 0x8140 – 0x8143 | Product ID | Reads as ASCII "911" or "9111" to verify chip identity. || 0x814E | Status | Critical: Bit 7 (Buffer Status) indicates new touch data is ready. Writing 0 here clears the flag. || 0x814F – 0x8156 | Touch 1 Data | Contains Track ID, X-coordinate (Low/High), Y-coordinate, and Size. || 0x8157 – 0x81FF | Touch 2–5 Data | Subsequent blocks (8 bytes each) for the remaining touch points. | The Reading Workflow The byte-wise sum of all configuration registers from

Goodix GT911 is a capacitive touch controller that uses an I2C interface to communicate with a host processor. The register map is divided into functional blocks for commands, configuration, and touch data status. I2C Communication Basics Slave Address: usually has two selectable 7-bit I2C addresses, , depending on the state of the pins during startup. Register Address Size: Unlike many simple I2C devices, the 16-bit register addresses Focus LCDs Key Register Map Blocks Address Range (Hex) Description Command Register Used to send real-time commands (e.g., reset, sleep). Configuration Registers

To extract coordinates without causing visual lag or I2C bus congestion, implement this sequence: Read the . The GT911 is unique because it can operate

Wait for the INT pin to fire, or poll register 0x814E at periodic intervals. Read the byte at 0x814E . Check if Bit 7 is set to 1 .

| Resource | Link | Language/Platform | | :--- | :--- | :--- | | | https://github.com/milad-nikpendar/initGT911 | Arduino, ESP8266, ESP32 | | ninjasource/gt911 | https://github.com/ninjasource/gt911 | Rust | | Goodix GT9xx Android Driver | https://github.com/goodix/gt9xx_driver_android | C (Linux Kernel / Android) | | ESP Component Registry | https://components.espressif.com/components/espressif/esp_lcd_touch_gt911 | ESP-IDF (C) |