When a small startup or a hobbyist bought a GT911 breakout board, they were effectively handed a black box. They knew the chip spoke I2C, and they knew it had an interrupt pin, but the instruction set was a mystery.
The GT911 has a complex initialization sequence. It wasn't enough to just ask it for data. You had to write a long configuration block to specific memory addresses just to tell the controller how many touch points to support or how sensitive to be. Without the map, developers were flying blind.
If you want, I can produce a device-specific register map for your GT911 module—tell me the Product ID string or share the module's PCB markings.
(Invoking related search terms.)
The Go to product viewer dialog for this item. is a popular capacitive touch screen controller used in many small displays. Its register map is organized into four main functional blocks that you access via I2C. GT911 Register Map Summary
The device uses 16-bit register addresses (high byte first). Register Range Key Details 0x8040 – 0x8046 Command & Status
Used to send commands (e.g., reset, sleep) and check current chip status. 0x8047 – 0x80FF Configuration
Stores settings like screen resolution, touch sensitivity, and interrupt triggers. 0x8100 – 0x813F Coordinate Data
Contains the X/Y coordinates and pressure for up to 5 simultaneous touch points. 0x8140 – 0x814E Product Information Includes the Product ID, firmware version, and hardware ID. Commonly Used Registers 0x8140 – 0x8143: Product ID (usually "911" in ASCII).
0x814E: Buffer Status. When a touch is detected, the highest bit (bit 7) is set to 1. You must write a 0 back to this register after reading coordinates to clear the status.
0x8150: Start of the first touch point data (Point 1 X-coordinate low byte).
For detailed implementation steps, you can refer to technical guides like the Focus LCDs GT911 Programming Note.
The Goodix GT911 Go to product viewer dialog for this item. is a popular 5-point capacitive touch controller used in various small-to-medium-sized displays for automotive, mobile, and DIY electronics. Interfacing with this chip requires communicating via I2C and interacting with its structured internal memory known as the Register Map. Core Communication Basics gt911 register map
uses a standard I2C interface with a 16-bit register address.
Slave Address: Commonly 0x5D or 0x14, depending on how the INT pin is pulled during reset.
Register Addressing: Always send two bytes for the register address (High byte then Low byte) before reading or writing data.
Auto-Increment: The chip automatically increments the register address, allowing you to read multiple touch points in a single session. Register Map Summary
The register map is divided into functional blocks. Below are the primary addresses you will need for basic driver development.
| Address Range | Function Block | Key Registers & Details |
| :--- | :--- | :--- || 0x8040 | 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
To retrieve touch coordinates reliably, you should follow this sequence according to the GT911 Programming Guide:
Wait for Interrupt: Monitor the INT pin or poll the Status Register (0x814E) until Bit 7 becomes 1.
Read Point Count: The lower 4 bits of register 0x814E tell you how many fingers (0–5) are currently on the screen.
Fetch Coordinates: Read the coordinate registers for each active point. For example, Point 1's X-coordinate is at 0x8150 (Low) and 0x8151 (High).
Clear Status: Write 0x00 back to register 0x814E. If you skip this, the chip will not update the buffer with new data. Implementation Resources When a small startup or a hobbyist bought
If you are developing for specific platforms, these verified libraries and guides can save hours of debugging: 3. Register Map
Unlocking the Secrets of the GT911 Register Map: A Comprehensive Guide
The GT911 is a popular capacitive touch controller chip used in a wide range of applications, from smartphones and tablets to industrial control systems and automotive infotainment systems. One of the key aspects of working with the GT911 is understanding its register map, which is essential for configuring and controlling the chip's various functions. In this article, we will provide a detailed overview of the GT911 register map, including its structure, contents, and applications.
Introduction to the GT911
The GT911 is a highly integrated capacitive touch controller chip developed by Goodix, a leading provider of touchscreen solutions. The chip is designed to support up to 10 touch points and features advanced noise reduction and anti-interference capabilities. The GT911 is widely used in various applications, including consumer electronics, industrial control systems, and automotive infotainment systems.
GT911 Register Map Overview
The GT911 register map is a critical component of the chip's architecture, providing a interface for communication between the host processor and the GT911. The register map is a set of registers that store configuration data, control the chip's functions, and provide status information. The GT911 register map is divided into several sections, each with its own specific functions and characteristics.
Structure of the GT911 Register Map
The GT911 register map consists of 256 registers, each 8 bits wide. The registers are divided into several sections, including:
Detailed Description of GT911 Registers
Here is a detailed description of some of the key registers in the GT911 register map:
Applications of the GT911 Register Map
Understanding the GT911 register map is essential for developing applications that utilize the chip's advanced features. Some common applications of the GT911 register map include:
Conclusion
In conclusion, the GT911 register map is a critical component of the chip's architecture, providing a interface for communication between the host processor and the GT911. Understanding the GT911 register map is essential for developing applications that utilize the chip's advanced features, such as touchscreen calibration, touch point detection, gesture recognition, and error detection and handling. This article has provided a comprehensive overview of the GT911 register map, including its structure, contents, and applications. By mastering the GT911 register map, developers can unlock the full potential of the chip and create innovative and reliable touch-based applications.
References
Appendix
Here is a list of GT911 registers, including their addresses and descriptions:
| Register Address | Register Name | Description | | --- | --- | --- | | 0x00 | Chip ID Register | Stores the GT911 chip ID | | 0x01 | Configuration Register 1 | Stores configuration data for the touch controller | | 0x02 | Control Register 1 | Controls the chip's functions, including enabling or disabling the touch controller | | 0x10 | Touch Point Data Register | Stores touch point data, including x and y coordinates, touch pressure, and other relevant information | | 0x20 | Interrupt Status Register | Provides interrupt status information, including touch point detection, error flags, and other interrupt sources |
Note that this is not an exhaustive list of GT911 registers, but rather a selection of key registers discussed in this article. For a complete list of GT911 registers, refer to the GT911 datasheet or user manual.
Each touch point occupies 8 consecutive bytes. Point 1 starts at 0x8150.
| Offset | Description | |--------|-------------| | +0 | Track ID (changes on each new touch) | | +1 | X coordinate (low byte) | | +2 | X coordinate (high byte) | | +3 | Y coordinate (low byte) | | +4 | Y coordinate (high byte) | | +5 | Touch size (pressure/area) | | +6 | Reserved | | +7 | Reserved |
Address mapping for each point:
| CentOS 7 3.10.0-1160 | CentOS 8 4.18.0-348 | Debian 9 4.9.0-16 | Debian 10 4.19.0-17 | Debian 11 5.10.0-8 | Debian 12 6.1.0-18 | Fedora 35 5.16.18-200 | OpenSUSE 15.3 5.3.18-59.19 | Ubuntu 16 4.15.0-142 | Ubuntu 18 4.15.0-159 | Ubuntu 20 5.13.0-28 | Ubuntu 22 5.15.0-30 | |
| APCI-1016 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1032 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1500 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1516 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1564 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1648 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1696 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1710 / APCIe-1711 | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-1712 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-2016 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-2032 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-2200 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-3001 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-3120 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-3200 | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | IN PROGRESS | PASS | IN PROGRESS |
| APCI-3504 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-3600 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCI-3701 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-040 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-1516 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-1532 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-1564 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-1711 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-2032 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| APCIe-2200 | PASS | PASS | PASS | PASS | PASS | IN PROGRESS | PASS | PASS | PASS | PASS | PASS | PASS |
| xPCI-3xxx | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS |