From d48d60f3c430fe39e7ec84cf87107541aaa623a7 Mon Sep 17 00:00:00 2001 From: 3rdIteration Date: Mon, 3 Jun 2024 23:07:06 -0400 Subject: [PATCH] diy: add M5StickCPlus2 support Add Configuration Profile Add Code to Support Power Management for M5StickCPlus2 --- .gitlab-ci.yml | 7 ++ .../sdkconfig_display_m5stickcplus2.defaults | 109 ++++++++++++++++++ diy/README.md | 11 ++ main/Kconfig.projbuild | 28 +++-- main/power.c | 3 + main/power/m5stickcplus2.inc | 84 ++++++++++++++ main/process/dashboard.c | 6 + main/process/ota_defines.h | 2 + 8 files changed, 239 insertions(+), 11 deletions(-) create mode 100644 configs/sdkconfig_display_m5stickcplus2.defaults create mode 100644 main/power/m5stickcplus2.inc diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ffc829f1..ac0f6918 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -194,6 +194,13 @@ test_build_display_m5stickcplus: after_script: - mv build build_display_m5stickcplus +test_build_display_m5stickcplus2: + extends: .test_build_template + before_script: + - cp configs/sdkconfig_display_m5stickcplus2.defaults sdkconfig.defaults + after_script: + - mv build build_display_m5stickcplus2 + test_build_display_m5cores3: extends: .test_build_template before_script: diff --git a/configs/sdkconfig_display_m5stickcplus2.defaults b/configs/sdkconfig_display_m5stickcplus2.defaults new file mode 100644 index 00000000..855e44bd --- /dev/null +++ b/configs/sdkconfig_display_m5stickcplus2.defaults @@ -0,0 +1,109 @@ +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n +CONFIG_ADC_CAL_LUT_ENABLE=n +CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y +CONFIG_APP_REPRODUCIBLE_BUILD=y +CONFIG_BF20A6_SUPPORT=n +CONFIG_BF3005_SUPPORT=n +CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2=y +CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y +CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y +CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y +CONFIG_BOOTLOADER_WDT_ENABLE=n +CONFIG_BTDM_CTRL_BLE_MAX_CONN=1 +CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517 +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11 +CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632 +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1 +CONFIG_BT_NIMBLE_NVS_PERSIST=y +CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n +CONFIG_BT_NIMBLE_ROLE_CENTRAL=n +CONFIG_BT_NIMBLE_ROLE_OBSERVER=n +CONFIG_BT_NIMBLE_SM_LEGACY=n +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j" +CONFIG_BUTTON_LONG_PRESS_TIME_MS=500 +CONFIG_BUTTON_SERIAL_TIME_MS=100 +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y +CONFIG_COMPILER_WARN_WRITE_STRINGS=y +CONFIG_DEBUG_MODE=y +CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y +CONFIG_EFUSE_VIRTUAL=y +CONFIG_ESP32_REV_MIN_3=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n +CONFIG_ESP_CONSOLE_NONE=y +CONFIG_ESP_DEBUG_OCDAWARE=n +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP_ERR_TO_NAME_LOOKUP=n +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n +CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288 +CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y +CONFIG_ESP_TASK_WDT_INIT=n +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6 +CONFIG_ESP_WIFI_NVS_ENABLED=n +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2 +CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=6 +CONFIG_ETH_USE_ESP32_EMAC=n +CONFIG_ETH_USE_SPI_ETHERNET=n +CONFIG_FATFS_PER_FILE_CACHE=n +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560 +CONFIG_GC0308_SUPPORT=n +CONFIG_GC032A_SUPPORT=n +CONFIG_GC2145_SUPPORT=n +CONFIG_HTTPD_ERR_RESP_NO_DELAY=n +CONFIG_LOG_COLORS=n +CONFIG_LWIP_DHCPS=n +CONFIG_LWIP_IPV6=n +CONFIG_LWIP_NETIF_LOOPBACK=n +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n +CONFIG_MBEDTLS_HARDWARE_MPI=n +CONFIG_MBEDTLS_HAVE_TIME=n +CONFIG_MBEDTLS_PEM_PARSE_C=n +CONFIG_MBEDTLS_PEM_WRITE_C=n +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n +CONFIG_MBEDTLS_SSL_ALPN=n +CONFIG_MBEDTLS_SSL_RENEGOTIATION=n +CONFIG_MBEDTLS_X509_CRL_PARSE_C=n +CONFIG_MBEDTLS_X509_CSR_PARSE_C=n +CONFIG_MQTT_PROTOCOL_311=n +CONFIG_MQTT_TRANSPORT_SSL=n +CONFIG_NEWLIB_NANO_FORMAT=y +CONFIG_NT99141_SUPPORT=n +CONFIG_OV2640_SUPPORT=n +CONFIG_OV3660_SUPPORT=n +CONFIG_OV5640_SUPPORT=n +CONFIG_OV7670_SUPPORT=n +CONFIG_OV7725_SUPPORT=n +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_OFFSET=0x9000 +CONFIG_SC030IOT_SUPPORT=n +CONFIG_SCCB_CLK_FREQ=200000 +CONFIG_SPIFFS_CACHE=n +CONFIG_SPIFFS_GC_MAX_RUNS=1 +CONFIG_SPIFFS_MAX_PARTITIONS=1 +CONFIG_SPIFFS_PAGE_CHECK=n +CONFIG_SPIFFS_USE_MAGIC=n +CONFIG_SPIFFS_USE_MTIME=n +CONFIG_SPIRAM=y +CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y +CONFIG_SPIRAM_BANKSWITCH_ENABLE=n +CONFIG_SPIRAM_MEMTEST=n +CONFIG_UART_ISR_IN_IRAM=y +CONFIG_UNITY_ENABLE_DOUBLE=n +CONFIG_UNITY_ENABLE_FLOAT=n +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n +CONFIG_VFS_SUPPORT_IO=n +CONFIG_WS_TRANSPORT=n diff --git a/diy/README.md b/diy/README.md index 51bd1735..80841108 100644 --- a/diy/README.md +++ b/diy/README.md @@ -29,6 +29,17 @@ There are a number of hardware devices that can run Jade firmware with minimal c * USB VendorID:0403 ProductID:6001 (Different to retail Jade, will require custom Electrum/HWI builds until they add support to these device IDs) * Typically supports Secure Boot V1 +### M5Stack M5StickC PLUS 2 +![M5Stack M5StickC PLUS2](img/M5StickCPlus.jpg) +* [Vendor Product Page](https://shop.m5stack.com/products/m5stickc-plus2-esp32-mini-iot-development-kit) +* ~$20 USD +* Extra 2mb PSRAM (When compared to M5StickC PLUS) +* Two button interface (Long press front button to select) +* Includes 200mAh battery +* Fully assembled with case +* USB VendorID:0403 ProductID:6001 (Different to retail Jade, will require custom Electrum/HWI builds until they add support to these device IDs) +* Typically supports Secure Boot V2 + ### M5Stack Basic Core ![M5Stack Basic Core](img/M5Stack-Basic.jpg) * [Vendor Product Page](https://shop.m5stack.com/products/esp32-basic-core-lot-development-kit-v2-7) diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index 85df2b36..4bae2eef 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -50,6 +50,8 @@ menu "Blockstream Jade" config BOARD_TYPE_M5_STICKC_PLUS bool "M5StickC Plus" select HAS_AXP + config BOARD_TYPE_M5_STICKC_PLUS_2 + bool "M5StickC Plus 2" config BOARD_TYPE_TTGO_TDISPLAY bool "TTGO T-DISPLAY" config BOARD_TYPE_TTGO_TDISPLAYS3 @@ -99,7 +101,7 @@ menu "Blockstream Jade" config DISPLAY_INVERT bool "Invert colors" default y if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_JADE_V2 || \ - BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || \ + BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 || \ BOARD_TYPE_M5_FIRE || BOARD_TYPE_TTGO_TDISPLAYS3 || BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA help Invert the colors in the dipslay. Some devices may have inverted colors depending on revision @@ -113,7 +115,7 @@ menu "Blockstream Jade" config HAS_AXP bool "Use the AXP192 power controller" - depends on !BOARD_TYPE_M5_FIRE && !BOARD_TYPE_M5_BLACK_GRAY && !BOARD_TYPE_TTGO_TDISPLAY && !BOARD_TYPE_TTGO_TDISPLAYS3 && !BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA || BOARD_TYPE_M5_CORE2 + depends on !BOARD_TYPE_M5_FIRE && !BOARD_TYPE_M5_BLACK_GRAY && !BOARD_TYPE_M5_STICKC_PLUS_2 && !BOARD_TYPE_TTGO_TDISPLAY && !BOARD_TYPE_TTGO_TDISPLAYS3 && !BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA || BOARD_TYPE_M5_CORE2 default n help Jade v1 (and some other devices) come with the AXP192 to manage power to ESP, display, camera @@ -187,7 +189,7 @@ menu "Blockstream Jade" int "BTN A" default 37 if BOARD_TYPE_JADE_V1_1 default 38 if BOARD_TYPE_JADE_V2 - default 39 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_STICKC_PLUS + default 39 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 default 0 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_TTGO_TDISPLAYS3 default 12 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default -1 @@ -195,7 +197,7 @@ menu "Blockstream Jade" int "BTN B" default 39 if BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_JADE_V2 default 37 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_STICKC_PLUS - default 35 if BOARD_TYPE_TTGO_TDISPLAY + default 35 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS_2 default 14 if BOARD_TYPE_TTGO_TDISPLAYS3 default 16 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default -1 @@ -213,6 +215,7 @@ menu "Blockstream Jade" default 33 if BOARD_TYPE_JADE_V1_1 default 40 if BOARD_TYPE_JADE_V2 default 38 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY + default 37 if BOARD_TYPE_M5_STICKC_PLUS_2 default 0 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default -1 endmenu @@ -365,14 +368,14 @@ menu "Blockstream Jade" config DISPLAY_WIDTH int "Display width in pixels" range 0 640 - default 240 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS + default 240 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 default 320 if BOARD_TYPE_QEMU_LARGER || BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_TTGO_TDISPLAYS3 || BOARD_TYPE_M5_CORES3 || BOARD_TYPE_M5_CORE2 || BOARD_TYPE_JADE_V2 default 480 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default 240 config DISPLAY_HEIGHT int "Display height in pixels" range 0 640 - default 135 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS + default 135 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 default 240 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_CORE2 default 170 if BOARD_TYPE_JADE_V2 || BOARD_TYPE_QEMU_LARGER || BOARD_TYPE_TTGO_TDISPLAYS3 default 200 if BOARD_TYPE_M5_CORES3 @@ -384,12 +387,12 @@ menu "Blockstream Jade" config DCS_ADDRESS_MODE_MIRROR_X_SELECTED bool "Mirror X" default y if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_JADE_V2 || \ - BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_TTGO_TDISPLAYS3 + BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 || BOARD_TYPE_TTGO_TDISPLAYS3 default n if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_CORES3 || BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA config DCS_ADDRESS_MODE_SWAP_XY_SELECTED bool "Swap X and Y" default y if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_JADE_V2 - default y if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_TTGO_TDISPLAYS3 || BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA + default y if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 || BOARD_TYPE_TTGO_TDISPLAYS3 || BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default n if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_CORES3 config DISPLAY_OFFSET_X int "X offset" @@ -419,7 +422,7 @@ menu "Blockstream Jade" int "MOSI pin number" default 2 if BOARD_TYPE_JADE_V1_1 default 17 if BOARD_TYPE_JADE_V2 - default 15 if BOARD_TYPE_JADE || BOARD_TYPE_M5_STICKC_PLUS + default 15 if BOARD_TYPE_JADE || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 default 19 if BOARD_TYPE_TTGO_TDISPLAY default 23 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_CORE2 default 37 if BOARD_TYPE_M5_CORES3 @@ -430,7 +433,7 @@ menu "Blockstream Jade" default 14 if BOARD_TYPE_JADE default 12 if BOARD_TYPE_JADE_V1_1 default 47 if BOARD_TYPE_JADE_V2 - default 13 if BOARD_TYPE_M5_STICKC_PLUS + default 13 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 default 18 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_CORE2 || BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default 36 if BOARD_TYPE_M5_CORES3 default -1 @@ -440,7 +443,7 @@ menu "Blockstream Jade" default 0 if BOARD_TYPE_JADE_V1_1 default 21 if BOARD_TYPE_JADE_V2 default 3 if BOARD_TYPE_M5_CORES3 - default 5 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_CORE2 + default 5 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2 || BOARD_TYPE_M5_CORE2 default 14 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY default 39 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default -1 @@ -452,6 +455,7 @@ menu "Blockstream Jade" default 15 if BOARD_TYPE_M5_CORE2 default 16 if BOARD_TYPE_TTGO_TDISPLAY default 23 if BOARD_TYPE_M5_STICKC_PLUS + default 14 if BOARD_TYPE_M5_STICKC_PLUS_2 default 27 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY default 35 if BOARD_TYPE_M5_CORES3 default 9 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA @@ -461,6 +465,7 @@ menu "Blockstream Jade" default 21 if BOARD_TYPE_JADE default 46 if BOARD_TYPE_JADE_V2 default 18 if BOARD_TYPE_M5_STICKC_PLUS + default 12 if BOARD_TYPE_M5_STICKC_PLUS_2 default 23 if BOARD_TYPE_TTGO_TDISPLAY default 33 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY default 47 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA @@ -469,6 +474,7 @@ menu "Blockstream Jade" int "Backlight pin number" default 4 if BOARD_TYPE_TTGO_TDISPLAY default 32 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY + default 27 if BOARD_TYPE_M5_STICKC_PLUS_2 default 48 if BOARD_TYPE_TTGO_TDISPLAYS3PROCAMERA default -1 config PIN_NUM_DC diff --git a/main/power.c b/main/power.c index 2b9c994b..771270f1 100644 --- a/main/power.c +++ b/main/power.c @@ -13,6 +13,9 @@ #elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS) || defined(CONFIG_BOARD_TYPE_M5_CORE2) // These have AXP192 but configured differently from the Jade #include "power/m5stickcplus.inc" +#elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2) +// Board with IP5303 Power PMU +#include "power/m5stickcplus2.inc" #elif defined(CONFIG_BOARD_TYPE_M5_CORES3) // M5 Core S3 has AXP2101 #include "power/m5stackcores3.inc" diff --git a/main/power/m5stickcplus2.inc b/main/power/m5stickcplus2.inc new file mode 100644 index 00000000..d06404ae --- /dev/null +++ b/main/power/m5stickcplus2.inc @@ -0,0 +1,84 @@ +// M5StickCPlus implmentation - uses IP5303 Power PMU +// +#include +#include + +#define POWER_HOLD_GPIO 4 +#define BATTERY_ADC_CHANNEL ADC_CHANNEL_2 + +static adc_oneshot_unit_handle_t adc1_handle = NULL; + +esp_err_t power_init(void) +{ + // Set the power hold pin to keep the device from powering down straight away + gpio_reset_pin(POWER_HOLD_GPIO); + gpio_set_direction(POWER_HOLD_GPIO, GPIO_MODE_OUTPUT); + gpio_set_level(POWER_HOLD_GPIO, 1); + + // Initialise the ADC to measure battery level + //-------------ADC1 Init---------------// + adc_oneshot_unit_init_cfg_t init_config1 = { + .unit_id = ADC_UNIT_1, + }; + ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config1, &adc1_handle)); + JADE_ASSERT(adc1_handle); + + //-------------ADC1 Config---------------// + adc_oneshot_chan_cfg_t config = { + .bitwidth = ADC_BITWIDTH_DEFAULT, + .atten = ADC_ATTEN_DB_12, + }; + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, BATTERY_ADC_CHANNEL, &config)); + + return ESP_OK; +} + +esp_err_t power_shutdown(void) +{ + gpio_set_level(POWER_HOLD_GPIO, 0); + return ESP_OK; +} + +esp_err_t power_screen_on(void) { return ESP_OK; } +esp_err_t power_screen_off(void) { return ESP_OK; } + +esp_err_t power_backlight_on(const uint8_t brightness) { return ESP_OK; } +esp_err_t power_backlight_off(void) { return ESP_OK; } + +esp_err_t power_camera_on(void) { return ESP_OK; } +esp_err_t power_camera_off(void) { return ESP_OK; } + +uint16_t power_get_vbat(void) +{ + JADE_ASSERT(adc1_handle); + + int vbat = 0; + ESP_ERROR_CHECK(adc_oneshot_read(adc1_handle, BATTERY_ADC_CHANNEL, &vbat)); + return (uint16_t)(vbat * 1.7); +} + +uint8_t power_get_battery_status(void) +{ + const uint16_t vbat = power_get_vbat(); + if (vbat > 4000) { + return 5; + } else if (vbat > 3800) { + return 4; + } else if (vbat > 3600) { + return 3; + } else if (vbat > 3400) { + return 2; + } else if (vbat > 3200) { + return 1; + } + return 0; +} + +bool power_get_battery_charging(void) { return 0; } +uint16_t power_get_ibat_charge(void) { return 0; } +uint16_t power_get_ibat_discharge(void) { return 0; } +uint16_t power_get_vusb(void) { return 0; } +uint16_t power_get_iusb(void) { return 0; } +uint16_t power_get_temp(void) { return 0; } + +bool usb_connected(void) { return true; } diff --git a/main/process/dashboard.c b/main/process/dashboard.c index 20c08711..c05e0907 100644 --- a/main/process/dashboard.c +++ b/main/process/dashboard.c @@ -2132,6 +2132,12 @@ static void handle_display_battery_volts(void) #ifdef CONFIG_HAS_AXP const int ret = snprintf(power_status, sizeof(power_status), "%umv", power_get_vbat()); JADE_ASSERT(ret > 0 && ret < sizeof(power_status)); +#elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2) + const uint16_t vbat = power_get_vbat(); + if (vbat > 0) { + const int ret = snprintf(power_status, sizeof(power_status), "%umv", vbat); + JADE_ASSERT(ret > 0 && ret < sizeof(power_status)); + } #elif defined(CONFIG_HAS_IP5306) const float approx_voltage = power_get_vbat() / 1000.0; const int ret = snprintf(power_status, sizeof(power_status), "Approx %.1fv", approx_voltage); diff --git a/main/process/ota_defines.h b/main/process/ota_defines.h index 0a34d45e..284a24b1 100644 --- a/main/process/ota_defines.h +++ b/main/process/ota_defines.h @@ -29,6 +29,8 @@ #define JADE_OTA_BOARD_TYPE "M5BLACKGRAY" #elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS) #define JADE_OTA_BOARD_TYPE "M5STICKCPLUS" +#elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2) +#define JADE_OTA_BOARD_TYPE "M5STICKCPLUS2" #elif defined(CONFIG_BOARD_TYPE_M5_CORES3) #define JADE_OTA_BOARD_TYPE "M5CORES3" #elif defined(CONFIG_BOARD_TYPE_M5_CORE2)