Add a complete board package under
application/basic_demo/boards/m5stack_sticks3/ for the
ESP32-S3-PICO-1-N8R8 based M5Stack StickS3.
Hardware:
- 8 MB QIO flash @80MHz, 8 MB Octal PSRAM @80MHz
- I2C0: SDA=47, SCL=48 (M5PM1 PMIC, ES8311 codec, BMI270 IMU)
- I2S0 full-duplex: MCK=18, BCK=17, WS=15, DOUT=14, DIN=16
- SPI3 LCD: MOSI=39, SCLK=40, CS=41, DC=45, RST=21
- 1.14" ST7789 135x240 with (52,40) panel offset
- Backlight on GPIO38 (active-high), LEDC PWM
Highlights:
- M5PM1 PMIC modelled as a custom device; init sequence ported
from M5GFX (disable I2C idle sleep, then bring up PYG2=LCD_PWR
and PYG3=SPK_PA in push-pull output mode).
- ES8311 declared as two audio_codec devices (DAC + ADC) sharing
one I2C control line and one I2S port via YAML anchors,
following the esp32_s3_korvo2l pattern.
- ST7789 factory uses the IDF built-in esp_lcd_new_panel_st7789()
and applies esp_lcd_panel_set_gap(52, 40) for the visible window.
- ledc_backlight defaults to full duty (1023) so the panel is
visible at boot — display.set_backlight() only toggles the
LCD disp_on_off command and does not change LEDC duty.
Signed-off-by: imliubo <imliubo@makingfun.xyz>
Add a complete board package for the M5Stack CoreS3 under
application/basic_demo/boards/m5stack_cores3/, so basic_demo can be
built and flashed on CoreS3 with:
idf.py gen-bmgr-config -c ./boards -b m5stack_cores3
idf.py build flash monitor
Highlights:
* board_info.yaml / board_peripherals.yaml / board_devices.yaml
describe the CoreS3 hardware for esp_board_manager:
- I2C0 (SDA=12, SCL=11) for AXP2101, AW9523B, AW88298, ES7210, FT5x06
- I2S0 48 kHz stereo (MCLK=0, BCLK=34, WS=33, DOUT=13, DIN=14)
- SPI2 (MOSI=37, MISO=35, SCLK=36) for the ILI9341 LCD
- GPIO46 for AW88298 PA enable
- ILI9341 SPI panel (320x240, BGR, big-endian, color inverted)
- FT5x06 I2C touch
- AW9523B GPIO expander with the output mask required by CoreS3
(incl. pin 1 BUS_EN and pin 15 BOOST_EN for the Grove 5V rail)
* power_manager.[ch]: custom AXP2101 power manager that brings up
SD / Speaker / LCD / Touch / Grove 5V in order, configures the
AXP rails (ALDO1/2/3/4 and DLDO1 for the LCD backlight), and
exposes cores3_power_manager_enable() for runtime control.
* setup_device.c: factory entries for the AW9523B expander, the
ILI9341 LCD panel and the FT5x06 touch panel. The expander setup
programs GCR=0x10 (P0 push-pull) and LEDMODE0/1=0xFF so every
P0/P1 pin leaves the power-on LED constant-current mode and acts
as a real GPIO; without this, set_level(high) only releases the
current sink and cannot drive enables such as BUS_EN/BOOST_EN, so
the Grove port stays at 0 V.
* components/esp_io_expander_aw9523b/: minimal AW9523B driver
(16 IOs, push-pull / LED mode register definitions, raw register
write helper) used by the board package.
* sdkconfig.defaults.board:
- 16 MB QIO flash @ 80 MHz
- 8 MB Quad PSRAM @ 80 MHz with XIP / instr / rodata in PSRAM
disabled (octal-only on ESP32-S3)
- CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM=n so claw tasks
tagged CLAW_TASK_STACK_PREFER_PSRAM fall back to internal
RAM, avoiding the cache-disabled stack-sanity assert that
Quad PSRAM triggers during SPI flash transactions.
Signed-off-by: imliubo <imliubo@makingfun.xyz>