mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-18 19:03:16 +00:00
BigTreeTech Panda Touch / K Touch (#402)
This commit is contained in:
parent
adea6678a5
commit
388c2cfe4b
3
.github/workflows/build-firmware.yml
vendored
3
.github/workflows/build-firmware.yml
vendored
@ -43,7 +43,8 @@ jobs:
|
|||||||
{ id: waveshare-s3-touch-lcd-43, arch: esp32s3 },
|
{ id: waveshare-s3-touch-lcd-43, arch: esp32s3 },
|
||||||
{ id: waveshare-s3-touch-lcd-147, arch: esp32s3 },
|
{ id: waveshare-s3-touch-lcd-147, arch: esp32s3 },
|
||||||
{ id: waveshare-s3-touch-lcd-128, arch: esp32s3 },
|
{ id: waveshare-s3-touch-lcd-128, arch: esp32s3 },
|
||||||
{ id: waveshare-s3-lcd-13, arch: esp32s3 }
|
{ id: waveshare-s3-lcd-13, arch: esp32s3 },
|
||||||
|
{ id: btt-panda-touch, arch: esp32s3 }
|
||||||
]
|
]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,6 +18,7 @@ managed_components/
|
|||||||
dependencies.lock
|
dependencies.lock
|
||||||
|
|
||||||
.vscode/
|
.vscode/
|
||||||
|
*.code-workspace
|
||||||
.gitpod.yml
|
.gitpod.yml
|
||||||
|
|
||||||
sdkconfig.board.*.dev
|
sdkconfig.board.*.dev
|
||||||
7
Boards/btt-panda-touch/CMakeLists.txt
Normal file
7
Boards/btt-panda-touch/CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
file(GLOB_RECURSE SOURCE_FILES Source/*.c*)
|
||||||
|
|
||||||
|
idf_component_register(
|
||||||
|
SRCS ${SOURCE_FILES}
|
||||||
|
INCLUDE_DIRS "Source"
|
||||||
|
REQUIRES Tactility esp_lvgl_port esp_lcd RgbDisplay GT911 PwmBacklight driver vfs fatfs
|
||||||
|
)
|
||||||
69
Boards/btt-panda-touch/Source/Configuration.cpp
Normal file
69
Boards/btt-panda-touch/Source/Configuration.cpp
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#include <PwmBacklight.h>
|
||||||
|
#include "devices/Display.h"
|
||||||
|
|
||||||
|
#include <Tactility/hal/Configuration.h>
|
||||||
|
#include <driver/gpio.h>
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
|
||||||
|
using namespace tt::hal;
|
||||||
|
|
||||||
|
static bool initBoot() {
|
||||||
|
//Display Reset
|
||||||
|
ESP_ERROR_CHECK(gpio_set_direction(GPIO_NUM_46, GPIO_MODE_OUTPUT));
|
||||||
|
ESP_ERROR_CHECK(gpio_set_level(GPIO_NUM_46, 0));
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(100));
|
||||||
|
ESP_ERROR_CHECK(gpio_set_level(GPIO_NUM_46, 1));
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(10));
|
||||||
|
|
||||||
|
return driver::pwmbacklight::init(GPIO_NUM_21);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DeviceVector createDevices() {
|
||||||
|
return {
|
||||||
|
createDisplay()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
extern const Configuration hardwareConfiguration = {
|
||||||
|
.initBoot = initBoot,
|
||||||
|
.createDevices = createDevices,
|
||||||
|
.i2c = {
|
||||||
|
//Touch
|
||||||
|
i2c::Configuration {
|
||||||
|
.name = "Internal",
|
||||||
|
.port = I2C_NUM_0,
|
||||||
|
.initMode = i2c::InitMode::ByTactility,
|
||||||
|
.isMutable = true,
|
||||||
|
.config = (i2c_config_t) {
|
||||||
|
.mode = I2C_MODE_MASTER,
|
||||||
|
.sda_io_num = GPIO_NUM_2,
|
||||||
|
.scl_io_num = GPIO_NUM_1,
|
||||||
|
.sda_pullup_en = true,
|
||||||
|
.scl_pullup_en = true,
|
||||||
|
.master = {
|
||||||
|
.clk_speed = 400000
|
||||||
|
},
|
||||||
|
.clk_flags = 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Rear header, JST PH 2.0, SDA IO4 / SCL IO3 / GND / 3.3V
|
||||||
|
i2c::Configuration {
|
||||||
|
.name = "External",
|
||||||
|
.port = I2C_NUM_1,
|
||||||
|
.initMode = i2c::InitMode::Disabled,
|
||||||
|
.isMutable = true,
|
||||||
|
.config = (i2c_config_t) {
|
||||||
|
.mode = I2C_MODE_MASTER,
|
||||||
|
.sda_io_num = GPIO_NUM_4,
|
||||||
|
.scl_io_num = GPIO_NUM_3,
|
||||||
|
.sda_pullup_en = false,
|
||||||
|
.scl_pullup_en = false,
|
||||||
|
.master = {
|
||||||
|
.clk_speed = 400000
|
||||||
|
},
|
||||||
|
.clk_flags = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
104
Boards/btt-panda-touch/Source/devices/Display.cpp
Normal file
104
Boards/btt-panda-touch/Source/devices/Display.cpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#include "Display.h"
|
||||||
|
|
||||||
|
#include <Gt911Touch.h>
|
||||||
|
#include <PwmBacklight.h>
|
||||||
|
#include <RgbDisplay.h>
|
||||||
|
#include <Tactility/Log.h>
|
||||||
|
|
||||||
|
std::shared_ptr<tt::hal::touch::TouchDevice> _Nullable createTouch() {
|
||||||
|
// Note for future changes: Reset pin is 41 and interrupt pin is 40
|
||||||
|
auto configuration = std::make_unique<Gt911Touch::Configuration>(
|
||||||
|
I2C_NUM_0,
|
||||||
|
800,
|
||||||
|
480
|
||||||
|
);
|
||||||
|
|
||||||
|
return std::make_shared<Gt911Touch>(std::move(configuration));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay() {
|
||||||
|
auto touch = createTouch();
|
||||||
|
|
||||||
|
constexpr uint32_t bufferPixels = 800 * 10;
|
||||||
|
|
||||||
|
esp_lcd_rgb_panel_config_t rgb_panel_config = {
|
||||||
|
.clk_src = LCD_CLK_SRC_DEFAULT,
|
||||||
|
.timings = {
|
||||||
|
.pclk_hz = 14000000,
|
||||||
|
.h_res = 800,
|
||||||
|
.v_res = 480,
|
||||||
|
.hsync_pulse_width = 4,
|
||||||
|
.hsync_back_porch = 8,
|
||||||
|
.hsync_front_porch = 8,
|
||||||
|
.vsync_pulse_width = 4,
|
||||||
|
.vsync_back_porch = 16,
|
||||||
|
.vsync_front_porch = 16,
|
||||||
|
.flags = {
|
||||||
|
.hsync_idle_low = false,
|
||||||
|
.vsync_idle_low = false,
|
||||||
|
.de_idle_high = false,
|
||||||
|
.pclk_active_neg = true,
|
||||||
|
.pclk_idle_high = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.data_width = 16,
|
||||||
|
.bits_per_pixel = 0,
|
||||||
|
.num_fbs = 2,
|
||||||
|
.bounce_buffer_size_px = bufferPixels,
|
||||||
|
.sram_trans_align = 8,
|
||||||
|
.psram_trans_align = 64,
|
||||||
|
.hsync_gpio_num = GPIO_NUM_NC,
|
||||||
|
.vsync_gpio_num = GPIO_NUM_NC,
|
||||||
|
.de_gpio_num = GPIO_NUM_38,
|
||||||
|
.pclk_gpio_num = GPIO_NUM_5,
|
||||||
|
.disp_gpio_num = GPIO_NUM_NC,
|
||||||
|
.data_gpio_nums = {
|
||||||
|
GPIO_NUM_17, // B
|
||||||
|
GPIO_NUM_18, // B
|
||||||
|
GPIO_NUM_48, // B
|
||||||
|
GPIO_NUM_47, // B
|
||||||
|
GPIO_NUM_39, // B
|
||||||
|
GPIO_NUM_11, // G
|
||||||
|
GPIO_NUM_12, // G
|
||||||
|
GPIO_NUM_13, // G
|
||||||
|
GPIO_NUM_14, // G
|
||||||
|
GPIO_NUM_15, // G
|
||||||
|
GPIO_NUM_16, // G
|
||||||
|
GPIO_NUM_6, // R
|
||||||
|
GPIO_NUM_7, // R
|
||||||
|
GPIO_NUM_8, // R
|
||||||
|
GPIO_NUM_9, // R
|
||||||
|
GPIO_NUM_10, // R
|
||||||
|
},
|
||||||
|
.flags = {
|
||||||
|
.disp_active_low = false,
|
||||||
|
.refresh_on_demand = false,
|
||||||
|
.fb_in_psram = true,
|
||||||
|
.double_fb = true,
|
||||||
|
.no_fb = false,
|
||||||
|
.bb_invalidate_cache = false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
RgbDisplay::BufferConfiguration buffer_config = {
|
||||||
|
.size = (800 * 480),
|
||||||
|
.useSpi = true,
|
||||||
|
.doubleBuffer = true,
|
||||||
|
.bounceBufferMode = true,
|
||||||
|
.avoidTearing = false
|
||||||
|
};
|
||||||
|
|
||||||
|
auto configuration = std::make_unique<RgbDisplay::Configuration>(
|
||||||
|
rgb_panel_config,
|
||||||
|
buffer_config,
|
||||||
|
touch,
|
||||||
|
LV_COLOR_FORMAT_RGB565,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
driver::pwmbacklight::setBacklightDuty
|
||||||
|
);
|
||||||
|
|
||||||
|
return std::make_shared<RgbDisplay>(std::move(configuration));
|
||||||
|
}
|
||||||
5
Boards/btt-panda-touch/Source/devices/Display.h
Normal file
5
Boards/btt-panda-touch/Source/devices/Display.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Tactility/hal/display/DisplayDevice.h>
|
||||||
|
|
||||||
|
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay();
|
||||||
@ -71,6 +71,8 @@ menu "Tactility App"
|
|||||||
bool "Waveshare ESP32 S3 Touch LCD 1.28"
|
bool "Waveshare ESP32 S3 Touch LCD 1.28"
|
||||||
config TT_BOARD_WAVESHARE_S3_LCD_13
|
config TT_BOARD_WAVESHARE_S3_LCD_13
|
||||||
bool "Waveshare ESP32 S3 LCD 1.3"
|
bool "Waveshare ESP32 S3 LCD 1.3"
|
||||||
|
config TT_BOARD_BTT_PANDA_TOUCH
|
||||||
|
bool "BigTreeTech Panda Touch"
|
||||||
help
|
help
|
||||||
Select a board/hardware configuration.
|
Select a board/hardware configuration.
|
||||||
Use TT_BOARD_CUSTOM if you will manually configure the board in your project.
|
Use TT_BOARD_CUSTOM if you will manually configure the board in your project.
|
||||||
|
|||||||
63
sdkconfig.board.btt-panda-touch
Normal file
63
sdkconfig.board.btt-panda-touch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# Software defaults
|
||||||
|
# Increase stack size for WiFi (fixes crash after scan)
|
||||||
|
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=3072
|
||||||
|
CONFIG_ESP_MAIN_TASK_STACK_SIZE=6144
|
||||||
|
CONFIG_LV_FONT_MONTSERRAT_14=y
|
||||||
|
CONFIG_LV_FONT_MONTSERRAT_18=y
|
||||||
|
CONFIG_LV_USE_USER_DATA=y
|
||||||
|
CONFIG_LV_USE_FS_STDIO=y
|
||||||
|
CONFIG_LV_FS_STDIO_LETTER=65
|
||||||
|
CONFIG_LV_FS_STDIO_PATH=""
|
||||||
|
CONFIG_LV_FS_STDIO_CACHE_SIZE=4096
|
||||||
|
CONFIG_LV_USE_LODEPNG=y
|
||||||
|
CONFIG_LV_USE_BUILTIN_MALLOC=n
|
||||||
|
CONFIG_LV_USE_CLIB_MALLOC=y
|
||||||
|
CONFIG_LV_USE_MSGBOX=n
|
||||||
|
CONFIG_LV_USE_SPINNER=n
|
||||||
|
CONFIG_LV_USE_WIN=n
|
||||||
|
CONFIG_LV_USE_SNAPSHOT=y
|
||||||
|
CONFIG_FREERTOS_HZ=1000
|
||||||
|
CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=2
|
||||||
|
CONFIG_FREERTOS_SMP=n
|
||||||
|
CONFIG_FREERTOS_UNICORE=n
|
||||||
|
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=5120
|
||||||
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
||||||
|
CONFIG_FATFS_LFN_HEAP=y
|
||||||
|
CONFIG_FATFS_VOLUME_COUNT=3
|
||||||
|
CONFIG_FATFS_SECTOR_512=y
|
||||||
|
CONFIG_WL_SECTOR_SIZE_512=y
|
||||||
|
CONFIG_WL_SECTOR_SIZE=512
|
||||||
|
CONFIG_WL_SECTOR_MODE_SAFE=y
|
||||||
|
CONFIG_WL_SECTOR_MODE=1
|
||||||
|
CONFIG_MBEDTLS_SSL_PROTO_TLS1_3=y
|
||||||
|
|
||||||
|
# Hardware: Main
|
||||||
|
CONFIG_PARTITION_TABLE_CUSTOM=y
|
||||||
|
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-16mb.csv"
|
||||||
|
CONFIG_PARTITION_TABLE_FILENAME="partitions-16mb.csv"
|
||||||
|
CONFIG_COMPILER_OPTIMIZATION_PERF=y
|
||||||
|
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
|
||||||
|
CONFIG_TT_BOARD_BTT_PANDA_TOUCH=y
|
||||||
|
CONFIG_TT_BOARD_NAME="BigTreeTech Panda Touch"
|
||||||
|
CONFIG_TT_BOARD_ID="btt-panda-touch"
|
||||||
|
CONFIG_IDF_TARGET="esp32s3"
|
||||||
|
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
|
||||||
|
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
|
||||||
|
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
|
||||||
|
CONFIG_FLASHMODE_QIO=y
|
||||||
|
# Hardware: SPI RAM
|
||||||
|
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
|
||||||
|
CONFIG_SPIRAM_MODE_OCT=y
|
||||||
|
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
|
||||||
|
CONFIG_SPIRAM_RODATA=y
|
||||||
|
CONFIG_SPIRAM_XIP_FROM_PSRAM=y
|
||||||
|
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y
|
||||||
|
CONFIG_SPIRAM_SPEED_120M=y
|
||||||
|
CONFIG_SPIRAM_USE_MALLOC=y
|
||||||
|
CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
|
||||||
|
# SPI Flash
|
||||||
|
CONFIG_ESPTOOLPY_FLASHFREQ_120M=y
|
||||||
|
# LVGL
|
||||||
|
CONFIG_LV_DISP_DEF_REFR_PERIOD=10
|
||||||
|
CONFIG_LV_DPI_DEF=139
|
||||||
|
CONFIG_LV_THEME_DEFAULT_DARK=y
|
||||||
Loading…
x
Reference in New Issue
Block a user