MCPcopy Index your code
hub / github.com/Xinyuan-LilyGO/T-Display-S3

github.com/Xinyuan-LilyGO/T-Display-S3 @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
9,154 symbols 27,635 edges 1,736 files 2,526 documented · 28%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🌟T-Display-S3🌟

PlatformIO CI Arduino_CI

1️⃣Support Product

Product (PinMap) SOC Flash PSRAM Resolution Size
T-Display-S3 ESP32-S3R8 16MB 8MB(OPI) 170x320 1.9 Inch
T-Display-S3-Touch ESP32-S3R8 16MB 8MB(OPI) 170x320 1.9 Inch
T-Display-S3-MIDI

2️⃣Examples

./examples/
├── Arduino_GFXDemo              #  Arduino_GFX example
├── Arduino_GFX_PDQgraphicstest  #  Arduino_GFX example
├── GetBatteryVoltage            #  Get battery voltage example
├── I2CScan                      #  Scan for external devices using I2C
├── ImageScroll                  #  Image scrolling example by @Rudi Ackermann
├── MPR121TouchSensor            #  Example of using MPR121 capacitive touch
├── PCBClock                     #  TFT_eSPI PCBClock example by @VolosR
├── PokerS3                      #  TFT_eSPI PokerS3  example by @VolosR
├── SerialExample                #  Example of using serial communication
├── T-Display-S3-MIDI            #  T-Display-S3-MIDI Shield example
├── T-Display-S3-BLE-Receiver     #  Wireless BLE MIDI receiver with piano display (ESP32_Host_MIDI)
├── T-Display-S3-BLE-Sender       #  BLE MIDI sender with auto-play sequences (ESP32_Host_MIDI)
├── T-Display-S3-Piano           #  USB MIDI Piano visualizer with chord detection (ESP32_Host_MIDI + Gingoduino)
├── T-Display-S3-BLE-Receiver     #  Wireless BLE MIDI receiver with piano display (ESP32_Host_MIDI)
├── T-Display-S3-BLE-Sender       #  BLE MIDI sender with auto-play sequences (ESP32_Host_MIDI)
├── T-Display-S3-Piano-Debug      #  MIDI event monitor with raw packet inspector (ESP32_Host_MIDI)
├── T-Display-S3-Gingoduino       #  Real-time chord detection and harmonic analysis (ESP32_Host_MIDI + Gingoduino)
├── T-Display-S3-Queue            #  MIDI event queue visualizer for debugging (ESP32_Host_MIDI)
├── T-Display-S3-USB-Device       #  BLE-to-USB MIDI bridge — T-Display-S3 as USB MIDI interface (ESP32_Host_MIDI)
├── T-Display-S3-Music-Explorer   #  Interactive music theory explorer with audio synthesis (Gingoduino)
├── TFT_Rainbow                  #  TFT_eSPI example
├── factory                      #  factory example
├── lv_demos                     #  lvgl demo                        
├── nes                          #  NES game emulator
├── ota                          #  Over-the-air upgrade example
├── sd                           #  T-Display-TF Shield example
├── tft                          #  TFT_eSPI example
├── touch_test                   #  Capacitive touch test example
├── usb_hid_pad                  #  Capacitive Touch Screen Simulation USB HID Example
├── ULP_ADC                      #  Example of ADC detection for ULP-FSM(arduino_esp32 version: 3.0.0-rc3)
└── ULP_Count                    #  Example of register counting for ULP-FSM(arduino_esp32 version: 3.0.0-rc3)

3️⃣ PlatformIO Quick Start (Recommended)

  1. Install Visual Studio Code and Python
  2. Search for the PlatformIO plugin in the VisualStudioCode extension and install it.
  3. After the installation is complete, you need to restart VisualStudioCode
  4. After restarting VisualStudioCode, select File in the upper left corner of VisualStudioCode -> Open Folder -> select the T-Display-S3 directory
  5. Wait for the installation of third-party dependent libraries to complete
  6. Click on the platformio.ini file, and in the platformio column
  7. Uncomment one of the lines default_envs = xxxx to make sure only one line works
  8. Click the (✔) symbol in the lower left corner to compile
  9. Connect the board to the computer USB
  10. Click (→) to upload firmware
  11. Click (plug symbol) to monitor serial output
  12. If it cannot be written, or the USB device keeps flashing, please check the FAQ below

