Skip to content

Commit cb8456c

Browse files
committed
Add M5StickCPlus2 Compatability
*Add Configuration Profile *Add Code to Support Power Management for M5StickCPlus2
1 parent d78d197 commit cb8456c

4 files changed

Lines changed: 225 additions & 10 deletions

File tree

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
2+
CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
3+
CONFIG_ADC_CAL_LUT_ENABLE=n
4+
CONFIG_APP_COMPILE_TIME_DATE=n
5+
CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
6+
CONFIG_APP_REPRODUCIBLE_BUILD=y
7+
CONFIG_BF20A6_SUPPORT=n
8+
CONFIG_BF3005_SUPPORT=n
9+
CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2=y
10+
CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
11+
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
12+
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
13+
CONFIG_BOOTLOADER_WDT_ENABLE=n
14+
CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
15+
CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
16+
CONFIG_BT_ENABLED=y
17+
CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
18+
CONFIG_BT_NIMBLE_ENABLED=y
19+
CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
20+
CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
21+
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
22+
CONFIG_BT_NIMBLE_NVS_PERSIST=y
23+
CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
24+
CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
25+
CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
26+
CONFIG_BT_NIMBLE_SM_LEGACY=n
27+
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
28+
CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
29+
CONFIG_BUTTON_SERIAL_TIME_MS=100
30+
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
31+
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
32+
CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
33+
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
34+
CONFIG_DEBUG_MODE=y
35+
CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
36+
CONFIG_EFUSE_VIRTUAL=y
37+
CONFIG_ESP32_REV_MIN_3=y
38+
CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
39+
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
40+
CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
41+
CONFIG_ESP_CONSOLE_NONE=y
42+
CONFIG_ESP_DEBUG_OCDAWARE=n
43+
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
44+
CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
45+
CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
46+
CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
47+
CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
48+
CONFIG_ESP_TASK_WDT_INIT=n
49+
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
50+
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
51+
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
52+
CONFIG_ESP_WIFI_IRAM_OPT=n
53+
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
54+
CONFIG_ESP_WIFI_NVS_ENABLED=n
55+
CONFIG_ESP_WIFI_RX_IRAM_OPT=n
56+
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
57+
CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y
58+
CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=6
59+
CONFIG_ETH_USE_ESP32_EMAC=n
60+
CONFIG_ETH_USE_SPI_ETHERNET=n
61+
CONFIG_FATFS_PER_FILE_CACHE=n
62+
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
63+
CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
64+
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
65+
CONFIG_GC0308_SUPPORT=n
66+
CONFIG_GC032A_SUPPORT=n
67+
CONFIG_GC2145_SUPPORT=n
68+
CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
69+
CONFIG_LOG_COLORS=n
70+
CONFIG_LWIP_DHCPS=n
71+
CONFIG_LWIP_IPV6=n
72+
CONFIG_LWIP_NETIF_LOOPBACK=n
73+
CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
74+
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
75+
CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
76+
CONFIG_MBEDTLS_HARDWARE_MPI=n
77+
CONFIG_MBEDTLS_HAVE_TIME=n
78+
CONFIG_MBEDTLS_PEM_PARSE_C=n
79+
CONFIG_MBEDTLS_PEM_WRITE_C=n
80+
CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
81+
CONFIG_MBEDTLS_SSL_ALPN=n
82+
CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
83+
CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
84+
CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
85+
CONFIG_MQTT_PROTOCOL_311=n
86+
CONFIG_MQTT_TRANSPORT_SSL=n
87+
CONFIG_NEWLIB_NANO_FORMAT=y
88+
CONFIG_NT99141_SUPPORT=n
89+
CONFIG_OV2640_SUPPORT=n
90+
CONFIG_OV3660_SUPPORT=n
91+
CONFIG_OV5640_SUPPORT=n
92+
CONFIG_OV7670_SUPPORT=n
93+
CONFIG_OV7725_SUPPORT=n
94+
CONFIG_PARTITION_TABLE_CUSTOM=y
95+
CONFIG_PARTITION_TABLE_OFFSET=0x9000
96+
CONFIG_SC030IOT_SUPPORT=n
97+
CONFIG_SCCB_CLK_FREQ=200000
98+
CONFIG_SPIFFS_CACHE=n
99+
CONFIG_SPIFFS_GC_MAX_RUNS=1
100+
CONFIG_SPIFFS_MAX_PARTITIONS=1
101+
CONFIG_SPIFFS_PAGE_CHECK=n
102+
CONFIG_SPIFFS_USE_MAGIC=n
103+
CONFIG_SPIFFS_USE_MTIME=n
104+
CONFIG_SPIRAM=y
105+
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
106+
CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
107+
CONFIG_SPIRAM_MEMTEST=n
108+
CONFIG_UART_ISR_IN_IRAM=y
109+
CONFIG_UNITY_ENABLE_DOUBLE=n
110+
CONFIG_UNITY_ENABLE_FLOAT=n
111+
CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
112+
CONFIG_VFS_SUPPORT_IO=n
113+
CONFIG_WS_TRANSPORT=n

