From 56aba9b986c2d6365efff9f816975cf384a3c859 Mon Sep 17 00:00:00 2001 From: fvanroie Date: Sun, 18 Dec 2022 17:15:16 +0100 Subject: [PATCH] Add Panlee ZX3D95CE01S --- .github/workflows/build.yaml | 20 ++-- data/openhasp.ttf | Bin 166852 -> 166176 bytes src/drv/tft/tft_driver_arduinogfx.cpp | 11 +- src/hasp_gui.cpp | 6 -- src/hasp_gui.h | 3 + src/main_arduino.cpp | 5 +- user_setups/esp32s3/zw3d95ce01s_ar.ini | 137 +++++++++++++++++++++++++ 7 files changed, 165 insertions(+), 17 deletions(-) create mode 100644 user_setups/esp32s3/zw3d95ce01s_ar.ini diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2b436f40..5cae5cf6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -7,9 +7,9 @@ on: branches: - master paths-ignore: - - '**.md' - - '**.yml' - - '**.yaml' + - "**.md" + - "**.yml" + - "**.yaml" workflow_dispatch: jobs: @@ -48,17 +48,19 @@ jobs: env: m5stack-core2 - out: makerfabs env: "makerfabs-tft35-cap -e makerfabs-s3-tft35-spi" + - out: panlee + env: "panlee-zw3d95ce01s-ar-4848_16MB -e panlee-zw3d95ce01s-ur-4848_16MB" - out: sunton env: "esp32-2432s028r_4MB -e esp32-3248s035c_4MB -e esp32-3248s035r_4MB -e sunton-4827s043c_16MB -e sunton-8048s043c_16MB -e sunton-8048s050c_16MB -e sunton-8048s070c_16MB" - out: wireless-tag - env: "wt32-sc01_4MB -e wt32-sc01_16MB -e wt-86-32-3zw1 -e wt32-sc01-plus_8MB" + env: "wt32-sc01_4MB -e wt32-sc01_16MB -e wt-86-32-3zw1 -e wt32-sc01-plus_8MB -e wt32-sc01-plus_16MB" - out: yeacreate env: yeacreate-nscreen32 steps: - uses: actions/checkout@v3 with: - submodules: 'true' + submodules: "true" - name: Cache pip uses: actions/cache@v3 with: @@ -74,7 +76,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.x' + python-version: "3.x" - name: Install PlatformIO run: | python -m pip install --upgrade pip @@ -123,7 +125,7 @@ jobs: steps: - uses: actions/checkout@v3 with: - submodules: 'true' + submodules: "true" - name: Cache pip uses: actions/cache@v3 with: @@ -139,7 +141,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.x' + python-version: "3.x" - name: Install PlatformIO run: | python -m pip install --upgrade pip @@ -167,4 +169,4 @@ jobs: sudo apt-get update sudo apt-get install libsdl2-dev - name: Run PlatformIO - run: pio run -e linux_sdl_64bits \ No newline at end of file + run: pio run -e linux_sdl_64bits diff --git a/data/openhasp.ttf b/data/openhasp.ttf index 71e793004fb87883a34ead1979e4655daf0da71d..5ea7d28bc633a44d9cb61005ba4d500dcee97fe3 100644 GIT binary patch delta 7481 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 E7mr*>8~^|S diff --git a/src/drv/tft/tft_driver_arduinogfx.cpp b/src/drv/tft/tft_driver_arduinogfx.cpp index ae545104..23717e20 100644 --- a/src/drv/tft/tft_driver_arduinogfx.cpp +++ b/src/drv/tft/tft_driver_arduinogfx.cpp @@ -20,8 +20,17 @@ void tftPinInfo(const __FlashStringHelper* pinfunction, int8_t pin) void ArduinoGfx::init(int w, int h) { LOG_TRACE(TAG_TFT, F(D_SERVICE_STARTING)); +#if(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(GC9503V_DRIVER) + Arduino_DataBus* bus = new Arduino_SWSPI(TFT_DC, TFT_CS, TFT_SCLK, TFT_MOSI, TFT_MISO); + Arduino_ESP32RGBPanel* rgbpanel = new Arduino_ESP32RGBPanel( + TFT_DE, TFT_VSYNC, TFT_HSYNC, TFT_PCLK, TFT_R0, TFT_R1, TFT_R2, TFT_R3, TFT_R4, TFT_G0, TFT_G1, TFT_G2, + TFT_G3, TFT_G4, TFT_G5, TFT_B0, TFT_B1, TFT_B2, TFT_B3, TFT_B4, TFT_HSYNC_POLARITY, TFT_HSYNC_FRONT_PORCH, + TFT_HSYNC_PULSE_WIDTH, TFT_HSYNC_BACK_PORCH, TFT_VSYNC_POLARITY, TFT_VSYNC_FRONT_PORCH, + TFT_VSYNC_PULSE_WIDTH, TFT_VSYNC_BACK_PORCH); + tft = new Arduino_RGB_Display(w, h, rgbpanel, 0 /* rotation */, TFT_AUTO_FLUSH, bus, TFT_RST, + gc9503v_type1_init_operations, sizeof(gc9503v_type1_init_operations)); -#if(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) +#elif(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) /* More data bus class: https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class */ Arduino_ESP32RGBPanel* bus = new Arduino_ESP32RGBPanel( 39 /* CS */, 15 /* SCK */, 14 /* SDA */, 18 /* DE */, 17 /* VSYNC */, 16 /* HSYNC */, 21 /* PCLK */, 4 /* R0 */, diff --git a/src/hasp_gui.cpp b/src/hasp_gui.cpp index 22cd864e..39aca84f 100644 --- a/src/hasp_gui.cpp +++ b/src/hasp_gui.cpp @@ -27,8 +27,6 @@ File pFileOut; #if ESP32 static SemaphoreHandle_t xGuiSemaphore = NULL; static TaskHandle_t g_lvgl_task_handle; - -esp_err_t gui_setup_lvgl_task(void); #endif #define LVGL_TICK_PERIOD 20 @@ -364,10 +362,6 @@ void guiSetup() if(!xGuiSemaphore) { LOG_FATAL(TAG_GUI, "Create mutex for LVGL failed"); } - gui_acquire(); // Block LVGL until plate is fully booted -#if HASP_USE_LVGL_TASK - gui_setup_lvgl_task(); -#endif // HASP_USE_LVGL_TASK #endif // ESP32 && HASP_USE_ESP_MQTT LOG_INFO(TAG_LVGL, F(D_SERVICE_STARTED)); diff --git a/src/hasp_gui.h b/src/hasp_gui.h index fb2d4d14..3268326d 100644 --- a/src/hasp_gui.h +++ b/src/hasp_gui.h @@ -63,6 +63,9 @@ void gui_antiburn_cb(lv_disp_drv_t* disp, const lv_area_t* area, lv_color_t* col /* ===== Locks ===== */ bool gui_acquire(void); void gui_release(void); +#ifdef ESP32 +esp_err_t gui_setup_lvgl_task(void); +#endif /* ===== Read/Write Configuration ===== */ #if HASP_USE_CONFIG > 0 diff --git a/src/main_arduino.cpp b/src/main_arduino.cpp index 40ab4c21..ac536f5f 100644 --- a/src/main_arduino.cpp +++ b/src/main_arduino.cpp @@ -145,8 +145,11 @@ void setup() mqttSetup(); #endif +#if HASP_USE_LVGL_TASK && defined(ESP32) + gui_setup_lvgl_task(); +#endif // HASP_USE_LVGL_TASK + mainLastLoopTime = -1000; // reset loop counter - gui_release(); } IRAM_ATTR void loop() diff --git a/user_setups/esp32s3/zw3d95ce01s_ar.ini b/user_setups/esp32s3/zw3d95ce01s_ar.ini new file mode 100644 index 00000000..cd441941 --- /dev/null +++ b/user_setups/esp32s3/zw3d95ce01s_ar.ini @@ -0,0 +1,137 @@ +;***************************************************; +; Smart Panlee ZX3D95CE01S with TFT 3.95" ; +; - Custom esp32-s3 board ; +; - gc9503v TFT ; +; - ft6336 touch controller ; +;***************************************************; + +[panlee-zw3d95ce01s] +;board = esp32-s3-devkitc-1 +board = esp32s3_qio_opi + +build_flags = + ${env.build_flags} + ${esp32s3.build_flags} + ${esp32s3.ps_ram} + ;-DARDUINO_USB_CDC_ON_BOOT + ;-DUSE_USB_CDC_CONSOLE + +;region -- LovyanGFX build options ------------------------ + -D HASP_USE_ARDUINOGFX=1 + -D GC9503V_DRIVER=1 + -D TOUCH_DRIVER=0x6336 + -D TFT_WIDTH=480 + -D TFT_HEIGHT=480 + -D TFT_HSYNC_POLARITY=1 + -D TFT_HSYNC_FRONT_PORCH=10 + -D TFT_HSYNC_PULSE_WIDTH=8 + -D TFT_HSYNC_BACK_PORCH=50 + -D TFT_VSYNC_POLARITY=1 + -D TFT_VSYNC_FRONT_PORCH=10 + -D TFT_VSYNC_PULSE_WIDTH=8 + -D TFT_VSYNC_BACK_PORCH=20 + ;-D TFT_PCLK_ACTIVE_NEG=1 + ;-D TFT_PREFER_SPEED=9000000 + -D TFT_AUTO_FLUSH=1 + ; Touch Setttings + -D I2C_TOUCH_FREQUENCY=400000 + -D I2C_TOUCH_ADDRESS=0x38 + -D I2C_TOUCH_PORT=1 +;endregion + +;region -- Library options ------------------------------- +lib_deps = + ${env.lib_deps} + ${esp32s3.lib_deps} + ${arduino_esp32s3_v2.lib_deps} + ;${arduinogfx.lib_deps} + git+https://github.com/moononournation/Arduino_GFX.git + ${ft6336.lib_deps} + +lib_ignore = + ${env.lib_ignore} + ${esp32s3.lib_ignore} + ${arduino_esp32s3_v2.lib_ignore} +;endregion + + +[env:panlee-zw3d95ce01s-ur-4848_16MB] +extends = panlee-zw3d95ce01s, esp32s3_16mb_v2 +build_flags = + ${panlee-zw3d95ce01s.build_flags} + -D HASP_MODEL="ZX3D95CE01S-UR-4848" + -D TOUCH_RST=-1 ; Touch reset GPIO5, multiplexed with LCD reset + -D TOUCH_SCL=6 ; touch I2C bus clock, multiplexed with external interface + -D TOUCH_SDA=15 ; Touch I2C bus data, multiplexed with external interface + -D TOUCH_INT=7 ; Touch interrupt + -D TFT_RST=5 ; LCD reset, multiplexed with touch reset + -D TFT_DC=-1 + -D TFT_CS=38 ; LCD SPI bus CS + -D TFT_SCLK=45 ; LCD SPI bus SCLK + -D TFT_MOSI=48 ; LCD SPI bus MOSI + -D TFT_MISO=-1 ; LCD SPI bus MISO + -D TFT_DE=40 ; LCD RGB interface DE + -D TFT_VSYNC=41 ; LCD RGB interface VS + -D TFT_HSYNC=42 ; LCD RGB interface HS + -D TFT_PCLK=39 ; LCD RGB interface PCLK + -D TFT_B0=45 ; LCD RGB interface D0 + -D TFT_B1=48 ; LCD RGB interface D1 + -D TFT_B2=47 ; LCD RGB interface D2 + -D TFT_B3=21 ; LCD RGB interface D3 + -D TFT_B4=14 ; LCD RGB interface D4 + -D TFT_G0=13 ; LCD RGB interface D5 + -D TFT_G1=12 ; LCD RGB interface D6 + -D TFT_G2=11 ; LCD RGB interface D7 + -D TFT_G3=10 ; LCD RGB interface D8 + -D TFT_G4=16 ; LCD RGB interface D9 + -D TFT_G5=17 ; LCD RGB interface D10 + -D TFT_R0=18 ; LCD RGB interface D11 + -D TFT_R1=8 ; LCD RGB interface D12 + -D TFT_R2=3 ; LCD RGB interface D13 + -D TFT_R3=46 ; LCD RGB interface D14 + -D TFT_R4=9 ; LCD RGB interface D15 + -D TFT_BCKL=4 ; LCD backlight control, high level enable + +[env:panlee-zw3d95ce01s-ar-4848_16MB] +extends = panlee-zw3d95ce01s, esp32s3_16mb_v2 +build_flags = + ${panlee-zw3d95ce01s.build_flags} + -D HASP_MODEL="ZX3D95CE01S-AR-4848" + -D TOUCH_SCL=6 ; touch screen IIC, multiplexed with multiple peripherals + -D TOUCH_SDA=7 ; touch screen IIC, multiplexed with multiple peripherals + -D TOUCH_INT=-1 ; Missed + -D TOUCH_RST=-1 ; Missed + -D TFT_RST=-1 ; RC reset used + -D TFT_DC=-1 + -D TFT_CS=0 ; LCD SPI bus CS + -D TFT_SCLK=10 ; LCD SPI bus SCLK + -D TFT_MOSI=9 ; LCD SPI bus MOSI + -D TFT_MISO=-1 ; LCD SPI bus MISO + -D TFT_DE=13 ; LCD RGB interface DE + -D TFT_VSYNC=12 ; LCD RGB interface VS + -D TFT_HSYNC=11 ; LCD RGB interface HS + -D TFT_PCLK=14 ; LCD RGB interface PCLK + -D TFT_B0=10 ; LCD RGB interface D0 + -D TFT_B1=9 ; LCD RGB interface D1 + -D TFT_B2=40 ; LCD RGB interface D2 + -D TFT_B3=20 ; LCD RGB interface D3 + -D TFT_B4=19 ; LCD RGB interface D4 + -D TFT_G0=41 ; LCD RGB interface D5 + -D TFT_G1=46 ; LCD RGB interface D6 + -D TFT_G2=3 ; LCD RGB interface D7 + -D TFT_G3=42 ; LCD RGB interface D8 + -D TFT_G4=8 ; LCD RGB interface D9 + -D TFT_G5=18 ; LCD RGB interface D10 + -D TFT_R0=2 ; LCD RGB interface D11 + -D TFT_R1=17 ; LCD RGB interface D12 + -D TFT_R2=16 ; LCD RGB interface D13 + -D TFT_R3=1 ; LCD RGB interface D14 + -D TFT_R4=15 ; LCD RGB interface D15 + -D TFT_BCKL=45 ; LCD backlight control, high level enable + -D I2S_MCLK=38 ; I2S bus MCLK + -D I2S_SCLK=48 ; I2S bus SCLK + -D I2S_LRCK=47 ; I2S bus LRCK + -D I2S_SDO=21 ; I2S bus SDO + -D I2S_SDI=39 ; I2S bus SDI + -D I2C_SCL=6 ; I2C bus, used to configure CODEC, multiplexed peripherals + -D I2C_SDA=7 ; I2C bus, used to configure CODEC, multiplexed peripherals \ No newline at end of file