-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
boards: add support for LILYGO TTGO T8 ESP32-S2
- Loading branch information
Showing
12 changed files
with
792 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# Copyright (c) 2020 HAW Hamburg | ||
# 2022 Gunar Schorcht | ||
# | ||
# This file is subject to the terms and conditions of the GNU Lesser | ||
# General Public License v2.1. See the file LICENSE in the top level | ||
# directory for more details. | ||
|
||
config BOARD | ||
default "esp32s2-lilygo-ttgo-t8" if BOARD_ESP32S2_LILYGO_TTGO_T8 | ||
|
||
config BOARD_ESP32S2_LILYGO_TTGO_T8 | ||
bool | ||
default y | ||
select BOARD_COMMON_ESP32S2 | ||
select CPU_MODEL_ESP32S2 | ||
select HAS_ARDUINO | ||
select HAS_ESP_RTC_TIMER_32K if ESP32S2_LILYGO_TTGO_T8_32K_XTAL | ||
select HAS_ESP_SPI_RAM | ||
select HAS_HIGHLEVEL_STDIO if ESP32S2_LILYGO_TTGO_T8_USB | ||
select HAS_PERIPH_ADC | ||
select HAS_PERIPH_DAC | ||
select HAS_PERIPH_I2C | ||
select HAS_PERIPH_PWM | ||
select HAS_PERIPH_SPI | ||
select HAS_PERIPH_USBDEV | ||
select HAS_SDCARD_SPI | ||
select HAS_TINYUSB_DEVICE | ||
select HAVE_MTD_SDCARD_DEFAULT | ||
select HAVE_ST7735 | ||
select MODULE_FATFS_VFS if MODULE_VFS_DEFAULT | ||
select MODULE_USBUS_CDC_ACM if MODULE_USBUS | ||
|
||
menu "LILYGO TTGO T8 ESP32-S2 Board configurations" | ||
depends on BOARD_ESP32S2_LILYGO_TTGO_T8 | ||
|
||
config ESP32S2_LILYGO_TTGO_T8_USB | ||
bool "USB interface is used instead of USB-to-UART bridge" | ||
help | ||
The USB D-/D+ signals are connected via DIP switches either to the | ||
USB-to-UART bridge (default) or to GPIO19/GPIO20 of the ESP32-S2. | ||
To use the USB interface of the ESP32-S2, the USB D-/D+ signals | ||
must be connected to GPIO19 and GPIO20 and this option has to be | ||
enabled. | ||
|
||
config ESP32S2_LILYGO_TTGO_T8_32K_XTAL | ||
bool "32.768 kHz crystal is used" | ||
default y | ||
help | ||
GPIO15 and GPIO16 of the ESP32-S2 are connected via DIP switches | ||
either with the on-board 32.768 kHz crystal (default) or the | ||
according pins at the extension headers. If the pins at the | ||
extension headers are used instead, disable this option. | ||
|
||
endmenu | ||
|
||
choice STDIO_IMPLEMENTATION | ||
default MODULE_STDIO_CDC_ACM if MODULE_USBUS | ||
default MODULE_STDIO_TINYUSB_CDC_ACM if MODULE_TINYUSB_DEVICE | ||
endchoice | ||
|
||
source "$(RIOTBOARD)/common/esp32s2/Kconfig" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
MODULE = board | ||
|
||
DIRS = $(RIOTBOARD)/common/esp32s2 | ||
|
||
include $(RIOTBASE)/Makefile.base |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
ifneq (,$(filter esp32s2-lilygo-ttgo-t8-usb,$(USEMODULE))) | ||
include $(RIOTBOARD)/common/makefiles/stdio_cdc_acm.dep.mk | ||
endif | ||
|
||
ifneq (,$(filter mtd,$(USEMODULE))) | ||
USEMODULE += mtd_sdcard_default | ||
endif | ||
|
||
# default to using fatfs on SD card | ||
ifneq (,$(filter vfs_default,$(USEMODULE))) | ||
USEMODULE += fatfs_vfs | ||
USEMODULE += mtd | ||
endif | ||
|
||
ifneq (,$(filter disp_dev,$(USEMODULE))) | ||
USEMODULE += st7735 | ||
endif | ||
|
||
include $(RIOTBOARD)/common/esp32s2/Makefile.dep |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# the board uses a ESP32-S2 with external 4MB QSPI Flash and external 8MB QSPI PSRAM | ||
CPU_MODEL = esp32s2 | ||
FEATURES_PROVIDED += esp_spi_ram | ||
|
||
# common board and CPU features | ||
include $(RIOTBOARD)/common/esp32s2/Makefile.features | ||
|
||
# peripherals provided by the board | ||
FEATURES_PROVIDED += periph_adc | ||
FEATURES_PROVIDED += periph_dac | ||
FEATURES_PROVIDED += periph_i2c | ||
FEATURES_PROVIDED += periph_pwm | ||
FEATURES_PROVIDED += periph_spi | ||
FEATURES_PROVIDED += periph_usbdev | ||
|
||
# other features provided by the board | ||
FEATURES_PROVIDED += arduino | ||
FEATURES_PROVIDED += esp_rtc_timer_32k | ||
FEATURES_PROVIDED += sdcard_spi | ||
FEATURES_PROVIDED += tinyusb_device | ||
|
||
ifneq (,$(filter esp32s2-lilygo-ttgo-t8-usb,$(USEMODULE))) | ||
FEATURES_PROVIDED += highlevel_stdio | ||
endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
PSEUDOMODULES += esp32s2-lilygo-ttgo-t8-usb | ||
|
||
ifneq (,$(filter esp32s2-lilygo-ttgo-t8-usb,$(USEMODULE))) | ||
PORT_LINUX ?= /dev/ttyACM0 | ||
endif | ||
|
||
include $(RIOTBOARD)/common/esp32s2/Makefile.include |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/* | ||
* Copyright (C) 2023 Gunar Schorcht | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @ingroup boards_esp32s2_lilygo_ttgo_t8 | ||
* @{ | ||
* | ||
* @file | ||
* @brief Board initialization for the LILYGO TTGO T8 ESP32-S2 board | ||
* | ||
* @author Gunar Schorcht <[email protected]> | ||
*/ | ||
|
||
#include "board.h" | ||
#include "periph/gpio.h" | ||
|
||
void board_init(void) | ||
{ | ||
if (IS_USED(MODULE_ST7735)) { | ||
gpio_init(BACKLIGHT_PIN, GPIO_OUT); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
/* | ||
* Copyright (C) 2022 Gunar Schorcht | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @defgroup boards_esp32s2_lilygo_ttgo_t8 LILYGO TTGO T8 ESP32-S2 Board | ||
* @ingroup boards_esp32s2 | ||
* @brief Support for LILYGO TTGO T8 ESP32-S2 Board | ||
* @author Gunar Schorcht <[email protected]> | ||
|
||
\section esp32s2_lilygo_ttgo_t8 LILYGO TTGO T8 ESP32-S2 | ||
|
||
## Table of Contents {#esp32s2_lilygo_ttgo_t8_toc} | ||
|
||
1. [Overview](#esp32s2_lilygo_ttgo_t8_overview) | ||
2. [Hardware](#esp32s2_lilygo_ttgo_t8_hardware) | ||
1. [MCU](#esp32s2_lilygo_ttgo_t8_mcu) | ||
2. [Board Configuration](#esp32s2_lilygo_ttgo_t8_board_configuration) | ||
3. [Board Pinout](#esp32s2_lilygo_ttgo_t8_pinout) | ||
3. [Flashing the Device](#esp32s2_lilygo_ttgo_t8_flashing) | ||
|
||
## Overview {#esp32s2_lilygo_ttgo_t8_overview} | ||
|
||
The Espressif LILYGO TTGO T8 ESP32-S2 is a ESP32-S2 board with an OLED Display | ||
(not yet supported) and a TF Card slot. | ||
|
||
\image html https://ae01.alicdn.com/kf/H8062f551fe7b4233809294d4a5b1d45d1.jpg "LILYGO TTGO T8 ESP32-S2" width=600px | ||
|
||
The board has following main features: | ||
|
||
Feature | Support | ||
:--------------------|:------- | ||
ESP32-S2 SoC | yes | ||
4 MB Flash | yes | ||
8 MB QSPI RAM | yes | ||
SD Card slot | yes | ||
32.768KHz Crystal | yes | ||
OLED display ST77789 | no | ||
|
||
[Back to table of contents](#esp32s2_lilygo_ttgo_t8_toc) | ||
|
||
## Hardware {#esp32s2_lilygo_ttgo_t8_hardware} | ||
|
||
This section describes | ||
|
||
- the [MCU](#esp32s2_lilygo_ttgo_t8_mcu), | ||
- the default [board configuration](#esp32s2_lilygo_ttgo_t8_board_configuration), | ||
- [optional hardware configurations](#esp32s2_lilygo_ttgo_t8_optional_hardware), | ||
- the [board pinout](#esp32s2_lilygo_ttgo_t8_pinout). | ||
|
||
[Back to table of contents](#esp32s2_lilygo_ttgo_t8_toc) | ||
|
||
### MCU {#esp32s2_lilygo_ttgo_t8_mcu} | ||
|
||
Most features of the board are provided by the ESP32-S2 SoC. For detailed | ||
information about the ESP32-S2 SoC variant (family) and ESP32x SoCs, | ||
see section \ref esp32_mcu_esp32 "ESP32 SoC Series". | ||
|
||
[Back to table of contents](#esp32s2_lilygo_ttgo_t8_toc) | ||
|
||
### Board Configuration {#esp32s2_lilygo_ttgo_t8_board_configuration} | ||
|
||
The LILYGO TTGO T8 ESP32-S2 board uses the `SPI_DEV(0)` (FSPI) for the | ||
OLED Display. The GPIOs of `SPI_DEV(0)` are therefore not broken out. | ||
SPI_DEV(1) is used for the SD Card slot. These GPIOs are broken out and | ||
can also be used by other devices. | ||
|
||
The LILYGO TTGO T8 ESP32-S2 has a USB-to-UART bridge on board. The USB D-/D+ | ||
signals of the USB-C connector are connected via DIP switches either to this | ||
USB-to-UART bridge (default) or to GPIO19/GPIO20 of the ESP32-S2. To use the | ||
USB-OTG interface of the ESP32-S2, the USB D-/D+ signals must be connected to | ||
GPIO19 and GPIO20, see section \ref esp32s2_lilygo_ttgo_t8_pinout "Pinout". | ||
If the USB-to-UART bridge is used, module `stdio_cdc_acm` or module | ||
`stdio_tinyusb_cdc_acm` can be enabled to use the USB interface also for the | ||
console. | ||
|
||
The LILYGO TTGO T8 ESP32-S2 has a 32.768 kHz crystal on the board, which is | ||
connected to GPIO15 and GPIO16 via DIP switches (default). The crystal can | ||
be switched off via the DIP switches so that GPIO15 and GPIO16 become available | ||
at the headers, see section \ref esp32s2_lilygo_ttgo_t8_pinout "Pinout". | ||
|
||
The following table shows the default board configuration, which is sorted | ||
according to the defined functionality of GPIOs. This configuration can be | ||
overridden by \ref esp32_application_specific_configurations | ||
"application-specific configurations". | ||
|
||
<center> | ||
Function | GPIOs | Remarks | Configuration | ||
:---------------|:-------|:--------|:---------------------------------- | ||
BUTTON0 | GPIO0 | | | | ||
ADC_LINE(n) | GPIO1 ... GPIO9 | | \ref esp32_adc_channels "ADC Channels" | ||
DAC_LINE(n) | GPIO17, GPIO18 | | \ref esp32_dac_channels "DAC Channels" | ||
GPIO38 | GPIO38 | OLED RESET (not broken out) | | | ||
I2C_DEV(0) SCL | GPIO7 | | \ref esp32_i2c_interfaces "I2C Interfaces" | ||
I2C_DEV(0) SDA | GPIO8 | | \ref esp32_i2c_interfaces "I2C Interfaces" | ||
PWM_DEV(0) | GPIO39, GPIO40, GPIO41, GPIO42 | - | \ref esp32_pwm_channels "PWM Channels" | ||
PWM_DEV(1) | GPIO15, GPIO16 | if module `esp_rtc_timer_32k` is not used | \ref esp32_pwm_channels "PWM Channels" | ||
SPI_DEV(0) CLK | GPIO36 | OLED CLK (not broken out) | | | ||
SPI_DEV(0) MISO | GPIO37 | OLED MISO (not broken out) | | | ||
SPI_DEV(0) MOSI | GPIO35 | OLED MOSI (not broken out) | | | ||
SPI_DEV(0) CS0 | GPIO34 | OLED CS0 (not broken out) | | | ||
SPI_DEV(1) CLK | GPIO12 | SD Card CLK | \ref esp32_spi_interfaces "SPI Interfaces" | ||
SPI_DEV(1) MISO | GPIO37 | SD Card MISO | \ref esp32_spi_interfaces "SPI Interfaces" | ||
SPI_DEV(1) MOSI | GPIO35 | SD Card MOSI | \ref esp32_spi_interfaces "SPI Interfaces" | ||
SPI_DEV(1) CS0 | GPIO34 | SD Card CS | \ref esp32_spi_interfaces "SPI Interfaces" | ||
UART_DEV(0) TxD | GPIO43 | Console | \ref esp32_uart_interfaces "UART interfaces" | ||
UART_DEV(0) RxD | GPIO44 | Console | \ref esp32_uart_interfaces "UART interfaces" | ||
USB D- | GPIO19 | if USB-to-UART bridge is not used | | | ||
USB D+ | GPIO20 | if USB-to-UART bridge is not used | | | ||
</center> | ||
\n | ||
|
||
For detailed information about the peripheral configurations of ESP32-S2 | ||
boards, see section \ref esp32_peripherals "Common Peripherals". | ||
|
||
[Back to table of contents](#esp32s2_lilygo_ttgo_t8_toc) | ||
|
||
### Board Pinout {#esp32s2_lilygo_ttgo_t8_pinout} | ||
|
||
The following figure shows the pinout as configured by the board | ||
definition. | ||
|
||
@image html https://ae01.alicdn.com/kf/H4a77f8684c144384a165d7a89476c602q.jpg "LILYGO TTGO T8 ESP32-S2 Pinout" width=900px | ||
|
||
The corresponding board schematics can be found [here] | ||
(https://github.com/Xinyuan-LilyGO/LilyGo-T-Display-S2/raw/master/schematic/ESP32_S2-Display.pdf) | ||
|
||
[Back to table of contents](#esp32s2_lilygo_ttgo_t8_toc) | ||
|
||
## Flashing the Device {#esp32s2_lilygo_ttgo_t8_flashing} | ||
|
||
Flashing RIOT is quite easy. The board has an USB-C connector which is either | ||
connected to the USB-to-UART bridge (default) with a built-in reset/boot/flash | ||
logic or to the USB signals of the ESP32-S2 SoC. The flash method depends on | ||
the configuration of the DIP switches, | ||
see section \ref esp32s2_lilygo_ttgo_t8_pinout "Pinout". | ||
|
||
### USB-C connector is connected to the USB-to-UART bridge (default) | ||
|
||
Just connect the board to your host computer and type using the programming | ||
port: | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
BOARD=esp32s2-liligo-ttgo-t8 make flash ... | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
For detailed information about ESP32-S2 as well as configuring and compiling | ||
RIOT for ESP32-S2 boards, see \ref esp32_riot. | ||
|
||
### USB-C connector is connected to the USB signals of the ESP32-S2 SoC | ||
|
||
In this configuration the integrated USB-to-JTAG bridge can be used to flash | ||
the board. The USB-to-JTAG bridge is automatically activated in the download | ||
mode of the bootloader, provided that the eFuses `JTAG_SEL_ENABLE` and | ||
`DIS_USB_JTAG` are not burned (see also section | ||
\ref esp32_jtag_interface_esp32s2 "JTAG Interface" strapping pin GPIO3). | ||
|
||
For this purpose, connect the board to your host computer and enter the | ||
following command using the programming port: | ||
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
USEMODULE=esp32s2-lilygo-ttgo-t8-usb BOARD=esp32s2-liligo-ttgo-t8 make flash ... | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
If RIOT is already on the device, it should automatically reset the device | ||
and enter the bootloader download mode. If | ||
|
||
- RIOT is not already on the device or | ||
- automatic reset does not work or | ||
- the device is stuck in some other mode, | ||
|
||
the download mode has to be forced before by pressing the Reset (RST) button | ||
while holding the BOOT (BOT) button. | ||
|
||
[Back to table of contents](#esp32s2_lilygo_ttgo_t8_toc) | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* Copyright (C) 2022 Gunar Schorcht | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @ingroup boards_esp32s2_lilygo_ttgo_t8 | ||
* @{ | ||
* | ||
* @file | ||
* @brief Board specific configuration for the Arduino API | ||
* | ||
* @author Gunar Schorcht <[email protected]> | ||
*/ | ||
|
||
#ifndef ARDUINO_BOARD_H | ||
#define ARDUINO_BOARD_H | ||
|
||
#include "arduino_board_common.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* @brief The on-board LED is not available | ||
*/ | ||
#define ARDUINO_LED (0) | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* ARDUINO_BOARD_H */ | ||
/** @} */ |
Oops, something went wrong.