Skip to content

Commit

Permalink
Add M5StickCPlus2 Compatability
Browse files Browse the repository at this point in the history
*Add Configuration Profile
*Add Code to Support Power Management for M5StickCPlus2
  • Loading branch information
3rdIteration committed Jun 17, 2024
1 parent d78d197 commit cb8456c
Show file tree
Hide file tree
Showing 4 changed files with 225 additions and 10 deletions.
113 changes: 113 additions & 0 deletions configs/sdkconfig_display_m5stickcplus2.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
CONFIG_ADC_CAL_LUT_ENABLE=n
CONFIG_APP_COMPILE_TIME_DATE=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_IRAM_OPT=n
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
CONFIG_ESP_WIFI_NVS_ENABLED=n
CONFIG_ESP_WIFI_RX_IRAM_OPT=n
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y
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
26 changes: 16 additions & 10 deletions main/Kconfig.projbuild
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,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_DEV
Expand Down Expand Up @@ -146,15 +148,15 @@ menu "Blockstream Jade"
int "BTN A"
range -1 40
default 37 if BOARD_TYPE_JADE_V1_1
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
default 25 if BOARD_TYPE_DEV
config INPUT_BTN_B
int "BTN B"
range -1 40
default 39 if BOARD_TYPE_JADE_V1_1
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 32 if BOARD_TYPE_DEV
config INPUT_WHEEL_SW
int "Wheel SW"
Expand All @@ -172,6 +174,7 @@ menu "Blockstream Jade"
default 21 if BOARD_TYPE_JADE
default 33 if BOARD_TYPE_JADE_V1_1
default 38 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 37 if BOARD_TYPE_M5_STICKC_PLUS_2
default 35 if BOARD_TYPE_DEV
endmenu

Expand Down Expand Up @@ -308,7 +311,7 @@ menu "Blockstream Jade"
int
default 0 if DISP_DRIVER_ILI9341 || BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 1 if DISP_DRIVER_ILI9488
default 2 if DISP_DRIVER_ST7789V || BOARD_TYPE_DEV || BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
default 2 if DISP_DRIVER_ST7789V || BOARD_TYPE_DEV || BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
default 3 if DISP_DRIVER_ST7735
default 4 if DISP_DRIVER_ST7735R
default 5 if DISP_DRIVER_ST7735B
Expand Down Expand Up @@ -338,19 +341,19 @@ menu "Blockstream Jade"
config DISP_INVERT_ROTATION1
int "Invert rotation 1"
range 0 1
default 1 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
default 1 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 0 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 1 if BOARD_TYPE_DEV
config DISP_INVERT_ROTATION2
int "Invert rotation 2"
range 0 1
default 0 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
default 0 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 1 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 0 if BOARD_TYPE_DEV
config DISP_ORIENTATION_DEFAULT
int "Set orientation default"
range 0 3
default 3 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || ETH_USE_OPENETH
default 3 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || ETH_USE_OPENETH || BOARD_TYPE_M5_STICKC_PLUS_2
default 1 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 0 if BOARD_TYPE_DEV
config DISP_RGB_BGR
Expand Down Expand Up @@ -387,7 +390,7 @@ menu "Blockstream Jade"
range -1 40
default -1 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1
default 19 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default -1 if BOARD_TYPE_M5_STICKC_PLUS
default -1 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
default 25 if BOARD_TYPE_DEV
default 2 if BOARD_TYPE_TTGO_TDISPLAY
config DISP_PIN_NUM_MOSI
Expand All @@ -396,7 +399,7 @@ menu "Blockstream Jade"
default 15 if BOARD_TYPE_JADE
default 2 if BOARD_TYPE_JADE_V1_1
default 23 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 15 if BOARD_TYPE_M5_STICKC_PLUS
default 15 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
default 23 if BOARD_TYPE_DEV
default 19 if BOARD_TYPE_TTGO_TDISPLAY
config DISP_PIN_NUM_CLK
Expand All @@ -405,7 +408,7 @@ menu "Blockstream Jade"
default 14 if BOARD_TYPE_JADE
default 12 if BOARD_TYPE_JADE_V1_1
default 18 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_TTGO_TDISPLAY
default 13 if BOARD_TYPE_M5_STICKC_PLUS
default 13 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
default 19 if BOARD_TYPE_DEV
config DISP_PIN_NUM_CS
int "PIN_NUM_CS"
Expand All @@ -414,14 +417,15 @@ menu "Blockstream Jade"
default 0 if BOARD_TYPE_JADE_V1_1
default 14 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 22 if BOARD_TYPE_DEV
default 5 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
default 5 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
config DISP_PIN_NUM_DC
int "PIN_NUM_DC"
range -1 40
default 12 if BOARD_TYPE_JADE
default 13 if BOARD_TYPE_JADE_V1_1
default 27 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 23 if BOARD_TYPE_M5_STICKC_PLUS
default 14 if BOARD_TYPE_M5_STICKC_PLUS_2
default 21 if BOARD_TYPE_DEV
default 16 if BOARD_TYPE_TTGO_TDISPLAY
config DISP_PIN_NUM_TCS
Expand All @@ -435,13 +439,15 @@ menu "Blockstream Jade"
default -1 if BOARD_TYPE_JADE_V1_1
default 33 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 18 if BOARD_TYPE_M5_STICKC_PLUS
default 12 if BOARD_TYPE_M5_STICKC_PLUS_2
default 18 if BOARD_TYPE_DEV
default 23 if BOARD_TYPE_TTGO_TDISPLAY
config DISP_PIN_NUM_BCKL
int "PIN_NUM_BCKL"
range -1 40
default 32 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
default 4 if BOARD_TYPE_TTGO_TDISPLAY
default 27 if BOARD_TYPE_M5_STICKC_PLUS_2
default -1
endmenu
endmenu
Expand Down
89 changes: 89 additions & 0 deletions main/power.c
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,95 @@ bool usb_connected(void)
return ((chargedata & 0x08) || (chargedata2 & 0x08));
}


#elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2) // Board with IP5303 Power PMU
#include <esp_sleep.h>
#include <esp_adc/adc_oneshot.h>
#include <driver/gpio.h>

#define BATTERY_ADC_CHANNEL ADC_CHANNEL_2
adc_oneshot_unit_handle_t adc1_handle;

esp_err_t power_init(void)
{
// Set the power hold pin to keep the device from powering down straight away
#define POWER_HOLD_GPIO 4
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));

//-------------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)
{
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; }


#else // ie. not CONFIG_BOARD_TYPE_JADE or CONFIG_BOARD_TYPE_JADE_V1_1, M5Stack or M5Stick
// Stubs for other hw boards (ie. no power management)
#include <esp_sleep.h>
Expand Down
7 changes: 7 additions & 0 deletions main/process/dashboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -1952,6 +1952,13 @@ static void handle_display_battery_volts(void)
const float approx_voltage = power_get_vbat() / 1000.0;
const int ret = snprintf(power_status, sizeof(power_status), "Approx %.1fv", approx_voltage);
JADE_ASSERT(ret > 0 && ret < sizeof(power_status));
#else
uint16_t vbat = 0;
vbat = power_get_vbat();
if (vbat > 0) {
const int ret = snprintf(power_status, sizeof(power_status), "%umv", vbat);
}

#endif

handle_info_detail_screen("Battery Volts", power_status);
Expand Down

0 comments on commit cb8456c

Please sign in to comment.