diff --git a/CYD-Klipper/boards/esp32-4827S043R-smartdisplay.json b/CYD-Klipper/boards/esp32-4827S043R-smartdisplay.json new file mode 100644 index 0000000..c686baa --- /dev/null +++ b/CYD-Klipper/boards/esp32-4827S043R-smartdisplay.json @@ -0,0 +1,146 @@ +{ + "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_4827S043R'", + "'-D LCD_WIDTH=480'", + "'-D LCD_HEIGHT=272'", + "'-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=(8*1000000)'", + "'-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=43'", + "'-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=12'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_FRONT_PORCH=8'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_HSYNC_IDLE_LOW=true'", + "'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_VSYNC_IDLE_LOW=true'", + "'-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_XPT2046_SPI'", + "'-D XPT2046_SPI_HOST=SPI2_HOST'", + "'-D XPT2046_SPI_DMA_CHANNEL=SPI_DMA_CH_AUTO'", + "'-D XPT2046_SPI_BUS_MOSI_IO_NUM=11'", + "'-D XPT2046_SPI_BUS_MISO_IO_NUM=13'", + "'-D XPT2046_SPI_BUS_SCLK_IO_NUM=12'", + "'-D XPT2046_SPI_BUS_QUADWP_IO_NUM=GPIO_NUM_NC'", + "'-D XPT2046_SPI_BUS_QUADHD_IO_NUM=GPIO_NUM_NC'", + "'-D XPT2046_SPI_CONFIG_CS_GPIO_NUM=38'", + "'-D XPT2046_SPI_CONFIG_DC_GPIO_NUM=GPIO_NUM_NC'", + "'-D XPT2046_SPI_CONFIG_SPI_MODE=SPI_MODE0'", + "'-D XPT2046_SPI_CONFIG_PCLK_HZ=2000000'", + "'-D XPT2046_SPI_CONFIG_TRANS_QUEUE_DEPTH=3'", + "'-D XPT2046_SPI_CONFIG_LCD_CMD_BITS=8'", + "'-D XPT2046_SPI_CONFIG_LCD_PARAM_BITS=8'", + "'-D XPT2046_SPI_CONFIG_FLAGS_DC_AS_CMD_PHASE=false'", + "'-D XPT2046_SPI_CONFIG_FLAGS_DC_LOW_ON_DATA=false'", + "'-D XPT2046_SPI_CONFIG_FLAGS_OCTAL_MODE=false'", + "'-D XPT2046_SPI_CONFIG_FLAGS_LSB_FIRST=false'", + "'-D XPT2046_TOUCH_CONFIG_X_MAX=LCD_WIDTH'", + "'-D XPT2046_TOUCH_CONFIG_Y_MAX=LCD_HEIGHT'", + "'-D XPT2046_TOUCH_CONFIG_RST_GPIO_NUM=GPIO_NUM_NC'", + "'-D XPT2046_TOUCH_CONFIG_INT_GPIO_NUM=18'", + "'-D XPT2046_TOUCH_CONFIG_LEVELS_RESET=0'", + "'-D XPT2046_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=272'", + "'-DCYD_SCREEN_WIDTH_PX=480'", + "-DROTATION_INVERTED=LV_DISP_ROT_180", + "-DROTATION_NORMAL=LV_DISP_ROT_NONE", + "'-DCYD_SCREEN_GAP_PX=10'", + "'-DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35'", + "'-DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=40'", + "'-DCYD_SCREEN_FONT=lv_font_montserrat_16'", + "'-DCYD_SCREEN_FONT_SMALL=lv_font_montserrat_12'", + "'-DCYD_SCREEN_SIDEBAR_SIZE_PX=50'", + "'-DCYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY=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-4827S043R-SD", + "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/1005004788147691.html", + "vendor": "Sunton" + } \ No newline at end of file diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp index 5ccc81c..c7d1710 100644 --- a/CYD-Klipper/src/ui/panels/settings_panel.cpp +++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp @@ -217,7 +217,12 @@ void settings_section_device(lv_obj_t* panel) lv_create_custom_menu_switch("Screen Color Fix", panel, dualusb_screen_fix_switch, global_config.display_mode, NULL, "ONLY for the 2.8\" dual USB model screen"); #endif +#if defined(CYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY) && !defined(CYD_SCREEN_DISABLE_TOUCH_CALIBRATION) + // TODO: Rotating screen requires different calibration points. +#else lv_create_custom_menu_switch("Rotate Screen", panel, rotate_screen_switch, global_config.rotate_screen); +#endif + lv_create_custom_menu_switch("Auto Update", panel, auto_ota_update_switch, global_config.auto_ota_update); lv_create_custom_menu_label("Version", panel, REPO_VERSION " "); diff --git a/ci.py b/ci.py index 8ed1366..9aaf6c0 100644 --- a/ci.py +++ b/ci.py @@ -7,13 +7,15 @@ CYD_PORTS = [ "esp32-8048S043C-SD", "esp32-2432S024C-SD", "esp32-4827S043C-SD", - "esp32-3248S035C-V" + "esp32-3248S035C-V", + "esp32-4827S043R-SD", ] BASE_DIR = os.getcwd() def get_manifest(base_path : str, device_name : str): return { "name": f"to {device_name}", + "funding_url": "https://ko-fi.com/suchmememanyskill", "new_install_prompt_erase": True, "builds": [ {