> Source: https://www.tinkered.ai/components/gc9a01-round-tft/arduino-uno (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/components/gc9a01-round-tft/arduino-uno. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# 1.28" Round TFT Display (GC9A01) with an Arduino Uno

The GC9A01's logic is rated to its 3.3 V I/O supply plus 0.3 V, so on an Arduino Uno its five signal lines need a level shifter unless the module provides one. Clock and data use the Uno's hardware SPI on D13 and D11, CS sits on D10, and DC and RST take D2 and D3.

## Wiring

| 1.28" Round TFT Display (GC9A01) | Arduino Uno | Note |
| --- | --- | --- |
| VCC | 5V |  |
| GND | GND |  |
| CS | D10 |  |
| DC | D2 |  |
| RST | D3 |  |
| SDA | D11 |  |
| SCL | D13 |  |

Warning: Its inputs are rated to its 3.3 V I/O supply plus 0.3 V: put a level shifter between this board's 5 V pins and the display.

## What to know on the Arduino Uno

- The controller's inputs are rated to IOVCC + 0.3 V with IOVCC at 3.3 V at most, so 5 V from the Uno's pins exceeds them. Drive CS, DC, RST, SDA and SCL through a level shifter such as a 74HC4050 unless your module has one. (GC9A01 datasheet V1.0, pp. 182, 183)
- A 240 × 240 frame in RGB565 is 115,200 bytes, about 56 times the Uno's 2 KB of SRAM, so Adafruit_GFX draws straight into the controller's own 129,600-byte memory and the Uno keeps no frame buffer. (GC9A01 datasheet V1.0, pp. 6, 7; Arduino UNO R3 tech specs)
- The ATmega328P's SPI runs at most at half its 16 MHz clock, 8 MHz, so a full-screen fill moves 115,200 bytes in no less than about 0.115 s. Draw only what changes rather than clearing the whole screen each frame. (Microchip ATmega328P datasheet DS40002061B, SPI section; Arduino UNO R3 tech specs)
- DC and RST occupy D2 and D3, the Uno's only external interrupt pins. If the project needs an interrupt, move them to free pins such as D8 and D9 and change TFT_DC and TFT_RST. (Arduino language reference, attachInterrupt())

## Code

Libraries: adafruit/Adafruit GC9A01A, adafruit/Adafruit GFX Library

```cpp
// 1.28" Round TFT Display (GC9A01) on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/gc9a01-round-tft/arduino-uno
#include <Adafruit_GFX.h>
#include <Adafruit_GC9A01A.h>

#define TFT_CS 10   // disp_1:CS  -> SS
#define TFT_DC 2    // disp_1:DC  -> D2
#define TFT_RST 3   // disp_1:RST -> D3

// Hardware SPI: SDA->MOSI and SCL->SCK are the fixed SPI pins (D11/D13 on Uno).
Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.begin();
  tft.fillScreen(GC9A01A_BLACK);

  // The glass is a circle: centre is (120, 120), usable radius 120.
  tft.drawCircle(120, 120, 118, GC9A01A_WHITE);
  tft.fillCircle(120, 120, 60, GC9A01A_BLUE);

  tft.setTextColor(GC9A01A_WHITE);
  tft.setTextSize(3);
  // Centre the text rather than starting at a corner, which is off-glass.
  tft.setCursor(60, 108);
  tft.println("ROUND");
}

void loop() {}
```

Compiled for arduino:avr:uno on 2026-10-30.

## Questions

### Does the GC9A01 round display need a level shifter on an Arduino Uno?

Yes, unless your module includes one. Its logic inputs are rated to IOVCC + 0.3 V with IOVCC at 3.3 V at most (GC9A01 datasheet, pp. 182, 183), and the Uno drives 5 V.

### Can an Arduino Uno buffer a frame for the 240x240 round display?

No. A full RGB565 frame is 115,200 bytes and the Uno has 2,048 bytes of SRAM. Adafruit_GC9A01A writes directly to the display's own memory, so draw shapes and text directly.

### Why is the GC9A01 slow to redraw on the Uno?

Hardware SPI on the Uno tops out at 8 MHz, so a full screen of 115,200 bytes takes at least about 0.115 s. Update small regions instead of calling fillScreen() every frame.

## More

- [1.28" Round TFT Display (GC9A01) reference](https://www.tinkered.ai/components/gc9a01-round-tft.md): pinout, specs, rules and common mistakes

## Try it

Tinkered simulates the 1.28" Round TFT Display (GC9A01) on the Arduino Uno in the browser, with this wiring and code, free: https://www.tinkered.ai/components/gc9a01-round-tft/arduino-uno
