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
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
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:
- Configuration Registers: These registers store configuration data for the GT911, such as the touch sensitivity, debounce time, and interrupt settings.
- Control Registers: These registers control the chip's functions, such as enabling or disabling the touch controller, setting the scan frequency, and configuring the interrupt output.
- Status Registers: These registers provide status information about the GT911, such as touch point data, error flags, and interrupt status.
- Data Registers: These registers store touch point data, including x and y coordinates, touch pressure, and other relevant information.
Detailed Description of GT911 Registers
Here is a detailed description of some of the key registers in the GT911 register map:
- Register 0x00: Chip ID Register: This register stores the GT911 chip ID, which can be used to identify the chip and verify its functionality.
- Register 0x01: Configuration Register 1: This register stores configuration data for the touch controller, including the touch sensitivity and debounce time.
- Register 0x02: Control Register 1: This register controls the chip's functions, including enabling or disabling the touch controller and setting the scan frequency.
- Register 0x10: Touch Point Data Register: This register stores touch point data, including x and y coordinates, touch pressure, and other relevant information.
- Register 0x20: Interrupt Status Register: This register provides interrupt status information, including touch point detection, error flags, and other interrupt sources.
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:
- Touchscreen Calibration: The GT911 register map provides access to calibration data, which can be used to adjust the touch screen's sensitivity and accuracy.
- Touch Point Detection: The GT911 register map provides touch point data, which can be used to detect and track multiple touch points on the screen.
- Gesture Recognition: The GT911 register map provides data on touch point movement and velocity, which can be used to recognize gestures such as swiping, pinching, and tapping.
- Error Detection and Handling: The GT911 register map provides error flags and status information, which can be used to detect and handle errors such as touch point detection errors or communication errors.
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.
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
is a popular 5-point capacitive touch controller that communicates via
. Understanding its register map is essential for configuring the screen, handling touch events, and reading coordinates. Key Hardware Details I2C Addresses: The chip supports two addresses, (default) or , depending on the state of the pin during power-on. Essential Pins: VDD, GND, SCL, SDA, (touch event interrupt), and Crystalfontz Core Register Map Highlights The register addresses are
allows for continuous reading; it will automatically increment the address after each byte is sent STMicroelectronics Community GOODiX GT911 Programming Guide 2014-08-04_Rev.00
GT911 register map is a critical reference for developers working with this common capacitive touch controller. It defines how to configure the sensor and retrieve touch data via I2C. Orient Display Core Register Structure The GT911 utilizes a 16-bit register address
system. The map is generally divided into three primary functional areas: Orient Display Real-Time Commands (0x8040):
A write-only register used to trigger immediate actions like reading coordinates, entering screen-off mode, or performing calibrations. Configuration Information (0x8047 – 0x8100):
A read/write area used to set touch thresholds, resolution, and sensor behavior. Coordinate/Status Data (0x814E and above):
Used to read the status of touch points and their X/Y coordinates. Orient Display Key Registers for Developers Writes control codes (e.g., to read coordinates, for screen off). Config Version Indicates the version of the current configuration loaded. Touch Threshold
Determines the sensitivity required to trigger a "touch" event.
bit7 indicates if data is ready to be read; lower bits show the number of touch points. Point 1 X-Low
The start of the data buffer for specific touch coordinates. Development Considerations Datasheed and Register map for the GT911
The GT911 register map is a 16-bit addressing scheme used to configure and read data from the Goodix GT911 capacitive touch controller. This high-performance IC supports up to 5-point multi-touch and communicates with a host processor via a standard I2C interface with speeds up to 400 kHz. GT911 Register Map Overview
The register map is organized into functional blocks ranging from real-time commands to coordinate data reporting. Register Range Description Access Type 0x8040 – 0x8046 Command and Status Read/Write (R/W) 0x8047 – 0x80FF Configuration Data Read/Write (R/W) 0x8100 – 0x813F Coordinate Data Read-Only (R) 0x8140 – 0x814E Product ID and Information Read-Only (R) Key Register Descriptions 1. Command Register (0x8040)
This register is used to send operational commands to the GT911. Common commands include: 0x00: Read coordinates status. 0x05: Screen off mode.
0x08: Enter Gesture mode (must be preceded by a write to 0x8046).
0xAA: ESD protection mechanism; drivers should write this value and check it regularly to ensure the chip hasn't reset due to electrostatic discharge. 2. Configuration Registers (0x8047 – 0x80FF)
These registers define how the touch sensor behaves. They are typically written once during initialization.
Resolution (0x8048 – 0x804B): Sets the X and Y axis maximum coordinates. For example, a screen can be configured for depending on these values.
Touch Threshold (0x804D): Determines the sensitivity required to register a touch.
Config Checksum (0x80FF): A vital byte used to validate the entire configuration block. If the checksum is incorrect, the GT911 may ignore the new settings. 3. Coordinate Data (0x8100 – 0x813F) This block reports live touch events.
Status Register (0x814E): The first byte indicates how many touch points are currently detected (bits 0-3) and if new data is ready (buffer status bit 7).
Point Data: Each touch point follows with 6 bytes of data, including Track ID and X/Y coordinates. I2C Communication Protocols
The GT911 uses a 16-bit register address, sent as two 8-bit bytes (High byte then Low byte). 3. Register Map
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.
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
Contains settings like resolution (X/Y), sensitivity, and touch threshold. Touch Status Register
High bit (bit 7) indicates if new touch data is available. Lower bits indicate number of touch points. Touch Data Registers
Stores the X/Y coordinates and track IDs for up to 5 concurrent touch points. Commonly Used Registers (Command): : Read coordinates status. : Screen off (low power mode). : Enter Charge mode. (Buffer Status):
"Buffer Status". If set to 1, the host should read the touch data. After reading, the host write 0 back to this register to clear the flag. (Point 1 Coordinates):
The starting point for the first touch. Data is usually formatted as: Programming Flow Initialize I2C: Set the speed (standard 100kHz or fast 400kHz). Configuration: (Optional) Write parameters to if you need to change the screen resolution or orientation. Polling Loop: Read register Check if Bit 7 is high.
If high, read the required number of coordinate blocks (starting from
to clear the buffer status so the chip can update with new data. Focus LCDs
For detailed hardware setup including pull-up resistor requirements (typically 2.2kΩ to 10kΩ), refer to the Focus LCDs Programming Guide Do you need a C/C++ code snippet
for reading coordinates from a specific platform like Arduino or STM32?
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 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.
The GT911 Register Map (Key Sections)
Below is the essential register map broken into functional groups. All addresses are in hex.
Touch/status registers
-
0x814E / 0x814F onward — Product ID string (length varies).
-
0x8140 (also part of config) — see above.
-
0x814E sometimes used for firmware/product ID; implementations vary — read product ID to confirm.
-
0x8140 family overlaps with config; primary touch data region is below:
-
0x8140 family confusion aside, main runtime touch/status are under 0x8140 or 0x814E on many modules; however Goodix commonly documents:
-
0x8140 — Status/interrupt register (1 byte):
- Bit0 = 1 indicates new touch data available (clear by reading register and writing 0).
- Bits indicate gesture/points count in some firmwares.
-
0x8141 — Number of touch points (n) (1 byte).
-
0x8142–0x8151 — Touch data block for point 1..n (6–8 bytes each), repeated per point:
- Byte0: Event flag (0=down,1=up,2=contact,3=reserved)
- Byte1: Touch ID (0..F)
- Byte2: X coordinate low byte
- Byte3: X coordinate high byte
- Byte4: Y coordinate low byte
- Byte5: Y coordinate high byte
- Byte6: Size/pressure (optional)
- (Layout can be 8 bytes per point on newer firmwares)
-
Example: for point i, offset = 0x8143 + (i-1)*8 (confirm per device).
Mastering the GT911 Touch Controller: A Complete Guide to the Register Map
The GT911 is one of the most popular capacitive touch panel controllers in the embedded world. Found in everything from Raspberry Pi touchscreens and DIY handheld gaming consoles to industrial HMIs and automotive displays, its popularity stems from its robust noise immunity, support for up to 5 simultaneous touches, and low cost. However, for engineers and hobbyists alike, the true power of the GT911 lies hidden within its register map.
Accessing this map via I²C is the key to configuration, calibration, and raw data acquisition. This article provides an exhaustive deep dive into the GT911 register map, from basic addressing to advanced gesture recognition.
Purpose
GT911 (Goodix) touch controller register map shows registers for configuration, status, touch points, and commands. This guide gives key register addresses, sizes, and typical use.