#pragma once #include "driver/i2c_types.h" #include "driver/ledc.h" #include "driver/spi_master.h" /* LCD SPI (ST7789) */ #define BOARD_LCD_HOST SPI2_HOST #define BOARD_LCD_PIXEL_CLOCK_HZ (20 * 1000 * 1000) #define BOARD_LCD_H_RES 170 #define BOARD_LCD_V_RES 320 /* LVGL logical resolution after 90° rotation (landscape) */ #define BOARD_LCD_LOGIC_H_RES 320 #define BOARD_LCD_LOGIC_V_RES 170 /* Touch IC → physical panel alignment (not LVGL logical rotation) */ #define BOARD_TOUCH_SWAP_XY 0 #define BOARD_TOUCH_MIRROR_X 0 #define BOARD_TOUCH_MIRROR_Y 0 #define BOARD_LCD_PANEL_H_RES 240 #define BOARD_LCD_GAP_X ((BOARD_LCD_PANEL_H_RES - BOARD_LCD_H_RES) / 2) #define BOARD_LCD_GAP_Y 0 #define BOARD_LCD_CMD_BITS 8 #define BOARD_LCD_PARAM_BITS 8 #define BOARD_PIN_LCD_SCLK 10 #define BOARD_PIN_LCD_MOSI 13 #define BOARD_PIN_LCD_MISO (-1) #define BOARD_PIN_LCD_DC 11 #define BOARD_PIN_LCD_RST 9 #define BOARD_PIN_LCD_CS 12 #define BOARD_PIN_BK_LIGHT 14 /* Backlight PWM */ #define BOARD_LCD_BK_LIGHT_CH LEDC_CHANNEL_0 #define BOARD_LCD_BK_LIGHT_TIMER LEDC_TIMER_0 #define BOARD_LCD_BK_LIGHT_FREQ 5000 #define BOARD_LCD_BK_LIGHT_ON_LEVEL 1 #define BOARD_LCD_BK_LIGHT_OFF_LEVEL (!BOARD_LCD_BK_LIGHT_ON_LEVEL) /* Touch I2C (CST816) */ #define BOARD_PIN_TOUCH_SDA 47 #define BOARD_PIN_TOUCH_SCL 48 #define BOARD_PIN_TOUCH_RST 17 #define BOARD_PIN_TOUCH_INT 21 #define BOARD_TOUCH_I2C_NUM I2C_NUM_0 #define BOARD_TOUCH_I2C_FREQ_HZ 400000 #define BOARD_TOUCH_ENABLED 1 /* IMU (QMI8658) — shares I2C bus with touch on IO47/IO48 */ #define BOARD_IMU_I2C_NUM I2C_NUM_0 #define BOARD_PIN_IMU_SDA 47 #define BOARD_PIN_IMU_SCL 48 #define BOARD_PIN_IMU_INT1 8 #define BOARD_PIN_IMU_INT2 7 #define BOARD_IMU_I2C_FREQ_HZ 400000 #define BOARD_IMU_ENABLED 1 /* User IO */ #define BOARD_PIN_BOOT 0 #define BOARD_PIN_KEY 4 #define BOARD_PIN_LED 16 /* BLE (ESP32-S3 built-in radio) */ #define BOARD_BLE_ENABLED 1 /* WiFi */ #define BOARD_WIFI_ENABLED 0 /* LVGL port */ #define BOARD_LVGL_DRAW_BUF_LINES 20 #define BOARD_LVGL_TICK_PERIOD_MS 2 #define BOARD_LVGL_TASK_MAX_DELAY_MS 500 #define BOARD_LVGL_TASK_MIN_DELAY_MS (1000 / CONFIG_FREERTOS_HZ) #define BOARD_LVGL_TASK_STACK_SIZE (8 * 1024) #define BOARD_LVGL_TASK_PRIORITY 2