main/Kconfig.projbuild

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ menu "Blockstream Jade"
4040
config BOARD_TYPE_M5_STICKC_PLUS
4141
bool "M5StickC Plus"
4242
select HAS_AXP
43+
config BOARD_TYPE_M5_STICKC_PLUS_2
44+
bool "M5StickC Plus 2"
4345
config BOARD_TYPE_TTGO_TDISPLAY
4446
bool "TTGO T-DISPLAY"
4547
config BOARD_TYPE_DEV
@@ -146,15 +148,15 @@ menu "Blockstream Jade"
146148
int "BTN A"
147149
range -1 40
148150
default 37 if BOARD_TYPE_JADE_V1_1
149-
default 39 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_STICKC_PLUS
151+
default 39 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
150152
default 0 if BOARD_TYPE_TTGO_TDISPLAY
151153
default 25 if BOARD_TYPE_DEV
152154
config INPUT_BTN_B
153155
int "BTN B"
154156
range -1 40
155157
default 39 if BOARD_TYPE_JADE_V1_1
156158
default 37 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_M5_STICKC_PLUS
157-
default 35 if BOARD_TYPE_TTGO_TDISPLAY
159+
default 35 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS_2
158160
default 32 if BOARD_TYPE_DEV
159161
config INPUT_WHEEL_SW
160162
int "Wheel SW"
@@ -172,6 +174,7 @@ menu "Blockstream Jade"
172174
default 21 if BOARD_TYPE_JADE
173175
default 33 if BOARD_TYPE_JADE_V1_1
174176
default 38 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
177+
default 37 if BOARD_TYPE_M5_STICKC_PLUS_2
175178
default 35 if BOARD_TYPE_DEV
176179
endmenu
177180

