mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 06:02:05 +00:00
Crowpanel 4.3, 5.0, 7.0 support (#6611)
* SD software SPI control * fix notification crash; * allow wake on touch * don't build non-MUI variants * use pwm buzzer * Finalize support for Crowpanel TFT 2.4, 2.8 and 3.5 * add hardware ID for TFT panels * Add stubs for the bigger panels. WIP! * fix braces * elecrow 4.3, 5.0, 7.0 support * completed implementation 4.3, 5.0, 7.0 variants * NodeDB default config & simplified light sleep macros * trunk fmt * remove flags * removed leftovers (note: rtc gpios are only needed for deep sleep; the remove section caused issues with the elecrows) --------- Co-authored-by: mverch67 <manuel.verch@gmx.de> Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com> Co-authored-by: Austin <vidplace7@gmail.com>
This commit is contained in:
parent
e1417cff2e
commit
cc66f7c79b
@ -8,8 +8,8 @@
|
|||||||
"core": "esp32",
|
"core": "esp32",
|
||||||
"extra_flags": [
|
"extra_flags": [
|
||||||
"-DBOARD_HAS_PSRAM",
|
"-DBOARD_HAS_PSRAM",
|
||||||
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
"-DARDUINO_USB_CDC_ON_BOOT=0",
|
||||||
"-DARDUINO_USB_MODE=0",
|
"-DARDUINO_USB_MODE=1",
|
||||||
"-DARDUINO_RUNNING_CORE=1",
|
"-DARDUINO_RUNNING_CORE=1",
|
||||||
"-DARDUINO_EVENT_RUNNING_CORE=0"
|
"-DARDUINO_EVENT_RUNNING_CORE=0"
|
||||||
],
|
],
|
||||||
|
@ -65,8 +65,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \
|
#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \
|
||||||
defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS)) || \
|
defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS)) && \
|
||||||
defined(ILI9488_CS) && !defined(DISPLAY_FORCE_SMALL_FONTS)
|
!defined(DISPLAY_FORCE_SMALL_FONTS)
|
||||||
// The screen is bigger so use bigger fonts
|
// The screen is bigger so use bigger fonts
|
||||||
#define FONT_SMALL FONT_MEDIUM_LOCAL // Height: 19
|
#define FONT_SMALL FONT_MEDIUM_LOCAL // Height: 19
|
||||||
#define FONT_MEDIUM FONT_LARGE_LOCAL // Height: 28
|
#define FONT_MEDIUM FONT_LARGE_LOCAL // Height: 28
|
||||||
|
@ -584,7 +584,7 @@ void NodeDB::installDefaultConfig(bool preserveKey = false)
|
|||||||
strncpy(config.network.ntp_server, "meshtastic.pool.ntp.org", 32);
|
strncpy(config.network.ntp_server, "meshtastic.pool.ntp.org", 32);
|
||||||
|
|
||||||
#if (defined(T_DECK) || defined(T_WATCH_S3) || defined(UNPHONE) || defined(PICOMPUTER_S3) || defined(SENSECAP_INDICATOR) || \
|
#if (defined(T_DECK) || defined(T_WATCH_S3) || defined(UNPHONE) || defined(PICOMPUTER_S3) || defined(SENSECAP_INDICATOR) || \
|
||||||
defined(ELECROW)) && \
|
defined(ELECROW_PANEL)) && \
|
||||||
HAS_TFT
|
HAS_TFT
|
||||||
// switch BT off by default; use TFT programming mode or hotkey to enable
|
// switch BT off by default; use TFT programming mode or hotkey to enable
|
||||||
config.bluetooth.enabled = false;
|
config.bluetooth.enabled = false;
|
||||||
@ -689,7 +689,7 @@ void NodeDB::initConfigIntervals()
|
|||||||
|
|
||||||
config.display.screen_on_secs = default_screen_on_secs;
|
config.display.screen_on_secs = default_screen_on_secs;
|
||||||
|
|
||||||
#if defined(T_WATCH_S3) || defined(T_DECK) || defined(UNPHONE) || defined(MESH_TAB) || defined(RAK14014) || defined(ELECROW)
|
#if defined(USE_POWERSAVE)
|
||||||
config.power.is_power_saving = true;
|
config.power.is_power_saving = true;
|
||||||
config.display.screen_on_secs = 30;
|
config.display.screen_on_secs = 30;
|
||||||
config.power.wait_bluetooth_secs = 30;
|
config.power.wait_bluetooth_secs = 30;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "mesh/wifi/WiFiAPClient.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#endif
|
#endif
|
||||||
#include "rom/rtc.h"
|
#include "rom/rtc.h"
|
||||||
|
#include <RadioLib.h>
|
||||||
#include <driver/rtc_io.h>
|
#include <driver/rtc_io.h>
|
||||||
#include <driver/uart.h>
|
#include <driver/uart.h>
|
||||||
|
|
||||||
@ -284,6 +285,8 @@ void doDeepSleep(uint32_t msecToWake, bool skipPreflight = false, bool skipSaveN
|
|||||||
pinMode(LORA_CS, OUTPUT);
|
pinMode(LORA_CS, OUTPUT);
|
||||||
digitalWrite(LORA_CS, HIGH);
|
digitalWrite(LORA_CS, HIGH);
|
||||||
gpio_hold_en((gpio_num_t)LORA_CS);
|
gpio_hold_en((gpio_num_t)LORA_CS);
|
||||||
|
#elif defined(ELECROW_PANEL)
|
||||||
|
// Elecrow panels do not use LORA_CS, do nothing
|
||||||
#else
|
#else
|
||||||
if (GPIO_IS_VALID_OUTPUT_GPIO(LORA_CS)) {
|
if (GPIO_IS_VALID_OUTPUT_GPIO(LORA_CS)) {
|
||||||
// LoRa CS (RADIO_NSS) needs to stay HIGH, even during deep sleep
|
// LoRa CS (RADIO_NSS) needs to stay HIGH, even during deep sleep
|
||||||
@ -400,7 +403,7 @@ esp_sleep_wakeup_cause_t doLightSleep(uint64_t sleepMsec) // FIXME, use a more r
|
|||||||
#ifdef INPUTDRIVER_ENCODER_BTN
|
#ifdef INPUTDRIVER_ENCODER_BTN
|
||||||
gpio_wakeup_enable((gpio_num_t)INPUTDRIVER_ENCODER_BTN, GPIO_INTR_LOW_LEVEL);
|
gpio_wakeup_enable((gpio_num_t)INPUTDRIVER_ENCODER_BTN, GPIO_INTR_LOW_LEVEL);
|
||||||
#endif
|
#endif
|
||||||
#if defined(T_WATCH_S3) || defined(ELECROW)
|
#if defined(WAKE_ON_TOUCH)
|
||||||
gpio_wakeup_enable((gpio_num_t)SCREEN_TOUCH_INT, GPIO_INTR_LOW_LEVEL);
|
gpio_wakeup_enable((gpio_num_t)SCREEN_TOUCH_INT, GPIO_INTR_LOW_LEVEL);
|
||||||
#endif
|
#endif
|
||||||
enableLoraInterrupt();
|
enableLoraInterrupt();
|
||||||
@ -433,11 +436,12 @@ esp_sleep_wakeup_cause_t doLightSleep(uint64_t sleepMsec) // FIXME, use a more r
|
|||||||
// Disable wake-on-button interrupt. Re-attach normal button-interrupts
|
// Disable wake-on-button interrupt. Re-attach normal button-interrupts
|
||||||
gpio_wakeup_disable(pin);
|
gpio_wakeup_disable(pin);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(INPUTDRIVER_ENCODER_BTN)
|
||||||
#if defined(T_WATCH_S3) || defined(ELECROW)
|
gpio_wakeup_disable((gpio_num_t)INPUTDRIVER_ENCODER_BTN);
|
||||||
|
#endif
|
||||||
|
#if defined(WAKE_ON_TOUCH)
|
||||||
gpio_wakeup_disable((gpio_num_t)SCREEN_TOUCH_INT);
|
gpio_wakeup_disable((gpio_num_t)SCREEN_TOUCH_INT);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(SOC_PM_SUPPORT_EXT_WAKEUP) && defined(LORA_DIO1) && (LORA_DIO1 != RADIOLIB_NC)
|
#if !defined(SOC_PM_SUPPORT_EXT_WAKEUP) && defined(LORA_DIO1) && (LORA_DIO1 != RADIOLIB_NC)
|
||||||
if (radioType != RF95_RADIO) {
|
if (radioType != RF95_RADIO) {
|
||||||
gpio_wakeup_disable((gpio_num_t)LORA_DIO1);
|
gpio_wakeup_disable((gpio_num_t)LORA_DIO1);
|
||||||
@ -506,23 +510,24 @@ bool shouldLoraWake(uint32_t msecToWake)
|
|||||||
|
|
||||||
void enableLoraInterrupt()
|
void enableLoraInterrupt()
|
||||||
{
|
{
|
||||||
|
esp_err_t res;
|
||||||
#if SOC_PM_SUPPORT_EXT_WAKEUP && defined(LORA_DIO1) && (LORA_DIO1 != RADIOLIB_NC)
|
#if SOC_PM_SUPPORT_EXT_WAKEUP && defined(LORA_DIO1) && (LORA_DIO1 != RADIOLIB_NC)
|
||||||
gpio_pulldown_en((gpio_num_t)LORA_DIO1);
|
res = gpio_pulldown_en((gpio_num_t)LORA_DIO1);
|
||||||
|
if (res != ESP_OK) {
|
||||||
|
LOG_ERROR("gpio_pulldown_en(LORA_DIO1) result %d", res);
|
||||||
|
}
|
||||||
#if defined(LORA_RESET) && (LORA_RESET != RADIOLIB_NC)
|
#if defined(LORA_RESET) && (LORA_RESET != RADIOLIB_NC)
|
||||||
gpio_pullup_en((gpio_num_t)LORA_RESET);
|
res = gpio_pullup_en((gpio_num_t)LORA_RESET);
|
||||||
|
if (res != ESP_OK) {
|
||||||
|
LOG_ERROR("gpio_pullup_en(LORA_RESET) result %d", res);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(LORA_CS) && (LORA_CS != RADIOLIB_NC)
|
#if defined(LORA_CS) && (LORA_CS != RADIOLIB_NC) && !defined(ELECROW_PANEL)
|
||||||
gpio_pullup_en((gpio_num_t)LORA_CS);
|
gpio_pullup_en((gpio_num_t)LORA_CS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (rtc_gpio_is_valid_gpio((gpio_num_t)LORA_DIO1)) {
|
LOG_INFO("setup LORA_DIO1 (GPIO%02d) with wakeup by gpio interrupt", LORA_DIO1);
|
||||||
// Setup light/deep sleep with wakeup by external source
|
gpio_wakeup_enable((gpio_num_t)LORA_DIO1, GPIO_INTR_HIGH_LEVEL);
|
||||||
LOG_INFO("setup LORA_DIO1 (GPIO%02d) with wakeup by external source", LORA_DIO1);
|
|
||||||
esp_sleep_enable_ext0_wakeup((gpio_num_t)LORA_DIO1, HIGH);
|
|
||||||
} else {
|
|
||||||
LOG_INFO("setup LORA_DIO1 (GPIO%02d) with wakeup by gpio interrupt", LORA_DIO1);
|
|
||||||
gpio_wakeup_enable((gpio_num_t)LORA_DIO1, GPIO_INTR_HIGH_LEVEL);
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(LORA_DIO1) && (LORA_DIO1 != RADIOLIB_NC)
|
#elif defined(LORA_DIO1) && (LORA_DIO1 != RADIOLIB_NC)
|
||||||
if (radioType != RF95_RADIO) {
|
if (radioType != RF95_RADIO) {
|
||||||
|
@ -3,13 +3,11 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
// static const uint8_t LED_BUILTIN = -1;
|
static const uint8_t TX = 43;
|
||||||
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
// static const uint8_t TX = 43;
|
static const uint8_t SDA = 15;
|
||||||
// static const uint8_t RX = 44;
|
static const uint8_t SCL = 16;
|
||||||
|
|
||||||
static const uint8_t SDA = 39;
|
|
||||||
static const uint8_t SCL = 40;
|
|
||||||
|
|
||||||
// Default SPI will be mapped to Radio
|
// Default SPI will be mapped to Radio
|
||||||
static const uint8_t SS = -1;
|
static const uint8_t SS = -1;
|
||||||
@ -17,13 +15,9 @@ static const uint8_t MOSI = 48;
|
|||||||
static const uint8_t MISO = 47;
|
static const uint8_t MISO = 47;
|
||||||
static const uint8_t SCK = 41;
|
static const uint8_t SCK = 41;
|
||||||
|
|
||||||
#ifndef CROW_SELECT
|
|
||||||
static const uint8_t SPI_MOSI = 6;
|
static const uint8_t SPI_MOSI = 6;
|
||||||
static const uint8_t SPI_SCK = 5;
|
static const uint8_t SPI_SCK = 5;
|
||||||
static const uint8_t SPI_MISO = 4;
|
static const uint8_t SPI_MISO = 4;
|
||||||
static const uint8_t SPI_CS = 7; // SD does not support -1
|
|
||||||
static const uint8_t SDCARD_CS = SPI_CS;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint8_t A0 = 1;
|
static const uint8_t A0 = 1;
|
||||||
static const uint8_t A1 = 2;
|
static const uint8_t A1 = 2;
|
||||||
|
@ -4,10 +4,8 @@ board = crowpanel
|
|||||||
board_check = true
|
board_check = true
|
||||||
upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
board_build.partitions = default_16MB.csv ; must be here for some reason, board.json is not enough !?
|
board_build.partitions = default_16MB.csv ; must be here for some reason, board.json is not enough !?
|
||||||
|
|
||||||
build_flags = ${esp32s3_base.build_flags} -Os
|
build_flags = ${esp32s3_base.build_flags} -Os
|
||||||
-I variants/elecrow_panel
|
-I variants/elecrow_panel
|
||||||
-D ELECROW
|
|
||||||
-D ELECROW_PANEL
|
-D ELECROW_PANEL
|
||||||
-D CONFIG_ARDUHAL_LOG_COLORS
|
-D CONFIG_ARDUHAL_LOG_COLORS
|
||||||
-D RADIOLIB_DEBUG_SPI=0
|
-D RADIOLIB_DEBUG_SPI=0
|
||||||
@ -22,15 +20,15 @@ build_flags = ${esp32s3_base.build_flags} -Os
|
|||||||
-D MESHTASTIC_EXCLUDE_SOCKETAPI=1
|
-D MESHTASTIC_EXCLUDE_SOCKETAPI=1
|
||||||
-D MESHTASTIC_EXCLUDE_SCREEN=1
|
-D MESHTASTIC_EXCLUDE_SCREEN=1
|
||||||
-D MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
|
-D MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
|
||||||
; -D INPUTDRIVER_BUTTON_TYPE=0
|
|
||||||
-D HAS_TELEMETRY=0
|
-D HAS_TELEMETRY=0
|
||||||
-D CONFIG_DISABLE_HAL_LOCKS=1
|
-D CONFIG_DISABLE_HAL_LOCKS=1
|
||||||
|
-D USE_PIN_BUZZER
|
||||||
-D HAS_SCREEN=0
|
-D HAS_SCREEN=0
|
||||||
-D HAS_TFT=1
|
-D HAS_TFT=1
|
||||||
-D RAM_SIZE=6144
|
-D RAM_SIZE=6144
|
||||||
-D LV_LVGL_H_INCLUDE_SIMPLE
|
-D LV_LVGL_H_INCLUDE_SIMPLE
|
||||||
-D LV_CONF_INCLUDE_SIMPLE
|
-D LV_CONF_INCLUDE_SIMPLE
|
||||||
-D LV_COMP_CONF_INCLUDE_SIMPLE
|
-D LV_COMP_CONF_INCLUDE_SIMPLE
|
||||||
-D LV_USE_SYSMON=0
|
-D LV_USE_SYSMON=0
|
||||||
-D LV_USE_PROFILER=0
|
-D LV_USE_PROFILER=0
|
||||||
-D LV_USE_PERF_MONITOR=0
|
-D LV_USE_PERF_MONITOR=0
|
||||||
@ -40,29 +38,44 @@ build_flags = ${esp32s3_base.build_flags} -Os
|
|||||||
-D USE_LOG_DEBUG
|
-D USE_LOG_DEBUG
|
||||||
-D LOG_DEBUG_INC=\"DebugConfiguration.h\"
|
-D LOG_DEBUG_INC=\"DebugConfiguration.h\"
|
||||||
-D USE_PACKET_API
|
-D USE_PACKET_API
|
||||||
|
-D HAS_SDCARD
|
||||||
|
-D SD_SPI_FREQUENCY=75000000
|
||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
${device-ui_base.lib_deps}
|
${device-ui_base.lib_deps}
|
||||||
earlephilhower/ESP8266Audio@^1.9.9
|
earlephilhower/ESP8266Audio@1.9.9
|
||||||
earlephilhower/ESP8266SAM@^1.0.1
|
earlephilhower/ESP8266SAM@1.0.1
|
||||||
lovyan03/LovyanGFX@^1.2.0
|
lovyan03/LovyanGFX@1.2.0 ; note: v1.2.7 breaks the elecrow 7" display functionality
|
||||||
hideakitai/TCA9534@^0.1.1
|
hideakitai/TCA9534@0.1.1
|
||||||
|
|
||||||
[env:elecrow-24-28-tft]
|
[crowpanel_small] ; 2.4, 2.8, 3.5 inch
|
||||||
extends = crowpanel_base
|
extends = crowpanel_base
|
||||||
|
|
||||||
build_flags =
|
build_flags =
|
||||||
${crowpanel_base.build_flags}
|
${crowpanel_base.build_flags}
|
||||||
-D TFT_HEIGHT=320 ; needed in variant.h
|
-D CROW_SELECT=1
|
||||||
-D HAS_SDCARD
|
|
||||||
-D SDCARD_USE_SOFT_SPI
|
-D SDCARD_USE_SOFT_SPI
|
||||||
|
-D SDCARD_CS=7
|
||||||
-D SPI_DRIVER_SELECT=2
|
-D SPI_DRIVER_SELECT=2
|
||||||
-D USE_PIN_BUZZER
|
|
||||||
; -D INPUTDRIVER_BUTTON_TYPE=0 ; no button as this pin is assigned to LoRa cs!
|
|
||||||
-D SCREEN_TOUCH_INT=47 ; used to wake up the MCU by touch
|
|
||||||
-D LGFX_DRIVER_TEMPLATE
|
-D LGFX_DRIVER_TEMPLATE
|
||||||
-D LGFX_DRIVER=LGFX_GENERIC
|
-D LGFX_DRIVER=LGFX_GENERIC
|
||||||
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_GENERIC.h\"
|
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_GENERIC.h\"
|
||||||
|
-D VIEW_320x240
|
||||||
|
-D MAP_FULL_REDRAW
|
||||||
|
|
||||||
|
[crowpanel_large] ; 4.3, 5.0, 7.0 inch
|
||||||
|
extends = crowpanel_base
|
||||||
|
build_flags =
|
||||||
|
${crowpanel_base.build_flags}
|
||||||
|
-D CROW_SELECT=2
|
||||||
|
-D SDCARD_CS=7
|
||||||
|
-D LGFX_DRIVER=LGFX_ELECROW70
|
||||||
|
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_ELECROW70.h\"
|
||||||
|
-D DISPLAY_SET_RESOLUTION
|
||||||
|
|
||||||
|
[env:elecrow-adv-24-28-tft]
|
||||||
|
extends = crowpanel_small
|
||||||
|
build_flags =
|
||||||
|
${crowpanel_small.build_flags}
|
||||||
-D SPI_FREQUENCY=80000000
|
-D SPI_FREQUENCY=80000000
|
||||||
-D LGFX_SCREEN_WIDTH=240
|
-D LGFX_SCREEN_WIDTH=240
|
||||||
-D LGFX_SCREEN_HEIGHT=320
|
-D LGFX_SCREEN_HEIGHT=320
|
||||||
@ -81,25 +94,12 @@ build_flags =
|
|||||||
-D LGFX_TOUCH_INT=47
|
-D LGFX_TOUCH_INT=47
|
||||||
-D LGFX_TOUCH_RST=48
|
-D LGFX_TOUCH_RST=48
|
||||||
-D LGFX_TOUCH_ROTATION=0
|
-D LGFX_TOUCH_ROTATION=0
|
||||||
-D VIEW_320x240
|
|
||||||
-D MAP_FULL_REDRAW
|
|
||||||
|
|
||||||
[env:elecrow-35-tft]
|
|
||||||
extends = crowpanel_base
|
|
||||||
|
|
||||||
|
[env:elecrow-adv-35-tft]
|
||||||
|
extends = crowpanel_small
|
||||||
build_flags =
|
build_flags =
|
||||||
${crowpanel_base.build_flags}
|
${crowpanel_small.build_flags}
|
||||||
-D TFT_HEIGHT=480 ; needed in variant.h
|
|
||||||
-D HAS_SDCARD
|
|
||||||
-D SDCARD_USE_SOFT_SPI
|
|
||||||
-D SPI_DRIVER_SELECT=2
|
|
||||||
-D USE_PIN_BUZZER
|
|
||||||
; -D INPUTDRIVER_BUTTON_TYPE=0 ; no button as this pin is assigned to LoRa cs!
|
|
||||||
-D SCREEN_TOUCH_INT=47 ; used to wake up the MCU by touch
|
|
||||||
-D LV_CACHE_DEF_SIZE=2097152
|
-D LV_CACHE_DEF_SIZE=2097152
|
||||||
-D LGFX_DRIVER_TEMPLATE
|
|
||||||
-D LGFX_DRIVER=LGFX_GENERIC
|
|
||||||
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_GENERIC.h\"
|
|
||||||
-D SPI_FREQUENCY=60000000
|
-D SPI_FREQUENCY=60000000
|
||||||
-D LGFX_SCREEN_WIDTH=320
|
-D LGFX_SCREEN_WIDTH=320
|
||||||
-D LGFX_SCREEN_HEIGHT=480
|
-D LGFX_SCREEN_HEIGHT=480
|
||||||
@ -119,5 +119,10 @@ build_flags =
|
|||||||
-D LGFX_TOUCH_RST=48
|
-D LGFX_TOUCH_RST=48
|
||||||
-D LGFX_TOUCH_ROTATION=0
|
-D LGFX_TOUCH_ROTATION=0
|
||||||
-D DISPLAY_SET_RESOLUTION
|
-D DISPLAY_SET_RESOLUTION
|
||||||
|
|
||||||
|
; 4.3, 5.0, 7.0 inch 800x480 IPS (V1)
|
||||||
|
[env:elecrow-adv1-43-50-70-tft]
|
||||||
|
extends = crowpanel_large
|
||||||
|
build_flags =
|
||||||
|
${crowpanel_large.build_flags}
|
||||||
-D VIEW_320x240
|
-D VIEW_320x240
|
||||||
-D MAP_FULL_REDRAW
|
|
||||||
|
@ -1,124 +1,14 @@
|
|||||||
#define I2C_SDA 15
|
#define I2C_SDA 15
|
||||||
#define I2C_SCL 16
|
#define I2C_SCL 16
|
||||||
|
|
||||||
#if TFT_HEIGHT == 320 && not defined(HAS_TFT) // 2.4 and 2.8 TFT
|
#if CROW_SELECT == 1
|
||||||
// ST7789 TFT LCD
|
#define WAKE_ON_TOUCH
|
||||||
#define ST7789_CS 40
|
|
||||||
#define ST7789_RS 41 // DC
|
|
||||||
#define ST7789_SDA 39 // MOSI
|
|
||||||
#define ST7789_SCK 42
|
|
||||||
#define ST7789_RESET -1
|
|
||||||
#define ST7789_MISO 38
|
|
||||||
#define ST7789_BUSY -1
|
|
||||||
#define ST7789_BL 38
|
|
||||||
#define ST7789_SPI_HOST SPI2_HOST
|
|
||||||
#define TFT_BL 38
|
|
||||||
#define SPI_FREQUENCY 60000000
|
|
||||||
#define SPI_READ_FREQUENCY 16000000
|
|
||||||
#define TFT_OFFSET_ROTATION 0
|
|
||||||
#define SCREEN_ROTATE
|
|
||||||
#define TFT_DUMMY_READ_PIXELS 8
|
|
||||||
#define SCREEN_TRANSITION_FRAMERATE 5
|
|
||||||
#define BRIGHTNESS_DEFAULT 130 // Medium Low Brightness
|
|
||||||
|
|
||||||
#define HAS_TOUCHSCREEN 1
|
|
||||||
#define SCREEN_TOUCH_INT 47
|
#define SCREEN_TOUCH_INT 47
|
||||||
#define SCREEN_TOUCH_RST 48
|
#define USE_POWERSAVE
|
||||||
#define TOUCH_I2C_PORT 0
|
#define SLEEP_TIME 180
|
||||||
#define TOUCH_SLAVE_ADDRESS 0x38 // FT5x06
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TFT_HEIGHT == 480 && not defined(HAS_TFT) // 3.5 TFT
|
#if CROW_SELECT == 1
|
||||||
// ILI9488 TFT LCD
|
|
||||||
#define ILI9488_CS 40
|
|
||||||
#define ILI9488_RS 41 // DC
|
|
||||||
#define ILI9488_SDA 39 // MOSI
|
|
||||||
#define ILI9488_SCK 42
|
|
||||||
#define ILI9488_RESET -1
|
|
||||||
#define ILI9488_MISO 38
|
|
||||||
#define ILI9488_BUSY -1
|
|
||||||
#define ILI9488_BL 38
|
|
||||||
#define ILI9488_SPI_HOST SPI2_HOST
|
|
||||||
#define TFT_BL 38
|
|
||||||
#define SPI_FREQUENCY 40000000
|
|
||||||
#define SPI_READ_FREQUENCY 16000000
|
|
||||||
#define TFT_OFFSET_ROTATION 0
|
|
||||||
#define SCREEN_ROTATE
|
|
||||||
#define TFT_DUMMY_READ_PIXELS 8
|
|
||||||
#define SCREEN_TRANSITION_FRAMERATE 5
|
|
||||||
#define BRIGHTNESS_DEFAULT 130 // Medium Low Brightness
|
|
||||||
|
|
||||||
#define HAS_TOUCHSCREEN 1
|
|
||||||
#define SCREEN_TOUCH_INT 47
|
|
||||||
#define SCREEN_TOUCH_RST 48
|
|
||||||
#define TOUCH_I2C_PORT 0
|
|
||||||
#define TOUCH_SLAVE_ADDRESS 0x5D // GT911
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CROW_SELECT
|
|
||||||
#define ST72xx_DE 42
|
|
||||||
#define ST72xx_VSYNC 41
|
|
||||||
#define ST72xx_HSYNC 40
|
|
||||||
#define ST72xx_PCLK 39
|
|
||||||
#define ST72xx_R0 7
|
|
||||||
#define ST72xx_R1 17
|
|
||||||
#define ST72xx_R2 18
|
|
||||||
#define ST72xx_R3 3
|
|
||||||
#define ST72xx_R4 46
|
|
||||||
#define ST72xx_G0 9
|
|
||||||
#define ST72xx_G1 10
|
|
||||||
#define ST72xx_G2 11
|
|
||||||
#define ST72xx_G3 12
|
|
||||||
#define ST72xx_G4 13
|
|
||||||
#define ST72xx_G5 14
|
|
||||||
#define ST72xx_B0 21
|
|
||||||
#define ST72xx_B1 47
|
|
||||||
#define ST72xx_B2 48
|
|
||||||
#define ST72xx_B3 45
|
|
||||||
#define ST72xx_B4 38
|
|
||||||
|
|
||||||
#define HAS_TOUCHSCREEN 1
|
|
||||||
#define TOUCH_I2C_PORT 0
|
|
||||||
#define TOUCH_SLAVE_ADDRESS 0x5D // GT911
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CROW_SELECT) && CROW_SELECT == 1 // 4.3 TFT 800x480
|
|
||||||
#define ST7265_HSYNC_POLARITY 0
|
|
||||||
#define ST7265_HSYNC_FRONT_PORCH 24
|
|
||||||
#define ST7265_HSYNC_PULSE_WIDTH 8
|
|
||||||
#define ST7265_HSYNC_BACK_PORCH 24
|
|
||||||
#define ST7265_VSYNC_POLARITY 1
|
|
||||||
#define ST7265_VSYNC_FRONT_PORCH 24
|
|
||||||
#define ST7265_VSYNC_PULSE_WIDTH 8
|
|
||||||
#define ST7265_VSYNC_BACK_PORCH 24
|
|
||||||
#define ST7265_PCLK_ACTIVE_NEG 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CROW_SELECT) && CROW_SELECT == 2 // 5.0 TFT 800x480
|
|
||||||
#define ST7262_HSYNC_POLARITY 0
|
|
||||||
#define ST7262_HSYNC_FRONT_PORCH 8
|
|
||||||
#define ST7262_HSYNC_PULSE_WIDTH 4
|
|
||||||
#define ST7262_HSYNC_BACK_PORCH 8
|
|
||||||
#define ST7262_VSYNC_POLARITY 0
|
|
||||||
#define ST7262_VSYNC_FRONT_PORCH 8
|
|
||||||
#define ST7262_VSYNC_PULSE_WIDTH 4
|
|
||||||
#define ST7262_VSYNC_BACK_PORCH 8
|
|
||||||
#define ST7262_PCLK_ACTIVE_NEG 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CROW_SELECT) && CROW_SELECT == 3 // 7.0 TFT 800x480
|
|
||||||
#define SC7277_HSYNC_POLARITY 0
|
|
||||||
#define SC7277_HSYNC_FRONT_PORCH 8
|
|
||||||
#define SC7277_HSYNC_PULSE_WIDTH 4
|
|
||||||
#define SC7277_HSYNC_BACK_PORCH 8
|
|
||||||
#define SC7277_VSYNC_POLARITY 0
|
|
||||||
#define SC7277_VSYNC_FRONT_PORCH 8
|
|
||||||
#define SC7277_VSYNC_PULSE_WIDTH 4
|
|
||||||
#define SC7277_VSYNC_BACK_PORCH 8
|
|
||||||
#define SC7277_PCLK_ACTIVE_NEG 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TFT_HEIGHT == 320 // 2.4-2.8 have I2S audio
|
|
||||||
// dac / amp
|
// dac / amp
|
||||||
// #define HAS_I2S // didn't get I2S sound working
|
// #define HAS_I2S // didn't get I2S sound working
|
||||||
#define PIN_BUZZER 8 // using pwm buzzer instead (nobody will notice, lol)
|
#define PIN_BUZZER 8 // using pwm buzzer instead (nobody will notice, lol)
|
||||||
@ -131,10 +21,16 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// GPS via UART1 connector
|
// GPS via UART1 connector
|
||||||
#define HAS_GPS 1
|
|
||||||
#define GPS_DEFAULT_NOT_PRESENT 1
|
#define GPS_DEFAULT_NOT_PRESENT 1
|
||||||
|
#define HAS_GPS 1
|
||||||
|
#if CROW_SELECT == 1
|
||||||
#define GPS_RX_PIN 18
|
#define GPS_RX_PIN 18
|
||||||
#define GPS_TX_PIN 17
|
#define GPS_TX_PIN 17
|
||||||
|
#else
|
||||||
|
// GPIOs shared with LoRa or MIC module
|
||||||
|
#define GPS_RX_PIN 19
|
||||||
|
#define GPS_TX_PIN 20
|
||||||
|
#endif
|
||||||
|
|
||||||
// Extension Slot Layout, viewed from above (2.4-3.5)
|
// Extension Slot Layout, viewed from above (2.4-3.5)
|
||||||
// DIO1/IO1 o o IO2/NRESET
|
// DIO1/IO1 o o IO2/NRESET
|
||||||
@ -158,9 +54,11 @@
|
|||||||
|
|
||||||
// LoRa
|
// LoRa
|
||||||
#define USE_SX1262
|
#define USE_SX1262
|
||||||
#define LORA_CS 0 // GND
|
|
||||||
|
|
||||||
#if TFT_HEIGHT == 320 || TFT_HEIGHT == 480 // 2.4 - 3.5 TFT
|
#if CROW_SELECT == 1
|
||||||
|
// 2.4", 2.8, 3.5"""
|
||||||
|
#define HW_SPI1_DEVICE
|
||||||
|
#define LORA_CS 0
|
||||||
#define LORA_SCK 10
|
#define LORA_SCK 10
|
||||||
#define LORA_MISO 9
|
#define LORA_MISO 9
|
||||||
#define LORA_MOSI 3
|
#define LORA_MOSI 3
|
||||||
@ -173,6 +71,8 @@
|
|||||||
#define SENSOR_POWER_CTRL_PIN 45
|
#define SENSOR_POWER_CTRL_PIN 45
|
||||||
#define SENSOR_POWER_ON LOW
|
#define SENSOR_POWER_ON LOW
|
||||||
#else
|
#else
|
||||||
|
// 4.3", 5.0", 7.0"
|
||||||
|
#define LORA_CS 0
|
||||||
#define LORA_SCK 5
|
#define LORA_SCK 5
|
||||||
#define LORA_MISO 4
|
#define LORA_MISO 4
|
||||||
#define LORA_MOSI 6
|
#define LORA_MOSI 6
|
||||||
@ -182,14 +82,9 @@
|
|||||||
#define LORA_DIO2 2 // SX1262 BUSY
|
#define LORA_DIO2 2 // SX1262 BUSY
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define HW_SPI1_DEVICE
|
|
||||||
#define SX126X_CS LORA_CS
|
#define SX126X_CS LORA_CS
|
||||||
#define SX126X_DIO1 LORA_DIO1
|
#define SX126X_DIO1 LORA_DIO1
|
||||||
#define SX126X_BUSY LORA_DIO2
|
#define SX126X_BUSY LORA_DIO2
|
||||||
#define SX126X_RESET LORA_RESET
|
#define SX126X_RESET LORA_RESET
|
||||||
#define SX126X_DIO2_AS_RF_SWITCH
|
#define SX126X_DIO2_AS_RF_SWITCH
|
||||||
|
|
||||||
#define SX126X_DIO3_TCXO_VOLTAGE 3.3
|
#define SX126X_DIO3_TCXO_VOLTAGE 3.3
|
||||||
|
|
||||||
#define USE_VIRTUAL_KEYBOARD 1
|
|
||||||
#define DISPLAY_CLOCK_FRAME 1
|
|
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
#define HAS_TOUCHSCREEN 1
|
#define HAS_TOUCHSCREEN 1
|
||||||
|
|
||||||
#define SLEEP_TIME 120
|
#define USE_POWERSAVE
|
||||||
|
#define SLEEP_TIME 180
|
||||||
|
|
||||||
// Analog pins
|
// Analog pins
|
||||||
#define BATTERY_PIN 4 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
#define BATTERY_PIN 4 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
||||||
|
@ -305,6 +305,9 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
#define HAS_TOUCHSCREEN 1
|
#define HAS_TOUCHSCREEN 1
|
||||||
#define SCREEN_TOUCH_INT WB_IO6
|
#define SCREEN_TOUCH_INT WB_IO6
|
||||||
|
|
||||||
|
#define USE_POWERSAVE
|
||||||
|
#define SLEEP_TIME 120
|
||||||
|
|
||||||
#define CANNED_MESSAGE_MODULE_ENABLE 1
|
#define CANNED_MESSAGE_MODULE_ENABLE 1
|
||||||
#define USE_VIRTUAL_KEYBOARD 1
|
#define USE_VIRTUAL_KEYBOARD 1
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#define TOUCH_I2C_PORT 0
|
#define TOUCH_I2C_PORT 0
|
||||||
#define TOUCH_SLAVE_ADDRESS 0x5D // GT911
|
#define TOUCH_SLAVE_ADDRESS 0x5D // GT911
|
||||||
|
|
||||||
|
#define USE_POWERSAVE
|
||||||
#define SLEEP_TIME 120
|
#define SLEEP_TIME 120
|
||||||
|
|
||||||
#ifndef HAS_TFT
|
#ifndef HAS_TFT
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
#define SCREEN_TOUCH_USE_I2C1
|
#define SCREEN_TOUCH_USE_I2C1
|
||||||
#define TOUCH_I2C_PORT 1
|
#define TOUCH_I2C_PORT 1
|
||||||
#define TOUCH_SLAVE_ADDRESS 0x38
|
#define TOUCH_SLAVE_ADDRESS 0x38
|
||||||
|
#define WAKE_ON_TOUCH
|
||||||
|
|
||||||
|
#define USE_POWERSAVE
|
||||||
#define SLEEP_TIME 180
|
#define SLEEP_TIME 180
|
||||||
|
|
||||||
#define I2C_SDA1 39 // Used for capacitive touch
|
#define I2C_SDA1 39 // Used for capacitive touch
|
||||||
|
@ -41,6 +41,9 @@
|
|||||||
#define USE_XPT2046 1
|
#define USE_XPT2046 1
|
||||||
#define TOUCH_CS 38
|
#define TOUCH_CS 38
|
||||||
|
|
||||||
|
#define USE_POWERSAVE
|
||||||
|
#define SLEEP_TIME 180
|
||||||
|
|
||||||
#define HAS_GPS \
|
#define HAS_GPS \
|
||||||
0 // the unphone doesn't have a gps module by default (though
|
0 // the unphone doesn't have a gps module by default (though
|
||||||
// GPS featherwing -- https://www.adafruit.com/product/3133
|
// GPS featherwing -- https://www.adafruit.com/product/3133
|
||||||
|
Loading…
Reference in New Issue
Block a user