From b67f091c4637fe7852b5805818f6b571ebcfd7c0 Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Thu, 9 Jan 2025 22:12:05 +0100 Subject: [PATCH 1/2] Add alt for esp32-8048S043C-SD (#135) --- .../esp32-8048S043C-smartdisplay-alt.json | 143 ++++++++++++++++++ CYD-Klipper/platformio.ini | 2 + _site/index.html | 1 + ci.py | 4 +- 4 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 CYD-Klipper/boards/esp32-8048S043C-smartdisplay-alt.json diff --git a/CYD-Klipper/boards/esp32-8048S043C-smartdisplay-alt.json b/CYD-Klipper/boards/esp32-8048S043C-smartdisplay-alt.json new file mode 100644 index 0000000..70654c4 --- /dev/null +++ b/CYD-Klipper/boards/esp32-8048S043C-smartdisplay-alt.json @@ -0,0 +1,143 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "partitions": "default_16MB.csv", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "'-D ARDUINO_ESP32S3_DEV'", + "'-D BOARD_HAS_PSRAM'", + "'-D ARDUINO_USB_MODE=1'", + "'-D ARDUINO_RUNNING_CORE=1'", + "'-D ARDUINO_EVENT_RUNNING_CORE=1'", + "'-D ARDUINO_USB_CDC_ON_BOOT=0'", + "'-D ESP32_8048S043C'", + "'-D LCD_WIDTH=800'", + "'-D LCD_HEIGHT=480'", + "'-D LVGL_BUFFER_PIXELS=(LCD_WIDTH*LCD_HEIGHT)'", + "'-D LVGL_BUFFER_MALLOC_FLAGS=(MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT)'", + "'-D GPIO_BCKL=2'", + "'-D LCD_ST7262_PAR'", + "'-D ST7262_PANEL_CONFIG_CLK_SRC=LCD_CLK_SRC_PLL160M'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_PCLK_HZ=14000000'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_H_RES=LCD_WIDTH'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_V_RES=LCD_HEIGHT'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_HSYNC_PULSE_WIDTH=4'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_HSYNC_BACK_PORCH=8'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_HSYNC_FRONT_PORCH=8'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_PULSE_WIDTH=4'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_BACK_PORCH=8'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_FRONT_PORCH=8'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_HSYNC_IDLE_LOW=false'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_VSYNC_IDLE_LOW=false'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_DE_IDLE_HIGH=false'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_PCLK_ACTIVE_NEG=true'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_PCLK_IDLE_HIGH=false'", + "'-D ST7262_PANEL_CONFIG_DATA_WIDTH=16'", + "'-D ST7262_PANEL_CONFIG_SRAM_TRANS_ALIGN=4'", + "'-D ST7262_PANEL_CONFIG_PSRAM_TRANS_ALIGN=64'", + "'-D ST7262_PANEL_CONFIG_HSYNC_GPIO_NUM=39'", + "'-D ST7262_PANEL_CONFIG_VSYNC_GPIO_NUM=41'", + "'-D ST7262_PANEL_CONFIG_DE_GPIO_NUM=40'", + "'-D ST7262_PANEL_CONFIG_PCLK_GPIO_NUM=42'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_R0=8'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_R1=3'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_R2=46'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_R3=9'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_R4=1'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_G0=5'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_G1=6'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_G2=7'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_G3=15'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_G4=16'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_G5=4'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_B0=45'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_B1=48'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_B2=47'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_B3=21'", + "'-D ST7262_PANEL_CONFIG_DATA_GPIO_B4=14'", + "'-D ST7262_PANEL_CONFIG_DISP_GPIO_NUM=GPIO_NUM_NC'", + "'-D ST7262_PANEL_CONFIG_FLAGS_DISP_ACTIVE_LOW=false'", + "'-D ST7262_PANEL_CONFIG_FLAGS_RELAX_ON_IDLE=false'", + "'-D ST7262_PANEL_CONFIG_FLAGS_FB_IN_PSRAM=true'", + "'-D BOARD_HAS_TOUCH'", + "'-D TOUCH_GT911_I2C'", + "'-D GT911_I2C_HOST=I2C_NUM_0'", + "'-D GT911_I2C_CONFIG_SDA_IO_NUM=19'", + "'-D GT911_I2C_CONFIG_SCL_IO_NUM=20'", + "'-D GT911_I2C_CONFIG_SDA_PULLUP_EN=GPIO_PULLUP_DISABLE'", + "'-D GT911_I2C_CONFIG_SCL_PULLUP_EN=GPIO_PULLUP_DISABLE'", + "'-D GT911_I2C_CONFIG_MASTER_CLK_SPEED=400000'", + "'-D GT911_I2C_CONFIG_CLK_FLAGS=I2C_SCLK_SRC_FLAG_FOR_NOMAL'", + "'-D GT911_IO_I2C_CONFIG_DEV_ADDR=ESP_LCD_TOUCH_IO_I2C_GT911_ADDRESS'", + "'-D GT911_IO_I2C_CONFIG_CONTROL_PHASE_BYTES=1'", + "'-D GT911_IO_I2C_CONFIG_DC_BIT_OFFSET=0'", + "'-D GT911_IO_I2C_CONFIG_LCD_CMD_BITS=16'", + "'-D GT911_IO_I2C_CONFIG_LCD_PARAM_BITS=0'", + "'-D GT911_IO_I2C_CONFIG_FLAGS_DC_LOW_ON_DATA=false'", + "'-D GT911_IO_I2C_CONFIG_FLAGS_DISABLE_CONTROL_PHASE=true'", + "'-D GT911_TOUCH_CONFIG_X_MAX=LCD_WIDTH'", + "'-D GT911_TOUCH_CONFIG_Y_MAX=LCD_HEIGHT'", + "'-D GT911_TOUCH_CONFIG_RST_GPIO_NUM=38'", + "'-D GT911_TOUCH_CONFIG_INT_GPIO_NUM=18'", + "'-D GT911_TOUCH_CONFIG_LEVELS_RESET=0'", + "'-D GT911_TOUCH_CONFIG_LEVELS_INTERRUPT=0'", + "'-D TOUCH_SWAP_XY=false'", + "'-D TOUCH_SWAP_X=false'", + "'-D TOUCH_SWAP_Y=false'", + "'-D BOARD_HAS_TF'", + "'-D TF_CS=10'", + "'-D TF_SPI_MOSI=11'", + "'-D TF_SPI_SCLK=12'", + "'-D TF_SPI_MISO=13'", + + "-DCYD_SCREEN_HEIGHT_PX=480", + "-DCYD_SCREEN_WIDTH_PX=800", + "-DROTATION_INVERTED=LV_DISP_ROT_180", + "-DROTATION_NORMAL=LV_DISP_ROT_NONE", + "-DCYD_SCREEN_GAP_PX=15", + "-DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=60", + "-DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=60", + "-DCYD_SCREEN_FONT=lv_font_montserrat_22", + "-DCYD_SCREEN_FONT_SMALL=lv_font_montserrat_16", + "-DCYD_SCREEN_SIDEBAR_SIZE_PX=70", + "-DCYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY=1", + "-DCYD_SCREEN_DISABLE_TOUCH_CALIBRATION=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0x303A", + "0x1001" + ] + ], + "mcu": "esp32s3", + "variant": "esp32s3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "esp32-8048S043C-SD-alt", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.aliexpress.com/item/1005006110360174.html", + "vendor": "Sunton" + } \ No newline at end of file diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini index 87de374..5c8ab5d 100644 --- a/CYD-Klipper/platformio.ini +++ b/CYD-Klipper/platformio.ini @@ -84,3 +84,5 @@ board = esp32-4827S043C-smartdisplay [env:esp32-8048S043C-SD] board = esp32-8048S043C-smartdisplay +[env:esp32-8048S043C-SD-alt] +board = esp32-8048S043C-smartdisplay-alt diff --git a/_site/index.html b/_site/index.html index cba34c8..66f9db7 100644 --- a/_site/index.html +++ b/_site/index.html @@ -99,6 +99,7 @@ + diff --git a/ci.py b/ci.py index c397650..27c1e38 100644 --- a/ci.py +++ b/ci.py @@ -4,7 +4,8 @@ CYD_PORTS = [ "esp32-3248S035C", "esp32-2432S028R", "esp32-2432S032C-SD", - "esp32-8048S043C-SD", + "esp32-8048S043C-SD", + "esp32-8048S043C-SD-alt", "esp32-2432S024C-SD", "esp32-4827S043C-SD", "esp32-3248S035C-V", @@ -13,6 +14,7 @@ CYD_PORTS = [ ESP_S3_CHIPS = [ "esp32-8048S043C-SD", + "esp32-8048S043C-SD-alt", "esp32-4827S043C-SD", ] From d0f90a56d09193baa237955c044395b11c1f79a9 Mon Sep 17 00:00:00 2001 From: Madrajib Lab Date: Fri, 10 Jan 2025 02:45:03 +0530 Subject: [PATCH 2/2] Add support for crowpanel 2.8inch display (#134) * Add support for crowpanel 2.8inch display * Add support for crowpanel 2.8inch display --------- Co-authored-by: Sims <38142618+suchmememanyskill@users.noreply.github.com> --- CYD-Klipper/boards/esp32-CROWPANEL-28R.json | 63 +++++++++++ CYD-Klipper/platformio.ini | 10 ++ .../src/core/device/ESP32-CROWPANEL_28R.cpp | 100 ++++++++++++++++++ _site/index.html | 1 + ci.py | 1 + 5 files changed, 175 insertions(+) create mode 100644 CYD-Klipper/boards/esp32-CROWPANEL-28R.json create mode 100644 CYD-Klipper/src/core/device/ESP32-CROWPANEL_28R.cpp diff --git a/CYD-Klipper/boards/esp32-CROWPANEL-28R.json b/CYD-Klipper/boards/esp32-CROWPANEL-28R.json new file mode 100644 index 0000000..81ebe66 --- /dev/null +++ b/CYD-Klipper/boards/esp32-CROWPANEL-28R.json @@ -0,0 +1,63 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32_out.ld" + }, + "core": "esp32", + "extra_flags": [ + "-DUSER_SETUP_LOADED=1", + "-DILI9341_2_DRIVER=1", + "-DTFT_BACKLIGHT_ON=HIGH", + "-DTFT_BL=27", + "-DTFT_MISO=12", + "-DTFT_MOSI=13", + "-DTFT_SCLK=14", + "-DTFT_CS=15", + "-DTFT_DC=2", + "-DTFT_RST=-1", + "-DLOAD_GCLD=1", + "-DSPI_FREQUENCY=15999999", + "-DSPI_READ_FREQUENCY=20000000", + "-DSPI_TOUCH_FREQUENCY=600000", + "-DTOUCH_CS=33", + + "-DCYD_SCREEN_HEIGHT_PX=240", + "-DCYD_SCREEN_WIDTH_PX=320", + "-DCYD_SCREEN_GAP_PX=8", + "-DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35", + "-DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=35", + "-DCYD_SCREEN_FONT=lv_font_montserrat_14", + "-DCYD_SCREEN_FONT_SMALL=lv_font_montserrat_10", + "-DCYD_SCREEN_SIDEBAR_SIZE_PX=40", + "-DCYD_SCREEN_DRIVER_ESP32_CROWPANEL_28R=1" + ], + "f_cpu": "240000000L", + "f_flash": "40000000L", + "flash_mode": "dio", + "mcu": "esp32", + "variant": "esp32" + }, + "connectivity": [ + "wifi", + "bluetooth", + "ethernet", + "can" + ], + "debug": { + "openocd_board": "esp-wroom-32.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "esp32-crowpanel-28R", + "upload": { + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.aliexpress.com/item/1005004502250619.html", + "vendor": "Sunton" + } \ No newline at end of file diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini index 5c8ab5d..4331f84 100644 --- a/CYD-Klipper/platformio.ini +++ b/CYD-Klipper/platformio.ini @@ -86,3 +86,13 @@ board = esp32-8048S043C-smartdisplay [env:esp32-8048S043C-SD-alt] board = esp32-8048S043C-smartdisplay-alt + +[env:esp32-CROWPANEL-28R] +board = esp32-CROWPANEL-28R +lib_deps = + SPI + https://github.com/suchmememanyskill/lvgl + https://github.com/Bodmer/TFT_eSPI.git + bblanchon/ArduinoJson@^7.0.0 + plageoj/UrlEncode@^1.0.1 + erriez/ErriezCRC32 @ ^1.0.1 diff --git a/CYD-Klipper/src/core/device/ESP32-CROWPANEL_28R.cpp b/CYD-Klipper/src/core/device/ESP32-CROWPANEL_28R.cpp new file mode 100644 index 0000000..a3674e7 --- /dev/null +++ b/CYD-Klipper/src/core/device/ESP32-CROWPANEL_28R.cpp @@ -0,0 +1,100 @@ +#ifdef CYD_SCREEN_DRIVER_ESP32_CROWPANEL_28R +#include "../screen_driver.h" + +#ifdef CYD_SCREEN_VERTICAL + #error "Vertical screen not supported with the ESP32_CROWPANEL_28R driver" +#endif + +#include +#include +#include "../../conf/global_config.h" +#include "lvgl.h" +#include +#include "../lv_setup.h" + +#define TOUCH_THRESHOLD 600 + +static lv_disp_draw_buf_t draw_buf; +static lv_color_t buf[CYD_SCREEN_HEIGHT_PX * CYD_SCREEN_WIDTH_PX / 10]; + +TFT_eSPI tft = TFT_eSPI(); + +uint16_t touchX, touchY; + +void screen_setBrightness(byte brightness) +{ + // calculate duty, 4095 from 2 ^ 12 - 1 + uint32_t duty = (4095 / 255) * brightness; + + // write duty to LEDC + ledcWrite(0, duty); +} + +void screen_lv_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) +{ + uint32_t w = (area->x2 - area->x1 + 1); + uint32_t h = (area->y2 - area->y1 + 1); + + tft.startWrite(); + tft.setAddrWindow(area->x1, area->y1, w, h); + tft.pushColors((uint16_t *)&color_p->full, w * h, true); + tft.endWrite(); + + lv_disp_flush_ready(disp); +} + +void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data) +{ + if (tft.getTouch( &touchX, &touchY, TOUCH_THRESHOLD)) + { + data->state = LV_INDEV_STATE_PR; + data->point.x = touchX; + data->point.y = touchY; + } + else + { + data->state = LV_INDEV_STATE_REL; + } +} + +void set_invert_display(){ + tft.invertDisplay(get_current_printer_config()->invert_colors); +} + +void screen_setup() +{ + uint16_t calData[5] = { 189, 3416, 359, 3439, 1}; + + lv_init(); + + tft.init(); + tft.fillScreen(TFT_BLACK); + tft.invertDisplay(false); + delay(300); + + tft.setRotation(1); + tft.setTouch( calData ); + + ledcSetup(0, 5000, 12); + ledcAttachPin(TFT_BL, 0); + + lv_disp_draw_buf_init(&draw_buf, buf, NULL, CYD_SCREEN_HEIGHT_PX * CYD_SCREEN_WIDTH_PX / 10); + + /*Initialize the display*/ + static lv_disp_drv_t disp_drv; + lv_disp_drv_init(&disp_drv); + disp_drv.hor_res = CYD_SCREEN_WIDTH_PX; + disp_drv.ver_res = CYD_SCREEN_HEIGHT_PX; + disp_drv.flush_cb = screen_lv_flush; + disp_drv.draw_buf = &draw_buf; + lv_disp_drv_register(&disp_drv); + + /*Initialize the (dummy) input device driver*/ + static lv_indev_drv_t indev_drv; + lv_indev_drv_init(&indev_drv); + indev_drv.type = LV_INDEV_TYPE_POINTER; + indev_drv.read_cb = screen_lv_touchRead; + lv_indev_drv_register(&indev_drv); +} + +#endif // CYD_SCREEN_DRIVER_ESP32_CROWPANEL_28R \ No newline at end of file diff --git a/_site/index.html b/_site/index.html index 66f9db7..62444d5 100644 --- a/_site/index.html +++ b/_site/index.html @@ -100,6 +100,7 @@ + diff --git a/ci.py b/ci.py index 27c1e38..3917a62 100644 --- a/ci.py +++ b/ci.py @@ -10,6 +10,7 @@ CYD_PORTS = [ "esp32-4827S043C-SD", "esp32-3248S035C-V", #"esp32-4827S043R-SD", + "esp32-CROWPANEL-28R", ] ESP_S3_CHIPS = [