4️⃣ Arduino IDE Manual installation

  1. Install Arduino IDE
  2. In Arduino Preferences, on the Settings tab, enter the https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json URL in the Additional boards manager URLs input box. Please pay attention to the version. The test phase is using 2.0.14. It is not certain that versions above 2.0.14 can run. When the operation is abnormal, please downgrade to a version below 2.0.14. , As of 2024/08/02, TFT_eSPI does not work on versions higher than 2.0.14, see TFT_eSPI/issue3329
  3. Download T-Display-S3 , move to Arduino library folder (e.g. C:\Users\YourName\Documents\Arduino\libraries)
  4. Copy all folders in lib folder to Arduino library folder (e.g. C:\Users\YourName\Documents\Arduino\libraries)
  5. Enter the downloaded T-Display-S3/examples directory
  6. Select any example and double-click the any_example.ino to open it
  7. Open ArduinoIDE ,Tools ,Make your selection according to the table below | Arduino IDE Setting | Value | | ------------------------------------ | --------------------------------- | | Board | ESP32S3 Dev Module | | Port | Your port | | USB CDC On Boot | Enable | | CPU Frequency | 240MHZ(WiFi) | | Core Debug Level | None | | USB DFU On Boot | Disable | | Erase All Flash Before Sketch Upload | Disable | | Events Run On | Core1 | | Flash Mode | QIO 80MHZ | | Flash Size | 16MB(128Mb) | | Arduino Runs On | Core1 | | USB Firmware MSC On Boot | Disable | | Partition Scheme | 16M Flash(3M APP/9.9MB FATFS) | | PSRAM | OPI PSRAM | | Upload Mode | UART0/Hardware CDC | | Upload Speed | 921600 | | USB Mode | CDC and JTAG |

    • The options in bold are required, others are selected according to actual conditions.
  8. Click upload , Wait for compilation and writing to complete

  9. If it cannot be written, or the USB device keeps flashing, please check the FAQ below

  10. You can also choose LilyGo T-Display-S3 as the board, but the partition table is fixed to 16M Flash (3M APP/9.9MB FATFS)

  11. T-Display-S3 Arduino IDE Record

5️⃣ ESP-IDF

6️⃣ Micropython

7️⃣ ESP32 basic examples

8️⃣ Resource

Product(PinMap) schematic Dimensions PCB 3D PinMap
T-Display-S3 schematic DWG STP PinMap
T-Display-S3 Touch schematic DWG STP PinMap
T-Display-S3-MIDI schematic DWG STP

9️⃣ FAQ

  1. The screen does not light up when using battery?
  2. When T-Display-S3 is powered by battery, GPIO15 must be set to HIGH to turn on the backlight.
  3. Please add the following two lines at the beginning of the setup ```C++ void setup(){ //Turn on display power pinMode(15, OUTPUT); digitalWrite(15, HIGH); }

2. **The program can be written normally, but there is still no display after writing** * If you are using **TFT_eSPI**, then you can try running `Arduino_GFXDemo` first. If nothing is displayed after writing, you can determine that there is a problem with the hardware. * If `Arduino_GFXDemo` is written normally, but **TFT_eSPI** is not displayed, then it can be judged that `User_Setup_Select` has been overwritten, then please read the third article of **FAQ** to reconfigure **TFT_eSPI** 3. **How to update **TFT_eSPI**, or confirm whether the **TFT_eSPI** pin configuration is correct?** * Search for **TFT_eSPI** in the ArduinoIDE library manager and click Update. * Enter the default library manager installation location and open the **TFT_eSPI** folder. The default installation location is:(e.g. C:\Users\YourName\Documents\Arduino\libraries) * Open User_Setup_Select.h, comment out #include <User_Setup.h> which is enabled by default, or delete it * Search **Setup206_LilyGo_T_Display_S3**, find it, cancel the previous comment, then save it, and finally close it, so that TFT_eSPI uses the pin definition of T-Display-S3 by defaultc++ #include // For the LilyGo T-Display S3 based ESP32S3 with ST7789 170 x 320 TFT ``` 4. Can't upload any sketch,Please enter the upload mode manually. * Connect the board via the USB cable * Press and hold the BOOT button , While still pressing the BOOT button * Press RST button * Release the RST button * Release the BOOT button (If there is no BOOT button, disconnect IO0 from GND.) * Upload sketch * Press the RST button to exit download mode

  1. If you use external power supply instead of USB-C, please turn off the CDC option. This is because the board will wait for USB access when it starts.

  2. For Arduino IDE users, it can be turned off in the options , Please note that turning off USB CDC will turn off Serial redirection to USBC. At this time, you will not see any Serial message output when opening the port from USB-C, but output from GPIO43 and GPIO44.

