Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ jobs:
tests/st7789_lifecycle tests/co5300_lifecycle tests/bread_compact_wifi_lcd \
tests/cst816s_input tests/tca9554 tests/aw9523b tests/compact_panel \
tests/cores3_pixel_ui tests/labplus_stm8_reset tests/atk_tca9555_power \
tests/custom_panel_profiles -type f \
tests/custom_panel_profiles tests/board_power tests/cst226_input \
tests/i80_st7789_lifecycle -type f \
\( -name '*.c' -o -name '*.h' -o -name '*.cc' -o -name '*.cpp' \) \
-exec clang-format --dry-run --Werror {} +
- name: Whitespace check
Expand All @@ -44,7 +45,8 @@ jobs:
tests/st7789_lifecycle tests/co5300_lifecycle tests/bread_compact_wifi_lcd \
tests/cst816s_input tests/tca9554 tests/aw9523b tests/compact_panel \
tests/cores3_pixel_ui tests/labplus_stm8_reset tests/atk_tca9555_power \
tests/custom_panel_profiles -type f \
tests/custom_panel_profiles tests/board_power tests/cst226_input \
tests/i80_st7789_lifecycle -type f \
\( -name '*.c' -o -name '*.h' -o -name '*.cc' -o -name '*.cpp' \) \
-print0 | while IFS= read -r -d '' file; do
head -n 5 "$file" | grep -q 'SPDX-License-Identifier:' || {
Expand All @@ -60,6 +62,8 @@ jobs:
run: sh tests/co5300_lifecycle/run.sh
- name: CST816S and Boot input host lifecycle tests
run: sh tests/cst816s_input/run.sh
- name: CST226 direct-I2C input host lifecycle tests
run: sh tests/cst226_input/run.sh
- name: TCA9554 masked update host tests
run: sh tests/tca9554/run.sh
- name: AW9523B masked update host tests
Expand All @@ -68,6 +72,10 @@ jobs:
run: sh tests/labplus_stm8_reset/run.sh
- name: ATK TCA9555 display-power host tests
run: sh tests/atk_tca9555_power/run.sh
- name: Board power and expander sequencing host tests
run: sh tests/board_power/run.sh
- name: ST7789 i80 panel lifecycle host tests
run: sh tests/i80_st7789_lifecycle/run.sh
- name: GC9D01N and GC9309NA panel profiles host tests
run: sh tests/custom_panel_profiles/run.sh
- name: Compact GC9107/ST7735 panel lifecycle tests
Expand Down Expand Up @@ -351,6 +359,9 @@ jobs:
- lilygo-t-cameraplus-s3-v1.2
- lilygo-t-circle-s3
- jiuchuan-s3
- lilygo-t-display-s3-pro-mvsrlora
- atk-dnesp32s3-box
- tudouzi
language: [zh-CN, en-US]
steps:
- uses: actions/checkout@v4
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ Versioning and Conventional Commits.

### Added

- Three additional ESP32-S3 profiles: LilyGO T-Display S3 Pro with a 222×480 ST7796 panel,
CST226SE touch and PDM capture; ATK DNESP32S3 Box with an 8-bit i80 ST7789 panel and ES8311
audio; and Tudouzi as a headless Wi-Fi subset with ES8311/ES7210 audio. Added host coverage for
the SY6970, XL9555/TCA9555 and AXP2101 startup sequences, CST226 direct-I2C input, i80 panel
lifecycle and ST7796 command profile. All three passed local ESP-IDF v5.5.2 Chinese and English
reconfigure/build/size/merge-bin validation; real-device validation remains pending.
- Five additional ESP32-S3 hardware families across six compile-time profiles: ATK DNESP32S3 with
TCA9555 display power, Yunliao S3 as a Wi-Fi subset, LilyGO T-CameraPlus S3 V1.0/V1.1 and V1.2
with separate standard-I2S/PDM audio paths, LilyGO T-Circle S3 with a 160×160 GC9D01N round
Expand Down
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ voice-chat runtime on
ESP32-S3 boards. The project owns board initialization, Wi-Fi provisioning, persistent storage,
HTTPS transport, audio, input, display, and the firmware lifecycle around the SDK.

The development baseline is **ESP-IDF v5.5.2**. Sixty-nine compile-time board profiles are
supported (62 display and 7 headless); the board, Flash, PSRAM, partition table, and hardware
The development baseline is **ESP-IDF v5.5.2**. Seventy-two compile-time board profiles are
supported (64 display and 8 headless); the board, Flash, PSRAM, partition table, and hardware
drivers are selected with `MYBOT_BOARD`. See the
[board documentation index](components/mybot_platform/boards/README.md) for hardware details,
controls, build commands, and per-board limitations.
Expand Down Expand Up @@ -61,13 +61,14 @@ Display profiles:
`genjutech-s3-1.54tft`, `zhengchen-cam`, `labplus-ledong-v2`,
`labplus-mpython-v3`, `atk-dnesp32s3`, `yunliao-s3`,
`lilygo-t-cameraplus-s3`, `lilygo-t-cameraplus-s3-v1.2`, `lilygo-t-circle-s3`,
`jiuchuan-s3`, `m5stack-core-s3`, `m5stack-stick-s3`, and `sensecap-watcher`.
`jiuchuan-s3`, `lilygo-t-display-s3-pro-mvsrlora`, `atk-dnesp32s3-box`,
`m5stack-core-s3`, `m5stack-stick-s3`, and `sensecap-watcher`.

Headless profiles:

`atom-echos3r`, `xingzhi-cube-0.96oled-wifi`, `doit-s3-aibox`,
`bread-compact-wifi`, `hu-087`, `kevin-box-2`, and
`respeaker-flex-xvf3800-circular4-xiao`.
`bread-compact-wifi`, `hu-087`, `kevin-box-2`,
`respeaker-flex-xvf3800-circular4-xiao`, and `tudouzi`.

All profiles currently use Wi-Fi. The ML307 profile reserves modem UART pins but does not
implement modem or 4G networking. Only `m5stack-core-s3` currently exposes camera video.
Expand Down
9 changes: 5 additions & 4 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
工程负责板级初始化、Wi-Fi 配网、持久化存储、HTTPS、音频、输入、显示,以及 SDK 外围的
固件生命周期。

当前开发基线为 **ESP-IDF v5.5.2**,支持 69 个编译期 Board profile(62 个带屏、7 个无屏)。
当前开发基线为 **ESP-IDF v5.5.2**,支持 72 个编译期 Board profile(64 个带屏、8 个无屏)。
通过 `MYBOT_BOARD` 选择板型、Flash、PSRAM、分区表和硬件驱动。具体硬件配置、输入操作、
构建命令和限制见[板卡说明索引](components/mybot_platform/boards/README.md)。

Expand Down Expand Up @@ -56,13 +56,14 @@
`genjutech-s3-1.54tft`、`zhengchen-cam`、`labplus-ledong-v2`、
`labplus-mpython-v3`、`atk-dnesp32s3`、`yunliao-s3`、
`lilygo-t-cameraplus-s3`、`lilygo-t-cameraplus-s3-v1.2`、`lilygo-t-circle-s3`、
`jiuchuan-s3`、`m5stack-core-s3`、`m5stack-stick-s3` 和 `sensecap-watcher`。
`jiuchuan-s3`、`lilygo-t-display-s3-pro-mvsrlora`、`atk-dnesp32s3-box`、
`m5stack-core-s3`、`m5stack-stick-s3` 和 `sensecap-watcher`。

无屏 profile:

`atom-echos3r`、`xingzhi-cube-0.96oled-wifi`、`doit-s3-aibox`、
`bread-compact-wifi`、`hu-087`、`kevin-box-2` 和
`respeaker-flex-xvf3800-circular4-xiao`。
`bread-compact-wifi`、`hu-087`、`kevin-box-2`、
`respeaker-flex-xvf3800-circular4-xiao` 和 `tudouzi`。

所有 profile 当前均使用 Wi-Fi。ML307 profile 仅预留 Modem UART 引脚,未实现 Modem 或
4G 联网。目前仅 `m5stack-core-s3` 提供摄像头视频能力。
Expand Down
2 changes: 1 addition & 1 deletion VENDORED_SOURCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ are not included by these references.
| CoreS3 `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_glasses_view.cc`, expression geometry/masks/generators, `pixel_expressions.c`, and private expression headers/policy | BK7259 pixel-glasses renderer family, retaining MIT/Apache-2.0 file notices | [ESP32 implementation baseline][esp32-platform-baseline]; adapted to the ESP32 display API and CoreS3 320x240 geometry |
| CoreS3 terminal subsets in `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_fonts.c` and `TERMINAL_FONT_LICENSE.txt` | DejaVu Sans Mono Bold, renamed MyBot Terminal | Source TTF SHA-256 `3a3c502eeff669a231549e80df9f7c49de109bafe303170409e905d0b31a38fe`; 9 px terminal and 10 px signature subsets, with retained Bitstream Vera terms |
| `components/mybot_platform/src/drivers/display/adapters/lvgl/shared_lvgl_adapter.cc`, `components/mybot_platform/src/internal/display/display_panel.h` | Project-maintained shared adapter for ST7789, CO5300, SPD2010, and ST77916 panels | Uses the board panel drivers; no new upstream source |
| `components/mybot_platform/src/drivers/display/panels/generic/rgb565_spi_panel.c` GC9D01N and GC9309NA initialization profiles | Board-vendor hardware initialization tables | Only controller register values are adapted; the ESP LCD command driver, platform lifecycle and cleanup remain project-maintained or use the pinned Apache-2.0 `esp_lcd_gc9a01` component |
| `components/mybot_platform/src/drivers/display/panels/generic/rgb565_spi_panel.c` GC9D01N, GC9309NA and ST7796 initialization profiles; `generic/i80_st7789_panel.c` | Board hardware initialization values and ESP-IDF i80 API | Only controller register values are adapted; the ESP LCD command driver, platform lifecycle and cleanup remain project-maintained or use the pinned Apache-2.0 `esp_lcd_gc9a01` component |
| `components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao`, `components/mybot_platform/src/drivers/audio/xvf3800_audio.c`, `partitions/v2/8m.csv` | `github.com/qiuyanli1990/respeaker-flex-circle-Agora-mybot` | commit `b06024382eb104c998aead4841e1df647193065b` |
| `components/mybot_platform/boards/bread-compact-wifi-lcd/bread_input.c` | Existing local `components/mybot_platform/boards/atom-echos3r/atom_echos3r_input.c` MIT template | Project-local adaptation for Boot GPIO0; retains MIT copyright and permission notice |
| `components/mybot_platform/boards/esp-vocat/board_config.h` (hardware mapping verification only) | `github.com/espressif/esp-brookesia` | commit `b22c488f50bafe53342c8e171081bd736396ef58` |
Expand Down
5 changes: 4 additions & 1 deletion components/mybot_platform/boards/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ These documents describe the board profiles implemented by `agora-esp32-devkit`.
drivers and build constraints are defined by the checked-in `board.cmake`, `board_config.h` and
`sdkconfig.defaults` files. Use ESP-IDF v5.5.2 and select a board with `MYBOT_BOARD`.

以下说明对应本工程已实现的 69 个板型,其中 62 个带屏、7 个无屏。硬件配置、输入行为和
以下说明对应本工程已实现的 72 个板型,其中 64 个带屏、8 个无屏。硬件配置、输入行为和
构建约束以当前板级代码为准;验证状态统一见
[验证矩阵](../../../docs/VALIDATION.md)。不同尺寸、芯片或硬件版本的板卡不能仅凭外观
共用固件。
Expand Down Expand Up @@ -92,6 +92,9 @@ real-device validation.
| [lilygo-t-cameraplus-s3-v1.2](lilygo-t-cameraplus-s3-v1.2/README.md) | 240×240 ST7789 | PDM microphone + MAX98357A | CST816D + Boot | V1.2 only; camera, PMIC, KEY1, SD, IR, sleep and shutdown are not implemented. |
| [lilygo-t-circle-s3](lilygo-t-circle-s3/README.md) | 160×160 round GC9D01N | MSM261 + MAX98357A | CST816D + Boot | Rotary encoder, APA102, battery, sleep and shutdown are not implemented. |
| [jiuchuan-s3](jiuchuan-s3/README.md) | 240×296 GC9309NA | ES8311 | Boot + volume buttons | Power-key actions, battery, charging, sleep and shutdown are not implemented. |
| [lilygo-t-display-s3-pro-mvsrlora](lilygo-t-display-s3-pro-mvsrlora/README.md) | 222×480 ST7796 | PDM capture + MAX98357A playback | CST226SE + Boot | SY6970 setup is implemented; SD, LoRa, vibration, RTC, IMU, battery and sleep are not. |
| [atk-dnesp32s3-box](atk-dnesp32s3-box/README.md) | 320×240 i80 ST7789 | ES8311 | Boot | XL9555/TCA9555 power setup is implemented; expander keys, camera, battery, dimming, sleep and shutdown are not. |
| [tudouzi](tudouzi/README.md) | Headless | ES8311 + ES7210 | Boot + two volume keys | Wi-Fi-only subset; SSD1306 UI, ML307, LED, battery, sleep and shutdown are not implemented. |

## Build, flash and validation / 构建、烧录与验证

Expand Down
14 changes: 14 additions & 0 deletions components/mybot_platform/boards/atk-dnesp32s3-box/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# ATK DNESP32S3 Box

板型 ID 为 `atk-dnesp32s3-box`。

- 显示:320×240 ST7789,i80 8-bit 总线,10 MHz,共享 LVGL UI。
- 音频:ES8311,16 kHz 单声道 signed-16 PCM。
- 扩展器:TCA9555/XL9555 `0x20` 控制系统和功放供电。
- 输入:GPIO0 Boot。
- 存储:16 MB QIO Flash、80 MHz Octal PSRAM、双 OTA。

仅支持检测到 ES8311 的硬件版本;NS4168 无 codec 音频变体未实现。扩展器按键、摄像头、电池、
调光、休眠和关机未实现。i80 时序、ES8311、扩展器供电和面板方向仍需真机验证。

公共构建见[板卡索引](../README.md),验证状态见[验证矩阵](../../../../docs/VALIDATION.md)。
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/* SPDX-License-Identifier: Apache-2.0 */
#include "driver/i2c_master.h"
#include "esp_err.h"
#include "esp_log.h"

#include <stdint.h>

#define TAG "atk_box_hardware"
#define ATK_BOX_EXPANDER_ADDRESS 0x20
#define ATK_BOX_I2C_TIMEOUT_MS 100

static esp_err_t write_register(i2c_master_dev_handle_t device, uint8_t reg, uint8_t value) {
const uint8_t command[] = {reg, value};
return i2c_master_transmit(device, command, sizeof(command), ATK_BOX_I2C_TIMEOUT_MS);
}

static esp_err_t read_register(i2c_master_dev_handle_t device, uint8_t reg, uint8_t *value) {
esp_err_t result = i2c_master_transmit(device, &reg, sizeof(reg), ATK_BOX_I2C_TIMEOUT_MS);
if (result == ESP_OK) {
result = i2c_master_receive(device, value, 1, ATK_BOX_I2C_TIMEOUT_MS);
}
return result;
}

int mybot_generic_board_extra_init(i2c_master_bus_handle_t bus) {
const i2c_device_config_t config = {
.dev_addr_length = I2C_ADDR_BIT_LEN_7,
.device_address = ATK_BOX_EXPANDER_ADDRESS,
.scl_speed_hz = 400000,
};
i2c_master_dev_handle_t device = NULL;
esp_err_t result = i2c_master_bus_add_device(bus, &config, &device);
uint8_t output_low = 0;

if (result == ESP_OK) {
result = write_register(device, 0x06, 0x3B);
}
if (result == ESP_OK) {
result = write_register(device, 0x07, 0xFE);
}
if (result == ESP_OK) {
result = write_register(device, 0x06, 0x1B);
}
if (result == ESP_OK) {
result = write_register(device, 0x07, 0xFE);
}
if (result == ESP_OK) {
result = read_register(device, 0x02, &output_low);
}
if (result == ESP_OK) {
result = write_register(device, 0x02, output_low | (uint8_t)((1U << 5) | (1U << 7)));
}
if (device) {
const esp_err_t remove_result = i2c_master_bus_rm_device(device);
if (result == ESP_OK) {
result = remove_result;
}
}
if (result != ESP_OK) {
ESP_LOGE(TAG, "event=hardware action=initialize expander=0x20 result=error code=%s",
esp_err_to_name(result));
return -1;
}
return 0;
}
6 changes: 6 additions & 0 deletions components/mybot_platform/boards/atk-dnesp32s3-box/board.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0 */
#include "generic_board.h"

const mybot_board_t *mybot_board_get(void) {
return mybot_generic_board_get();
}
18 changes: 18 additions & 0 deletions components/mybot_platform/boards/atk-dnesp32s3-box/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# SPDX-License-Identifier: Apache-2.0

set(MYBOT_GENERIC_PARTITION_TABLE "partitions/v2/16m.csv")
set(MYBOT_GENERIC_AUDIO "es8311")
set(MYBOT_GENERIC_DISPLAY "generic/i80_st7789_panel.c")
set(MYBOT_GENERIC_TOUCH OFF)
set(MYBOT_GENERIC_EXTRA_SOURCES
"${CMAKE_CURRENT_LIST_DIR}/atk_box_hardware.c")
set(MYBOT_GENERIC_REQUIRED_CONFIGS
CONFIG_PARTITION_TABLE_CUSTOM
CONFIG_ESPTOOLPY_FLASHSIZE_16MB
CONFIG_ESPTOOLPY_FLASHMODE_QIO
CONFIG_SPIRAM
CONFIG_SPIRAM_MODE_OCT
CONFIG_SPIRAM_SPEED_80M
CONFIG_CODEC_ES8311_SUPPORT
)
include("${CMAKE_CURRENT_LIST_DIR}/../common/generic_profile.cmake")
73 changes: 73 additions & 0 deletions components/mybot_platform/boards/atk-dnesp32s3-box/board_config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/* SPDX-License-Identifier: Apache-2.0 */
#ifndef MYBOT_BOARD_CONFIG_H_
#define MYBOT_BOARD_CONFIG_H_

#include "driver/gpio.h"
#include "driver/i2c_master.h"
#include "driver/spi_common.h"

#define MYBOT_BOARD_NAME "atk-dnesp32s3-box"
#define MYBOT_BOARD_HAS_DISPLAY 1
#define MYBOT_BOARD_HAS_TOUCH 0
#define MYBOT_GENERIC_AUDIO_KIND 1
#define MYBOT_GENERIC_TOUCH_KIND 0
#define MYBOT_GENERIC_EXTRA_INIT 1

#define MYBOT_AUDIO_SAMPLE_RATE 16000
#define MYBOT_AUDIO_DEFAULT_VOLUME 70
#define MYBOT_AUDIO_I2S_MCLK GPIO_NUM_NC
#define MYBOT_AUDIO_I2S_BCLK GPIO_NUM_21
#define MYBOT_AUDIO_I2S_WS GPIO_NUM_13
#define MYBOT_AUDIO_I2S_DIN GPIO_NUM_47
#define MYBOT_AUDIO_I2S_DOUT GPIO_NUM_14

#define MYBOT_GENERIC_I2C_PORT I2C_NUM_0
#define MYBOT_GENERIC_I2C_SDA GPIO_NUM_48
#define MYBOT_GENERIC_I2C_SCL GPIO_NUM_45
#define MYBOT_GENERIC_I2C_SPEED_HZ 400000
#define MYBOT_GENERIC_PA_GPIO GPIO_NUM_NC

#define MYBOT_ES8311_I2C_PORT MYBOT_GENERIC_I2C_PORT
#define MYBOT_ES8311_I2C_ADDRESS 0x30
#define MYBOT_ES8311_INPUT_GAIN_DB 30.0f
#define MYBOT_ES8311_HARDWARE_VOLUME_SCALE_PERCENT 60

#define MYBOT_BOOT_BUTTON_GPIO GPIO_NUM_0
#define MYBOT_VOLUME_UP_BUTTON_GPIO GPIO_NUM_NC
#define MYBOT_VOLUME_DOWN_BUTTON_GPIO GPIO_NUM_NC
#define MYBOT_BOOT_BUTTON_LONG_PRESS_MS 3000

#define MYBOT_DISPLAY_SPI_HOST SPI2_HOST
#define MYBOT_DISPLAY_MOSI GPIO_NUM_NC
#define MYBOT_DISPLAY_SCLK GPIO_NUM_42
#define MYBOT_DISPLAY_DC GPIO_NUM_2
#define MYBOT_DISPLAY_CS GPIO_NUM_1
#define MYBOT_DISPLAY_RESET GPIO_NUM_NC
#define MYBOT_DISPLAY_BACKLIGHT_GPIO GPIO_NUM_NC
#define MYBOT_DISPLAY_BACKLIGHT_INVERT 1
#define MYBOT_DISPLAY_BRIGHTNESS_PERCENT 60
#define MYBOT_DISPLAY_WIDTH 320
#define MYBOT_DISPLAY_HEIGHT 240
#define MYBOT_DISPLAY_OFFSET_X 0
#define MYBOT_DISPLAY_OFFSET_Y 0
#define MYBOT_DISPLAY_SWAP_XY true
#define MYBOT_DISPLAY_MIRROR_X true
#define MYBOT_DISPLAY_MIRROR_Y false
#define MYBOT_DISPLAY_INVERT_COLOR true
#define MYBOT_DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_RGB

#define MYBOT_DISPLAY_I80_RD GPIO_NUM_41
#define MYBOT_DISPLAY_I80_D0 GPIO_NUM_40
#define MYBOT_DISPLAY_I80_D1 GPIO_NUM_39
#define MYBOT_DISPLAY_I80_D2 GPIO_NUM_38
#define MYBOT_DISPLAY_I80_D3 GPIO_NUM_12
#define MYBOT_DISPLAY_I80_D4 GPIO_NUM_11
#define MYBOT_DISPLAY_I80_D5 GPIO_NUM_10
#define MYBOT_DISPLAY_I80_D6 GPIO_NUM_9
#define MYBOT_DISPLAY_I80_D7 GPIO_NUM_46
#define MYBOT_DISPLAY_I80_CLOCK_HZ (10 * 1000 * 1000)
#define MYBOT_DISPLAY_ST7789_POST_INIT 1
#define MYBOT_DISPLAY_ST7789_MADCTL 0x00
#define MYBOT_DISPLAY_ST7789_COLMOD 0x65

#endif /* MYBOT_BOARD_CONFIG_H_ */
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# SPDX-License-Identifier: Apache-2.0
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions/v2/16m.csv"
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_SPIRAM=y
CONFIG_SPIRAM_MODE_OCT=y
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_CODEC_ES8311_SUPPORT=y
CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n
9 changes: 9 additions & 0 deletions components/mybot_platform/boards/boards.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ set(MYBOT_SUPPORTED_BOARDS
"lilygo-t-cameraplus-s3-v1.2"
"lilygo-t-circle-s3"
"jiuchuan-s3"
"lilygo-t-display-s3-pro-mvsrlora"
"atk-dnesp32s3-box"
"tudouzi"
)
set(_MYBOT_BOARDS_ROOT "${CMAKE_CURRENT_LIST_DIR}")

Expand Down Expand Up @@ -211,6 +214,12 @@ function(mybot_resolve_board board)
set(profile "${_MYBOT_BOARDS_ROOT}/lilygo-t-circle-s3/board.cmake")
elseif(board STREQUAL "jiuchuan-s3")
set(profile "${_MYBOT_BOARDS_ROOT}/jiuchuan-s3/board.cmake")
elseif(board STREQUAL "lilygo-t-display-s3-pro-mvsrlora")
set(profile "${_MYBOT_BOARDS_ROOT}/lilygo-t-display-s3-pro-mvsrlora/board.cmake")
elseif(board STREQUAL "atk-dnesp32s3-box")
set(profile "${_MYBOT_BOARDS_ROOT}/atk-dnesp32s3-box/board.cmake")
elseif(board STREQUAL "tudouzi")
set(profile "${_MYBOT_BOARDS_ROOT}/tudouzi/board.cmake")
else()
message(FATAL_ERROR "Unsupported MYBOT_BOARD: ${board}")
endif()
Expand Down
2 changes: 2 additions & 0 deletions components/mybot_platform/boards/common/generic_profile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ if(MYBOT_GENERIC_TOUCH)
list(APPEND MYBOT_GENERIC_EXTRA_REQUIRES
esp_lcd_touch
esp_lcd_touch_gt911)
elseif(MYBOT_GENERIC_TOUCH_DRIVER STREQUAL "cst226")
# CST226 uses the project-owned direct I2C protocol in cst816s_boot_input.c.
else()
message(FATAL_ERROR "Unknown MYBOT_GENERIC_TOUCH_DRIVER")
endif()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# LilyGO T-Display-S3-Pro MVSRLoRa

板型 ID 为 `lilygo-t-display-s3-pro-mvsrlora`。

- 显示:222×480 ST7796,SPI3 mode 0,40 MHz,X 偏移 49,共享 LVGL UI。
- 音频:MP34DT05TR PDM 采集和 MAX98357A 播放,16 kHz 单声道 signed-16 PCM。
- 触摸:CST226SE,I2C0 GPIO5/GPIO6,地址 `0x5A`,复位 GPIO13。
- 输入:GPIO0 Boot;GPIO41 控制扬声器使能。
- 电源:SY6970 `0x6A` 关闭 ILIM、启用 ADC 并关闭看门狗。
- 存储:16 MB QIO Flash、80 MHz Octal PSRAM、双 OTA。
- 背光:GPIO48,默认 60%。

SD 卡、LoRa、振动、RTC、IMU、电池和休眠未实现。ST7796、CST226SE、SY6970、PDM 麦克风、
扬声器使能和面板方向仍需真机验证。

公共构建见[板卡索引](../README.md),验证状态见[验证矩阵](../../../../docs/VALIDATION.md)。
Loading
Loading