@@ -308,7 +311,7 @@ menu "Blockstream Jade"
308311
int
309312
default 0 if DISP_DRIVER_ILI9341 || BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
310313
default 1 if DISP_DRIVER_ILI9488
311-
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
314+
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
312315
default 3 if DISP_DRIVER_ST7735
313316
default 4 if DISP_DRIVER_ST7735R
314317
default 5 if DISP_DRIVER_ST7735B
@@ -338,19 +341,19 @@ menu "Blockstream Jade"
338341
config DISP_INVERT_ROTATION1
339342
int "Invert rotation 1"
340343
range 0 1
341-
default 1 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
344+
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
342345
default 0 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
343346
default 1 if BOARD_TYPE_DEV
344347
config DISP_INVERT_ROTATION2
345348
int "Invert rotation 2"
346349
range 0 1
347-
default 0 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
350+
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
348351
default 1 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
349352
default 0 if BOARD_TYPE_DEV
350353
config DISP_ORIENTATION_DEFAULT
351354
int "Set orientation default"
352355
range 0 3
353-
default 3 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1 || BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || ETH_USE_OPENETH
356+
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
354357
default 1 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
355358
default 0 if BOARD_TYPE_DEV
356359
config DISP_RGB_BGR
@@ -387,7 +390,7 @@ menu "Blockstream Jade"
387390
range -1 40
388391
default -1 if BOARD_TYPE_JADE || BOARD_TYPE_JADE_V1_1
389392
default 19 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
390-
default -1 if BOARD_TYPE_M5_STICKC_PLUS
393+
default -1 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
391394
default 25 if BOARD_TYPE_DEV
392395
default 2 if BOARD_TYPE_TTGO_TDISPLAY
393396
config DISP_PIN_NUM_MOSI
@@ -396,7 +399,7 @@ menu "Blockstream Jade"
396399
default 15 if BOARD_TYPE_JADE
397400
default 2 if BOARD_TYPE_JADE_V1_1
398401
default 23 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
399-
default 15 if BOARD_TYPE_M5_STICKC_PLUS
402+
default 15 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
400403
default 23 if BOARD_TYPE_DEV
401404
default 19 if BOARD_TYPE_TTGO_TDISPLAY
402405
config DISP_PIN_NUM_CLK
@@ -405,7 +408,7 @@ menu "Blockstream Jade"
405408
default 14 if BOARD_TYPE_JADE
406409
default 12 if BOARD_TYPE_JADE_V1_1
407410
default 18 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY || BOARD_TYPE_TTGO_TDISPLAY
408-
default 13 if BOARD_TYPE_M5_STICKC_PLUS
411+
default 13 if BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
409412
default 19 if BOARD_TYPE_DEV
410413
config DISP_PIN_NUM_CS
411414
int "PIN_NUM_CS"
@@ -414,14 +417,15 @@ menu "Blockstream Jade"
414417
default 0 if BOARD_TYPE_JADE_V1_1
415418
default 14 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
416419
default 22 if BOARD_TYPE_DEV
417-
default 5 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS
420+
default 5 if BOARD_TYPE_TTGO_TDISPLAY || BOARD_TYPE_M5_STICKC_PLUS || BOARD_TYPE_M5_STICKC_PLUS_2
418421
config DISP_PIN_NUM_DC
419422
int "PIN_NUM_DC"
420423
range -1 40
421424
default 12 if BOARD_TYPE_JADE
422425
default 13 if BOARD_TYPE_JADE_V1_1
423426
default 27 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
424427
default 23 if BOARD_TYPE_M5_STICKC_PLUS
428+
default 14 if BOARD_TYPE_M5_STICKC_PLUS_2
425429
default 21 if BOARD_TYPE_DEV
426430
default 16 if BOARD_TYPE_TTGO_TDISPLAY
427431
config DISP_PIN_NUM_TCS
@@ -435,13 +439,15 @@ menu "Blockstream Jade"
435439
default -1 if BOARD_TYPE_JADE_V1_1
436440
default 33 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
437441
default 18 if BOARD_TYPE_M5_STICKC_PLUS
442+
default 12 if BOARD_TYPE_M5_STICKC_PLUS_2
438443
default 18 if BOARD_TYPE_DEV
439444
default 23 if BOARD_TYPE_TTGO_TDISPLAY
440445
config DISP_PIN_NUM_BCKL
441446
int "PIN_NUM_BCKL"
442447
range -1 40
443448
default 32 if BOARD_TYPE_M5_FIRE || BOARD_TYPE_M5_BLACK_GRAY
444449
default 4 if BOARD_TYPE_TTGO_TDISPLAY
450+
default 27 if BOARD_TYPE_M5_STICKC_PLUS_2
445451
default -1
446452
endmenu
447453
endmenu

main/power.c

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,95 @@ bool usb_connected(void)
748748
return ((chargedata & 0x08) || (chargedata2 & 0x08));
749749
}
750750