c Tools -> USB CDC On Boot -> Disable

  • For platformio users, you can add the following compilation flags in the ini file

```c build_flags = ; Enable -DARDUINO_USB_CDC_ON_BOOT will start printing and wait for terminal access during startup ; -DARDUINO_USB_CDC_ON_BOOT=1

   ; Enable -UARDUINO_USB_CDC_ON_BOOT will turn off printing and will not block when using the battery
   -UARDUINO_USB_CDC_ON_BOOT

```

  1. If all the above are invalid, please flash the factory firmware for quick verification, please check here
  2. Can I use an external 5V pin for power? Please see here issues/205
  3. The default charging current is set at 500mA per hour. If you need to adjust the charging current, please see this issue

LED Description

FUNCTION COLOR
CHARGE LED RED
V3V indicator GREEN

Charging indicator led status

  1. Flashes or dimly lights when no battery is connected
  2. Remains on while charging
  3. Turns off when fully charged

V3V indicator

  1. In USB mode, the green indicator light stays on.
  2. In battery power mode, GPIO15 lights up when high and turns off when low.
  3. V3V controls the V3V output of the header pins and provides power to the screen.

Core symbols most depended-on inside this repo

lv_obj_add_style
called by 613
lib/lvgl/src/core/lv_obj_style.c
sendCommand
called by 499
lib/GFX Library for Arduino/src/Arduino_DataBus.cpp
pinMode
called by 463
lib/SensorLib/src/platform/esp_arduino.cpp
digitalWrite
called by 420
lib/SensorLib/src/platform/esp_arduino.cpp
lv_obj_set_grid_cell
called by 415
lib/lvgl/src/extra/layouts/grid/lv_grid.c
sendData
called by 400
lib/GFX Library for Arduino/src/Arduino_DataBus.cpp
delay
called by 392
lib/SensorLib/src/platform/esp_arduino.cpp
lv_scr_act
called by 342
lib/lvgl/src/core/lv_disp.h

Shape

Function 5,246
Method 3,072
Class 728
Enum 108

Languages

C++50%
C48%
Python2%
Ruby1%

Modules by API surface

lib/lvgl/src/extra/libs/png/lodepng.c247 symbols
lib/TFT_eSPI/examples/Sprite/Orrery/astronomy.c201 symbols
lib/ESP32-audioI2S-3.0.6/src/aac_decoder/aac_decoder.cpp153 symbols
lib/TFT_eSPI/TFT_eSPI.cpp129 symbols
lib/ESP32-audioI2S-3.0.6/src/Audio.cpp119 symbols
lib/lvgl/src/core/lv_obj_style_gen.h95 symbols
lib/lvgl/src/core/lv_obj_style_gen.c85 symbols
lib/SensorLib/src/bosch/bhy2.c85 symbols
lib/lvgl/src/misc/lv_style_gen.c84 symbols
lib/ESP32-audioI2S-3.0.6/src/vorbis_decoder/vorbis_decoder.cpp84 symbols
lib/SensorLib/src/SensorQMI8658.hpp83 symbols
lib/ESP32-audioI2S-3.0.6/src/opus_decoder/celt.cpp75 symbols

For agents

$ claude mcp add T-Display-S3 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page