arduino-esp32/variants/kodedot/pins_arduino.h
LusimiCollado 6e60f2f6b9
feat(variant): add kode dot ESP32-S3 board with QSPI LCD, SD and GPIO … (#11371)
* feat(variant): add KodeDot ESP32-S3 board with QSPI LCD, SD and GPIO header

* fix(kodedot): Reorder board definitions and translate comments to English

* fix(kodedot): Clean up OTA override and remove unused partition menu for kode dot

* fix(kodedot): Build board changed from ESP32S3_DEV to KODE_DOT on kode dot board

* ci(pre-commit): Fix whitespace, EOLs and codespell 'Analog'

* ci(pre-commit): Add bash script formatter

* fix(merge): New name and description for custom merge tool and change partitions table to variants folder
2025-06-30 13:18:02 +03:00

107 lines
4.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
────────────────────────────────────────────────────────────────────────
KodeDot ESP32-S3R8 Variant
Pin definition file for the Arduino-ESP32 core
────────────────────────────────────────────────────────────────────────
* External 2 × 10 connector → simple aliases PIN1 … PIN20
* On-board QSPI LCD 410×502 @40 MHz (SPI3_HOST)
* micro-SD on SPI2_HOST
* Dual-I²C: external (GPIO37/36) + internal-sensors (GPIO48/47)
* USB VID/PID 0x303A:0x1001
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <stdint.h>
#include <stdbool.h>
/*──────────────── USB device descriptor ────────────────*/
#define USB_VID 0x303A // Espressif Systems VID
#define USB_PID 0x1001 // Product ID: KodeDot-S3
/*──────────────── UART0 (Arduino Serial) ────────────────*/
static const uint8_t TX = 43; // U0TXD PIN16 on the 2×10 header
static const uint8_t RX = 44; // U0RXD PIN18 on the 2×10 header
/*──────────────── I²C buses ─────────────────────────────*/
/* External expansion bus → header pins 11/13 */
static const uint8_t SCL = 37; // GPIO37 PIN12
static const uint8_t SDA = 36; // GPIO36 PIN14
/* Internal sensor/touch bus (not on header) */
#define INT_I2C_SCL 47 // GPIO47
#define INT_I2C_SDA 48 // GPIO48
/*──────────────── SPI2 micro-SD ───────────────────────*/
static const uint8_t SS = 15; // SD_CS
static const uint8_t MOSI = 16; // SD_MOSI
static const uint8_t MISO = 18; // SD_MISO
static const uint8_t SCK = 17; // SD_CLK
#define BOARD_HAS_SD_SPI
#define SD_CS SS
/*──────────────── QSPI LCD (SPI3_HOST) ─────────────────–
* Controller: ST7789 / 4-line SPI (no D/C pin)
* Resolution: 410×502 px, 16 bpp, RGB color-space
* Clock: 40 MHz
*/
#define BOARD_HAS_SPI_LCD
#define LCD_MODEL ST7789
#define LCD_WIDTH 410
#define LCD_HEIGHT 502
#define LCD_HOST SPI3_HOST
#define LCD_SCK 35 // GPIO35 • QSPI_CLK
#define LCD_MOSI 33 // GPIO33 • QSPI_IO0 (D0)
#define LCD_IO1 34 // GPIO34 • QSPI_IO1 (D1)
#define LCD_IO2 37 // GPIO37 • QSPI_IO2 (D2)
#define LCD_IO3 36 // GPIO36 • QSPI_IO3 (D3)
#define LCD_CS 10 // GPIO10
#define LCD_RST 9 // GPIO09
#define LCD_DC -1 // not used in 4-line SPI
/* Optional: back-light enable shares the NeoPixel pin */
#define LCD_BL 5 // GPIO05 (same as NEOPIXEL)
/*──────────────── Analog / Touch pads ────────────────*/
static const uint8_t A0 = 11; // PIN4 GPIO11 / TOUCH11 / ADC2_CH0
static const uint8_t A1 = 12; // PIN6 GPIO12 / TOUCH12 / ADC2_CH1
static const uint8_t A2 = 13; // PIN8 GPIO13 / TOUCH13 / ADC2_CH2
static const uint8_t A3 = 14; // PIN10 GPIO14 / TOUCH14 / ADC2_CH3
static const uint8_t T0 = A0, T1 = A1, T2 = A2, T3 = A3;
/*──────────────── On-board controls & indicator ─────────*/
#define BUTTON_TOP 0 // GPIO00 BOOT • active-LOW
#define BUTTON_BOTTOM 6 // GPIO06 • active-LOW
#define NEOPIXEL_PIN 5 // GPIO05 WS2812
#define LED_BUILTIN NEOPIXEL_PIN
/*──────────────── JTAG (also on connector) ──────────────*/
#define MTCK 39 // PIN11 GPIO39
#define MTDO 40 // PIN13 GPIO40
#define MTDI 41 // PIN15 GPIO41
#define MTMS 42 // PIN17 GPIO42
/*──────────────── 2×10 header: simple aliases ───────────
NOTE: power pins (1 = 5 V, 2 = 3 V3, 19/20 = GND) are **not**
exposed as GPIO numbers they remain undefined here. */
#define PIN3 1 // GPIO01 / TOUCH1 / ADC1_CH0
#define PIN4 11 // GPIO11 / TOUCH11 / ADC2_CH0
#define PIN5 2 // GPIO02 / TOUCH2 / ADC1_CH1
#define PIN6 12 // GPIO12 / TOUCH12 / ADC2_CH1
#define PIN7 3 // GPIO03 / TOUCH3 / ADC1_CH2
#define PIN8 13 // GPIO13 / TOUCH13 / ADC2_CH2
#define PIN9 4 // GPIO04 / TOUCH4 / ADC1_CH3
#define PIN10 14 // GPIO14 / TOUCH14 / ADC2_CH3
#define PIN11 39 // MTCK
#define PIN12 37 // SCL (external I²C)
#define PIN13 40 // MTDO
#define PIN14 36 // SDA (external I²C)
#define PIN15 41 // MTDI
#define PIN16 43 // TX (U0TXD)
#define PIN17 42 // MTMS
#define PIN18 44 // RX (U0RXD)
/* PIN1, PIN2, PIN19, PIN20 are power/ground and deliberately
left undefined they are **not** usable as GPIO. */
#endif /* Pins_Arduino_h */