From e756b4b4e2877a974dcf4900139415da8ccaa326 Mon Sep 17 00:00:00 2001 From: Alvaro Lobato Date: Fri, 22 Dec 2023 00:02:05 +0100 Subject: [PATCH 1/3] Fix mac build: - Change compiler version so it works with newer MacOS - Fix library paths - Exclude freetype which creates a build error --- tools/osx_build_extra.py | 3 ++- user_setups/darwin_sdl/darwin_sdl_64bits.ini | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/osx_build_extra.py b/tools/osx_build_extra.py index 3f445946..ae726458 100644 --- a/tools/osx_build_extra.py +++ b/tools/osx_build_extra.py @@ -1,6 +1,7 @@ Import("env") -env.Replace(CC="gcc-10", CXX="g++-10") +#env.Replace(CC="gcc-10", CXX="g++-10") +env.Replace(CC="gcc-12", CXX="g++-12") env.Replace(BUILD_SCRIPT="tools/osx_build_script.py") diff --git a/user_setups/darwin_sdl/darwin_sdl_64bits.ini b/user_setups/darwin_sdl/darwin_sdl_64bits.ini index 30819a31..a1e64062 100644 --- a/user_setups/darwin_sdl/darwin_sdl_64bits.ini +++ b/user_setups/darwin_sdl/darwin_sdl_64bits.ini @@ -58,8 +58,10 @@ build_flags = -lm -lpthread ; MacOS with Homebrew - -I/usr/local/include - -L/usr/local/lib + ;-I/usr/local/include + ;-L/usr/local/lib + -I/opt/homebrew/include + -L/opt/homebrew/lib -DTARGET_OS_MAC=1 lib_deps = @@ -77,6 +79,7 @@ lib_ignore = ArduinoLog lv_lib_qrcode ETHSPI + freetype build_src_filter = +<*> From 8b3451a1346ab4db2fe0d60b9a610785a1e704d6 Mon Sep 17 00:00:00 2001 From: tbxmb Date: Tue, 2 Jan 2024 19:17:09 +0100 Subject: [PATCH 2/3] Add: Pin configuration for esp32-s3-4848S040 #603 --- user_setups/esp32s3/esp32-s3-4848S040.ini | 85 +++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 user_setups/esp32s3/esp32-s3-4848S040.ini diff --git a/user_setups/esp32s3/esp32-s3-4848S040.ini b/user_setups/esp32s3/esp32-s3-4848S040.ini new file mode 100644 index 00000000..d620c21c --- /dev/null +++ b/user_setups/esp32s3/esp32-s3-4848S040.ini @@ -0,0 +1,85 @@ +;***************************************************; +; Generic T3E with TFT 3.95" ; +; - Custom esp32-s3 board ; +; - st7701s TFT ; +; - gt911 touch controller ; +;***************************************************; + +[esp32-s3-4848S040] +extends = arduino_esp32s3_v2 +board = esp32-s3-devkitc-1 +board_build.arduino.memory_type = qio_opi + +build_flags = + -D HASP_MODEL="ESP32-S3 4848S040" + ${arduino_esp32s3_v2.build_flags} + ${esp32s3.ps_ram} + ;-DARDUINO_USB_CDC_ON_BOOT + ;-DUSE_USB_CDC_CONSOLE + +;region -- ArduinoGFX build options ------------------------ + -D HASP_USE_ARDUINOGFX=1 + -D ST7701_DRIVER=1 + -D TFT_WIDTH=480 + -D TFT_HEIGHT=480 + ; Bus Settings + -D TFT_CS=39 + -D TFT_SCLK=48 + -D TFT_MOSI=47 + -D TFT_DE=18 + -D TFT_VSYNC=17 + -D TFT_HSYNC=16 + -D TFT_PCLK=21 + -D TFT_R0=11 + -D TFT_R1=12 + -D TFT_R2=13 + -D TFT_R3=14 + -D TFT_R4=0 + -D TFT_G0=8 + -D TFT_G1=20 + -D TFT_G2=3 + -D TFT_G3=46 + -D TFT_G4=9 + -D TFT_G5=10 + -D TFT_B0=4 + -D TFT_B1=5 + -D TFT_B2=6 + -D TFT_B3=7 + -D TFT_B4=15 + -D TFT_DC=-1 + -D TFT_MISO=-1 + -D TFT_RST=-1 + -D TFT_BUSY=-1 + -D TFT_BCKL=38 + ; Panel Settings + -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=12000000 + -D TFT_AUTO_FLUSH=1 + ; Touch Settings + -D TOUCH_DRIVER=0x911 + -D TOUCH_WIDTH=480 + -D TOUCH_HEIGHT=480 + -D TOUCH_SDA=19 + -D TOUCH_SCL=45 + -D TOUCH_RST=-1 + -D TOUCH_IRQ=-1 + -D I2C_TOUCH_FREQUENCY=400000 + -D I2C_TOUCH_ADDRESS=0x5D ; or 0x14 + -D I2C_TOUCH_PORT=1 +;endregion + +lib_deps = + ${arduino_esp32s3_v2.lib_deps} + ${arduinogfx.lib_deps} + ${goodix.lib_deps} + +[env:esp32-s3-4848S040] +extends = esp32-s3-4848S040, flash_16mb \ No newline at end of file From 7af48cff375fc0c73ffa10230f0dc45a7c1a2354 Mon Sep 17 00:00:00 2001 From: tbxmb Date: Wed, 3 Jan 2024 02:37:14 +0100 Subject: [PATCH 3/3] Add modified init operations for esp32-s3-4848S040 #603 --- .../Arduino_RGB_Display_mod.h | 119 ++++++++++++++++++ platformio_override-template.ini | 1 + src/drv/tft/tft_driver_arduinogfx.cpp | 10 ++ user_setups/esp32s3/esp32-s3-4848S040.ini | 1 + 4 files changed, 131 insertions(+) diff --git a/lib/Arduino_RPi_DPI_RGBPanel_mod/Arduino_RGB_Display_mod.h b/lib/Arduino_RPi_DPI_RGBPanel_mod/Arduino_RGB_Display_mod.h index 982da439..ae343534 100644 --- a/lib/Arduino_RPi_DPI_RGBPanel_mod/Arduino_RGB_Display_mod.h +++ b/lib/Arduino_RPi_DPI_RGBPanel_mod/Arduino_RGB_Display_mod.h @@ -11,6 +11,125 @@ #include "Arduino_GFX.h" #include "Arduino_RGBPanel_mod.h" +static const uint8_t st7701_4848S040_init_operations[] = { + BEGIN_WRITE, + WRITE_COMMAND_8, 0xFF, + WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x10, + + WRITE_C8_D16, 0xC0, 0x3B, 0x00, + WRITE_C8_D16, 0xC1, 0x0D, 0x02, + WRITE_C8_D16, 0xC2, 0x31, 0x05, + WRITE_C8_D8, 0xCD, 0x00,//0x08 + + WRITE_COMMAND_8, 0xB0, // Positive Voltage Gamma Control + WRITE_BYTES, 16, + 0x00, 0x11, 0x18, 0x0E, + 0x11, 0x06, 0x07, 0x08, + 0x07, 0x22, 0x04, 0x12, + 0x0F, 0xAA, 0x31, 0x18, + + WRITE_COMMAND_8, 0xB1, // Negative Voltage Gamma Control + WRITE_BYTES, 16, + 0x00, 0x11, 0x19, 0x0E, + 0x12, 0x07, 0x08, 0x08, + 0x08, 0x22, 0x04, 0x11, + 0x11, 0xA9, 0x32, 0x18, + + // PAGE1 + WRITE_COMMAND_8, 0xFF, + WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x11, + + WRITE_C8_D8, 0xB0, 0x60, // Vop=4.7375v + WRITE_C8_D8, 0xB1, 0x32, // VCOM=32 + WRITE_C8_D8, 0xB2, 0x07, // VGH=15v + WRITE_C8_D8, 0xB3, 0x80, + WRITE_C8_D8, 0xB5, 0x49, // VGL=-10.17v + WRITE_C8_D8, 0xB7, 0x85, + WRITE_C8_D8, 0xB8, 0x21, // AVDD=6.6 & AVCL=-4.6 + WRITE_C8_D8, 0xC1, 0x78, + WRITE_C8_D8, 0xC2, 0x78, + + WRITE_COMMAND_8, 0xE0, + WRITE_BYTES, 3, 0x00, 0x1B, 0x02, + + WRITE_COMMAND_8, 0xE1, + WRITE_BYTES, 11, + 0x08, 0xA0, 0x00, 0x00, + 0x07, 0xA0, 0x00, 0x00, + 0x00, 0x44, 0x44, + + WRITE_COMMAND_8, 0xE2, + WRITE_BYTES, 12, + 0x11, 0x11, 0x44, 0x44, + 0xED, 0xA0, 0x00, 0x00, + 0xEC, 0xA0, 0x00, 0x00, + + WRITE_COMMAND_8, 0xE3, + WRITE_BYTES, 4, 0x00, 0x00, 0x11, 0x11, + + WRITE_C8_D16, 0xE4, 0x44, 0x44, + + WRITE_COMMAND_8, 0xE5, + WRITE_BYTES, 16, + 0x0A, 0xE9, 0xD8, 0xA0, + 0x0C, 0xEB, 0xD8, 0xA0, + 0x0E, 0xED, 0xD8, 0xA0, + 0x10, 0xEF, 0xD8, 0xA0, + + WRITE_COMMAND_8, 0xE6, + WRITE_BYTES, 4, 0x00, 0x00, 0x11, 0x11, + + WRITE_C8_D16, 0xE7, 0x44, 0x44, + + WRITE_COMMAND_8, 0xE8, + WRITE_BYTES, 16, + 0x09, 0xE8, 0xD8, 0xA0, + 0x0B, 0xEA, 0xD8, 0xA0, + 0x0D, 0xEC, 0xD8, 0xA0, + 0x0F, 0xEE, 0xD8, 0xA0, + + WRITE_COMMAND_8, 0xEB, + WRITE_BYTES, 7, + 0x02, 0x00, 0xE4, 0xE4, + 0x88, 0x00, 0x40, + + WRITE_C8_D16, 0xEC, 0x3C, 0x00, + + WRITE_COMMAND_8, 0xED, + WRITE_BYTES, 16, + 0xAB, 0x89, 0x76, 0x54, + 0x02, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x20, + 0x45, 0x67, 0x98, 0xBA, + + //-----------VAP & VAN--------------- + WRITE_COMMAND_8, 0xFF, + WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x13, + + WRITE_C8_D8, 0xE5, 0xE4, + + WRITE_COMMAND_8, 0xFF, + WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x00, + + WRITE_COMMAND_8, 0x21, // 0x20 normal, 0x21 IPS + WRITE_C8_D8, 0x3A, 0x60, // 0x70 RGB888, 0x60 RGB666, 0x50 RGB565 + + //WRITE_COMMAND_8, 0x21,0X00, + //END_WRITE, + + WRITE_COMMAND_8, 0x11, // Sleep Out + END_WRITE, + + DELAY, 120, + + BEGIN_WRITE, + WRITE_COMMAND_8, 0x29, // Display On + END_WRITE, + + BEGIN_WRITE, + WRITE_COMMAND_8, 0x20, // Invert display + END_WRITE +}; static const uint8_t st7701_sensecap_indicator_init_operations[] = { BEGIN_WRITE, diff --git a/platformio_override-template.ini b/platformio_override-template.ini index dcd3918e..8de29970 100644 --- a/platformio_override-template.ini +++ b/platformio_override-template.ini @@ -71,6 +71,7 @@ extra_default_envs = ; wt-86-32-3zw1 ; yeacreate-nscreen32 ; wz2432r028 + ; esp32-s3-4848S040 ;endregion ;region -- Define your local COM ports for each environment --- diff --git a/src/drv/tft/tft_driver_arduinogfx.cpp b/src/drv/tft/tft_driver_arduinogfx.cpp index 69084b6a..ff6f0835 100644 --- a/src/drv/tft/tft_driver_arduinogfx.cpp +++ b/src/drv/tft/tft_driver_arduinogfx.cpp @@ -63,6 +63,16 @@ void ArduinoGfx::init(int w, int h) 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)); +#elif(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(ST7701_DRIVER) && defined(ST7701_4848S040) + 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, + st7701_4848S040_init_operations, sizeof(st7701_4848S040_init_operations)); #elif(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(ST7701_DRIVER) /* More data bus class: https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class */ Arduino_DataBus* bus = new Arduino_SWSPI(TFT_DC, TFT_CS, TFT_SCLK, TFT_MOSI, TFT_MISO); diff --git a/user_setups/esp32s3/esp32-s3-4848S040.ini b/user_setups/esp32s3/esp32-s3-4848S040.ini index d620c21c..db5a5b6e 100644 --- a/user_setups/esp32s3/esp32-s3-4848S040.ini +++ b/user_setups/esp32s3/esp32-s3-4848S040.ini @@ -20,6 +20,7 @@ build_flags = ;region -- ArduinoGFX build options ------------------------ -D HASP_USE_ARDUINOGFX=1 -D ST7701_DRIVER=1 + -D ST7701_4848S040=1 -D TFT_WIDTH=480 -D TFT_HEIGHT=480 ; Bus Settings