Gt911 Register Map -

Read-only or writeable depending on the firmware version. It must match or exceed the version currently inside the chip to accept modifications.

Understanding the GT911 Register Map: A Complete Programming Guide

| 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 |

Write 0x00 back to register 0x814E . If you skip this, the chip will not update the buffer with new data. Implementation Resources

To build a robust driver around the GT911 register map, execute your code logic in this order: Step 1: Power-On Initialization Sequence Pull the Reset pin Low for 10ms. gt911 register map

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.

: The gatekeeper. You must read this first to see if a touch is even happening before you waste time reading coordinates.

The Goodix GT911 5-point capacitive touch controller utilizes 16-bit register addresses via I2C, with memory divided into command, configuration, and coordinate data sections. Key registers include 0x8040 for power management and 0x8140 for touch data, requiring careful handling of coordinate status flags to ensure accurate input detection. For technical documentation, refer to the STMicroelectronics Community document and the Focus LCDs article on programming a capacitive touch panel .

This forced the open-source community (particularly contributors to the Linux Kernel and projects like ESP32 Arduino core) to write "auto-detect" routines. The code had to probe the registers, trying to read the "Goodix" ID ( GT911 , GT9110 , etc.) stored in the read-only memory area (around 0x8140 to 0x8143 ) to decide which map to use. Read-only or writeable depending on the firmware version

After reading all touch points, always write 0x00 back to 0x8009 . If you fail to do this, the GT911 will stop sending interrupts.

Unlike standard I2C sensors that utilize 8-bit registers, the GT911 implements a . When initiating a transaction, the host must transmit the high byte ( Register_H ) first, followed by the low byte ( Register_L ). Memory Map Architecture Overview

The GT911 uses 16-bit register addresses. It supports auto-incrementing , allowing you to read or write a continuous block of data in a single I2C transaction. 2. Core Register Map Structure

The GT911 register map is essential for a wide range of applications, including: If you skip this, the chip will not

The GT911 register map is structured as follows:

When the INT pin goes low, the host should read 0x814E to check how many points are touched, then read the corresponding coordinate registers. 2.2. Configuration Registers ( 0x8047 – 0x80FF )

— Vendor ID / version bytes (varies by firmware).

The GT911 tracks up to 5 points sequentially. Each touch point occupies a fixed 7-byte block. Addresses 0x8150 to 0x8156 Touch Point 2: Addresses 0x8157 to 0x815D Touch Point 3: Addresses 0x815E to 0x8164 Touch Point 4: Addresses 0x8165 to 0x816B Touch Point 5: Addresses 0x816C to 0x8172 Inside a 7-Byte Touch Point Block (Example: Point 1) Relative Offset Register Address Field Name Description 0x8150 Unique ID assigned to this specific touch event 0x8151 X Coordinate Low Lower 8 bits of the X coordinate 0x8152 X Coordinate High Upper 8 bits of the X coordinate 0x8153 Y Coordinate Low Lower 8 bits of the Y coordinate 0x8154 Y Coordinate High Upper 8 bits of the Y coordinate 0x8155 Point Size Low Lower 8 bits of the contact area size 0x8156 Point Size High Upper 8 bits of the contact area size