Gt911 Register Map ★ Works 100%
is a high-performance 5-point capacitive touch controller commonly used in tablets and embedded systems. It utilizes an
interface for communication, requiring a specific register map to configure settings and retrieve real-time coordinate data. Focus LCDs Communication Protocol operates as an
slave device with two possible addresses depending on the state of the interrupt pin at power-on: (if high) or GitHub Pages documentation Write Operation
: The master sends the device address (write bit), followed by a 16-bit register address and then the data bytes. Read Operation
: The master writes the 16-bit register address, then issues a "Restart" or new "Start" condition with the device address (read bit) to begin receiving data. Orient Display Primary Register Map
The GT911 register space is divided into functional blocks for commands, configuration, and coordinate reporting. STMicroelectronics Community GOODiX GT911 Programming Guide 2014-08-04_Rev.00 gt911 register map
The story of the GT911 Register Map is not a story of a single document, but a tale of reverse engineering, evolving firmware, and the democratization of touch technology.
It begins around the early 2010s. Capacitive touchscreens were transitioning from luxury items (like the original iPhone) to standard components in consumer electronics. Goodix, a Chinese semiconductor company, released the GT911—a capacitive touch controller that was powerful, responsive, and significantly cheaper than competitors like FocalTech or Cypress.
However, Goodix operated under a strict "NDA-only" policy for their datasheets. The official register map was a guarded secret, available only to large manufacturers. This is the story of how that map was drawn.
Important register regions (addresses in hex)
-
0x8140–0x81FF — Configuration area (firmware config block; ~192 bytes).
-
0x8040–0x80FF — Refresh/config load control & checksum. 0x8040–0x80FF — Refresh/config load control & checksum
-
0x8147 — Config refresh command (write 0x01 to trigger config reload).
-
0x80FF–0x8100 — Config checksum (two bytes) and configuration related values.
-
0x814E — Product ID ASCII start (e.g., "GT911").
-
0x8140 — Config start (first byte of config data).
-
0x8143 — Vendor ID / version bytes (varies by firmware). 0x01 = move up
-
0x8140–0x8150 often treated as contiguous configuration image; check length in product doc.
3. Gesture & Status Registers
| Register | R/W | Description | |-----------|-----|-------------| | 0x8100 | R | Gesture ID (0 = no gesture, 0x01 = move up, 0x02 = move down, etc.) | | 0x8101 | R | Number of touch points (0–5) | | 0x8102 | R | Large touch indicator / proximity | | 0x8103 | R | Reserved |
Pro tip: Poll 0x8101 first. If it returns >0, then read the touch data.
5. Checksum & Configuration Control
| Register | Description | |----------|-------------| | 0x80FE | Config checksum (calculated by host) | | 0x80FF | Config update flag (write 0x01 to reload config from host) |
After writing a new configuration block to 0x8040–0x80FD, you must:
- Calculate an 8-bit checksum (sum of all bytes from
0x8040to0x80FD, then take lower byte) - Write that checksum to
0x80FE - Write
0x01to0x80FF
The GT911 will then reset its touch engine with the new settings.