Gt911 Register Map Jun 2026
Holds the version number of the configuration framework.
This discovery explained why some GT911 screens worked instantly with Arduino libraries and others failed silently—the developer was shouting at the wrong address.
Bitmask registers used to mirror or swap the X and Y axes, change interrupt trigger modes (rising/falling edge vs. low/high level), and toggle proximity sensing.
Read 0x8140 to 0x8144 to verify I2C communication. A returned "911" confirms you're talking to the right chip. gt911 register map
Extract to find the number of active touch points ( bytes starting from address 0x814F .
Before parsing the register map, a driver must establish a valid I2C connection with the hardware. I2C Device Address Selection
Always send two bytes for the register address (High byte then Low byte) before reading or writing data. Holds the version number of the configuration framework
The breakthrough came from the open-source community. As Android devices began shipping with Goodix controllers, Linux kernel developers needed drivers. Through leaks, NDA breaches, and sheer persistence, the register map began to surface in public source code.
| Value | Gesture | | :--- | :--- | | 0x00 | No gesture | | 0x01 | Move Up (Swipe from bottom to top) | | 0x02 | Move Right | | 0x03 | Move Left | | 0x04 | Move Down | | 0x05 | Double-Click | | 0x06 | Long Press (Unconfirmed on some firmware) | | 0x07 | Zoom In / Spread | | 0x08 | Zoom Out / Pinch |
Now, armed with the map of the "city," let's navigate through the procedures for a working driver. low/high level), and toggle proximity sensing
The GT911 register map is not beautiful. It’s not a work of art like an I2C accelerometer with neat, aligned 16-bit registers. It is a . It is brutally efficient.
This massive block defines how the touch panel behaves. It includes settings for: Resolution: Horizontal and vertical pixel counts (e.g., 480x800). Touch Points: Setting the maximum number of concurrent touches (up to 5). Sensitivity: Touch thresholds and noise rejection levels. Refresh Rate: Typically set to 5ms or 10ms cycles. Saving Changes: After writing to these registers, you must write 0x01 to 0x8040 to save the config to non-volatile memory, followed by to transition into application mode. Coordinate Data (0x8100 – 0x813F) When a touch is detected, the updates this range with live data
When implementing a bare-metal C/C++ driver for the GT911, your main execution loop or ISR (Interrupt Service Routine) should implement the following steps:
Once configured, touch data can be obtained via two methods.