751+
752+
#elif defined(CONFIG_BOARD_TYPE_M5_STICKC_PLUS_2) // Board with IP5303 Power PMU
753+
#include <esp_sleep.h>
754+
#include <esp_adc/adc_oneshot.h>
755+
#include <driver/gpio.h>
756+
757+
#define BATTERY_ADC_CHANNEL ADC_CHANNEL_2
758+
adc_oneshot_unit_handle_t adc1_handle;
759+
760+
esp_err_t power_init(void)
761+
{
762+
// Set the power hold pin to keep the device from powering down straight away
763+
#define POWER_HOLD_GPIO 4
764+
gpio_reset_pin( POWER_HOLD_GPIO );
765+
gpio_set_direction( POWER_HOLD_GPIO, GPIO_MODE_OUTPUT );
766+
gpio_set_level( POWER_HOLD_GPIO, 1 );
767+
768+
//Initialise the ADC to measure battery level
769+
//-------------ADC1 Init---------------//
770+
adc_oneshot_unit_init_cfg_t init_config1 = {
771+
.unit_id = ADC_UNIT_1,
772+
};
773+
ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config1, &adc1_handle));
774+
775+
//-------------ADC1 Config---------------//
776+
adc_oneshot_chan_cfg_t config = {
777+
.bitwidth = ADC_BITWIDTH_DEFAULT,
778+
.atten = ADC_ATTEN_DB_12,
779+
};
780+
ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, BATTERY_ADC_CHANNEL, &config));
781+
782+
return ESP_OK;
783+
}
784+
785+
esp_err_t power_shutdown(void)
786+
{
787+
gpio_set_level( POWER_HOLD_GPIO, 0 );
788+
return ESP_OK;
789+
}
790+
791+
esp_err_t power_screen_on(void) { return ESP_OK; }
792+
esp_err_t power_screen_off(void) { return ESP_OK; }
793+
794+
esp_err_t power_backlight_on(const uint8_t brightness)
795+
{
796+
return ESP_OK;
797+
}
798+
esp_err_t power_backlight_off(void)
799+
{
800+
return ESP_OK;
801+
}
802+
803+
esp_err_t power_camera_on(void) { return ESP_OK; }
804+
esp_err_t power_camera_off(void) { return ESP_OK; }
805+
806+
uint16_t power_get_vbat(void)
807+
{
808+
int vbat=0;
809+
ESP_ERROR_CHECK(adc_oneshot_read(adc1_handle, BATTERY_ADC_CHANNEL, &vbat));
810+
return (uint16_t)(vbat * 1.7);
811+
}
812+
813+
uint8_t power_get_battery_status(void)
814+
{
815+
const uint16_t vbat = power_get_vbat();
816+
if (vbat > 4000) {
817+
return 5;
818+
} else if (vbat > 3800) {
819+
return 4;
820+
} else if (vbat > 3600) {
821+
return 3;
822+
} else if (vbat > 3400) {
823+
return 2;
824+
} else if (vbat > 3200) {
825+
return 1;
826+
}
827+
return 0;
828+
}
829+
830+
bool power_get_battery_charging(void){ return 0;}
831+
uint16_t power_get_ibat_charge(void) { return 0; }
832+
uint16_t power_get_ibat_discharge(void) { return 0; }
833+
uint16_t power_get_vusb(void) { return 0; }
834+
uint16_t power_get_iusb(void) { return 0; }
835+
uint16_t power_get_temp(void) { return 0; }
836+
837+
bool usb_connected(void) { return true; }
838+
839+
751840
#else // ie. not CONFIG_BOARD_TYPE_JADE or CONFIG_BOARD_TYPE_JADE_V1_1, M5Stack or M5Stick
752841
// Stubs for other hw boards (ie. no power management)
753842
#include <esp_sleep.h>

main/process/dashboard.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1952,6 +1952,13 @@ static void handle_display_battery_volts(void)
19521952
const float approx_voltage = power_get_vbat() / 1000.0;
19531953
const int ret = snprintf(power_status, sizeof(power_status), "Approx %.1fv", approx_voltage);
19541954
JADE_ASSERT(ret > 0 && ret < sizeof(power_status));
1955+
#else
1956+
uint16_t vbat = 0;
1957+
vbat = power_get_vbat();
1958+
if (vbat > 0) {
1959+
const int ret = snprintf(power_status, sizeof(power_status), "%umv", vbat);
1960+
}
1961+
19551962
#endif
19561963

19571964
handle_info_detail_screen("Battery Volts", power_status);

0 commit comments

Comments
 (0)