diff --git a/README.md b/README.md index 7a27db8..378cb62 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,17 @@ bilingual documentation, and generation/build checks. Board definition · Product documentation + + + + ESP32-S3-LR1121-ePaper-2.9 development board + + + +

ESP32-S3-LR1121-ePaper-2.9

+ Board definition · Product documentation + +
@@ -93,6 +104,7 @@ such as `spi_sd` describe a bus; they do not imply a complete storage applicatio | Board | Chip | Device definitions | Peripheral definitions | | --- | --- | --- | --- | +| [`esp32_s3_lr1121_epaper_2_9`](boards/esp32_s3_lr1121_epaper_2_9/) | ESP32-S3 | `status_led`, `epaper_power_ctrl`, `epaper_ssd16xx`, `rtc_pcf85063a`, `bat_axp2602`, `radio_lr1121` | `i2c_master`, `spi_shared`, `gpio_boot`, `gpio_epaper_power` | | [`esp32_s3_lr1121_oled_1_54_xf`](boards/esp32_s3_lr1121_oled_1_54_xf/) | ESP32-S3 | `button_boot`, `button_power`, `button_menu`, `button_ptt`, `button_rtc_irq`, `radio`, `oled`, `rtc`, `battery`, `audio`, `sdcard` | `i2c_main`, `spi_radio`, `gpio_boot`, `gpio_power`, `gpio_menu`, `gpio_ptt`, `gpio_rtc_irq`, `gpio_amplifier`, `gpio_radio_cs`, `gpio_radio_irq`, `gpio_radio_reset`, `gpio_radio_busy`, `i2s_speaker`, `i2s_microphone` | | [`esp32_s3_touch_amoled_1_75c`](boards/esp32_s3_touch_amoled_1_75c/) | ESP32-S3 | `axp2101_power_manager`, `audio_dac`, `audio_adc`, `display_lcd`, `lcd_touch` | `i2c_master`, `i2s_audio_out`, `i2s_audio_in`, `gpio_pa_control`, `spi_display` | | [`esp32_s3_touch_amoled_1_8`](boards/esp32_s3_touch_amoled_1_8/) | ESP32-S3 | `gpio_expander`, `axp2101_power_manager`, `audio_dac`, `audio_adc`, `display_lcd`, `lcd_touch`, `fs_sdcard` | `i2c_master`, `i2s_audio_out`, `i2s_audio_in`, `gpio_pa_control`, `spi_display` | @@ -109,6 +121,10 @@ CI validates generation and compilation; physical operation requires board testi The LR1121 OLED XF profile provides hardware definitions and requires application-side custom device adapters; see [its support scope](docs/BOARDS.md#lr1121-oled-154-xf-definition-scope). +The LR1121 ePaper 2.9 profile defines the display, radio, RTC, battery gauge and +status LED. Custom devices require application-side adapters; see +[its support scope](docs/BOARDS.md#lr1121-epaper-29-definition-scope). + ## 🚀 Quick start diff --git a/README_ZH.md b/README_ZH.md index 2e96c29..9c81c76 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -80,6 +80,17 @@ 板卡定义 · 产品文档 + + + + ESP32-S3-LR1121-ePaper-2.9 开发板产品图 + + + +

ESP32-S3-LR1121-ePaper-2.9

+ 板卡定义 · 产品文档 + +
@@ -91,6 +102,7 @@ | 开发板 | 芯片 | 设备定义 | 外设定义 | | --- | --- | --- | --- | +| [`esp32_s3_lr1121_epaper_2_9`](boards/esp32_s3_lr1121_epaper_2_9/) | ESP32-S3 | `status_led`, `epaper_power_ctrl`, `epaper_ssd16xx`, `rtc_pcf85063a`, `bat_axp2602`, `radio_lr1121` | `i2c_master`, `spi_shared`, `gpio_boot`, `gpio_epaper_power` | | [`esp32_s3_lr1121_oled_1_54_xf`](boards/esp32_s3_lr1121_oled_1_54_xf/) | ESP32-S3 | `button_boot`, `button_power`, `button_menu`, `button_ptt`, `button_rtc_irq`, `radio`, `oled`, `rtc`, `battery`, `audio`, `sdcard` | `i2c_main`, `spi_radio`, `gpio_boot`, `gpio_power`, `gpio_menu`, `gpio_ptt`, `gpio_rtc_irq`, `gpio_amplifier`, `gpio_radio_cs`, `gpio_radio_irq`, `gpio_radio_reset`, `gpio_radio_busy`, `i2s_speaker`, `i2s_microphone` | | [`esp32_s3_touch_amoled_1_75c`](boards/esp32_s3_touch_amoled_1_75c/) | ESP32-S3 | `axp2101_power_manager`, `audio_dac`, `audio_adc`, `display_lcd`, `lcd_touch` | `i2c_master`, `i2s_audio_out`, `i2s_audio_in`, `gpio_pa_control`, `spi_display` | | [`esp32_s3_touch_amoled_1_8`](boards/esp32_s3_touch_amoled_1_8/) | ESP32-S3 | `gpio_expander`, `axp2101_power_manager`, `audio_dac`, `audio_adc`, `display_lcd`, `lcd_touch`, `fs_sdcard` | `i2c_master`, `i2s_audio_out`, `i2s_audio_in`, `gpio_pa_control`, `spi_display` | @@ -106,6 +118,9 @@ LR1121 OLED XF 配置提供硬件定义,自定义设备需要应用侧适配代码,详见 [支持范围](docs/BOARDS_ZH.md#lr1121-oled-154-xf-定义范围)。 +LR1121 ePaper 2.9 配置包含电子纸、无线、RTC、电量计和状态灯定义, +自定义设备需要应用侧适配代码,详见[支持范围](docs/BOARDS_ZH.md#lr1121-epaper-29-定义范围)。 + ## 🚀 快速开始 diff --git a/boards/esp32_s3_lr1121_epaper_2_9/board_devices.yaml b/boards/esp32_s3_lr1121_epaper_2_9/board_devices.yaml new file mode 100644 index 0000000..c632e47 --- /dev/null +++ b/boards/esp32_s3_lr1121_epaper_2_9/board_devices.yaml @@ -0,0 +1,82 @@ +devices: + - name: status_led + chip: ws2812 + type: led_strip + sub_type: rmt + version: 1.0.0 + init_skip: true + config: + strip_gpio_num: 21 + max_leds: 1 + led_model: LED_MODEL_WS2812 + color_component_format: LED_STRIP_COLOR_COMPONENT_FMT_GRB + invert_out: false + rmt: + clk_src: RMT_CLK_SRC_DEFAULT + resolution_hz: 10000000 + mem_block_symbols: 0 + with_dma: false + + - name: epaper_power_ctrl + type: power_ctrl + sub_type: gpio + version: 1.0.0 + peripherals: + - name: gpio_epaper_power + active_level: 1 + + - name: epaper_ssd16xx + chip: ssd16xx_290 + type: custom + version: 1.0.0 + init_skip: true + power_ctrl_device: epaper_power_ctrl + config: + busy_gpio: 8 + reset_gpio: 9 + dc_gpio: 17 + cs_gpio: 18 + spi_speed_hz: 10000000 + peripherals: + - name: spi_shared + + - name: rtc_pcf85063a + chip: pcf85063a + type: custom + version: 1.0.0 + init_skip: true + config: + address: 0x51 + frequency: 400000 + int_gpio: 7 + peripherals: + - name: i2c_master + + - name: bat_axp2602 + chip: axp2602 + type: custom + version: 1.0.0 + init_skip: true + config: + address: 0x62 + frequency: 400000 + sense_resistor_mohm: 10 + idle_current_threshold_ma: 1 + peripherals: + - name: i2c_master + + - name: radio_lr1121 + chip: lr1121 + type: custom + version: 1.0.0 + init_skip: true + config: + dio1_gpio: 6 + nss_gpio: 42 + reset_gpio: 39 + busy_gpio: 41 + dio7_gpio: -1 + dio8_gpio: -1 + spi_speed_hz: 8000000 + peripherals: + - name: spi_shared diff --git a/boards/esp32_s3_lr1121_epaper_2_9/board_info.yaml b/boards/esp32_s3_lr1121_epaper_2_9/board_info.yaml new file mode 100644 index 0000000..39a0181 --- /dev/null +++ b/boards/esp32_s3_lr1121_epaper_2_9/board_info.yaml @@ -0,0 +1,5 @@ +board: esp32_s3_lr1121_epaper_2_9 +chip: esp32s3 +version: 1.0.0 +description: "Waveshare ESP32-S3-LR1121-ePaper-2.9" +manufacturer: "Waveshare" diff --git a/boards/esp32_s3_lr1121_epaper_2_9/board_peripherals.yaml b/boards/esp32_s3_lr1121_epaper_2_9/board_peripherals.yaml new file mode 100644 index 0000000..962d0bd --- /dev/null +++ b/boards/esp32_s3_lr1121_epaper_2_9/board_peripherals.yaml @@ -0,0 +1,43 @@ +# Pin map migrated from the existing examples and board support implementation. +peripherals: + - name: i2c_master + type: i2c + role: master + config: + port: 0 + pins: + sda: 13 + scl: 14 + enable_internal_pullup: true + glitch_count: 7 + + - name: spi_shared + type: spi + role: master + config: + spi_bus_config: + spi_port: SPI2_HOST + mosi_io_num: 45 + miso_io_num: 46 + sclk_io_num: 40 + quadwp_io_num: -1 + quadhd_io_num: -1 + max_transfer_sz: 4096 + + - name: gpio_boot + type: gpio + role: io + config: + pin: 0 + mode: GPIO_MODE_INPUT + pull_up: true + pull_down: false + default_level: 1 + + - name: gpio_epaper_power + type: gpio + role: io + config: + pin: 38 + mode: GPIO_MODE_OUTPUT + default_level: 1 diff --git a/docs/BOARDS.md b/docs/BOARDS.md index 538aac7..ab2d463 100644 --- a/docs/BOARDS.md +++ b/docs/BOARDS.md @@ -9,6 +9,7 @@ is `waveshare/waveshare_boards`. Keep all definitions in: ```text boards/ + esp32_s3_lr1121_epaper_2_9/ esp32_s3_lr1121_oled_1_54_xf/ esp32_s3_touch_lcd_7/ esp32_s3_touch_amoled_1_75c/ @@ -31,6 +32,50 @@ passes this version's override-dependency name filter. No upstream patch or customer-path argument is needed. See the pinned [discovery implementation](https://github.com/espressif/esp-board-manager/blob/2beb9b22b0892b343bd555a1ebc9929a7edce8fc/generators/config_generator.py). +## LR1121 ePaper 2.9 definition scope + +`esp32_s3_lr1121_epaper_2_9` imports the three YAML files from the product's +original example board profile. The published [product examples](https://github.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/blob/4aa6c326ca3a23317b180c86bbaea15d3327386f/examples/esp-idf/README.md#board-manager-integration) +consume this profile through `waveshare/waveshare_boards`. The profile describes +an ESP32-S3, an SSD16xx-compatible 2.9-inch e-paper device, LR1121 radio, +PCF85063A RTC, AXP2602 battery gauge, one WS2812 status LED and display power control. + +The following values are configuration references, not verified schematic results: + +| Interface | Configured GPIOs / parameters | +| --- | --- | +| I2C | SDA 13, SCL 14; RTC address `0x51`, battery gauge address `0x62` | +| Shared SPI2 | SCLK 40, MOSI 45, MISO 46; display 10 MHz, radio 8 MHz | +| E-paper | BUSY 8, reset 9, DC 17, CS 18; power GPIO 38, active high | +| LR1121 | DIO1 6, NSS 42, reset 39, BUSY 41 | +| Other | RTC interrupt 7; WS2812 GPIO 21, one GRB LED; BOOT input GPIO 0 | + +`status_led` uses Board Manager's native RMT `led_strip` device. +It and the four custom devices (`epaper_ssd16xx`, `rtc_pcf85063a`, +`bat_axp2602`, `radio_lr1121`) retain `init_skip: true` and require explicit +initialization. Applications must provide and register initialization/deinitialization +adapters and their driver dependencies for the custom devices. These adapters are +not included in this pack; the YAML alone does not implement display refresh or +radio communication. Both devices share `spi_shared` and use separate chip selects. + +`epaper_power_ctrl` uses the native GPIO power-control device and does **not** skip +initialization; its GPIO 38 default is high. The display references it through +`power_ctrl_device`. Applications must account for this power behavior during +startup and sleep. BOOT is only a GPIO declaration; no button device or SD card +device is defined. The AXP2602 sense-resistor value of 10 mΩ is a configuration +default that still needs checking against the installed hardware. + +The published [hardware reference](https://github.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/blob/4aa6c326ca3a23317b180c86bbaea15d3327386f/docs/hardware-facts.zh-CN.md) +and [Rev1.1 schematic](https://github.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/blob/4aa6c326ca3a23317b180c86bbaea15d3327386f/hardware/schematics/ESP32-S3-LR1121-ePaper-2.9-XF-Schematics.pdf) +are available in the product repository. The GPIO assignments above agree with +that hardware reference; this import has not undergone a full schematic audit +or physical-board validation. Verify the exact PCB revision, display/power timing, +radio configuration and battery measurement separately. GPIO 38 controls a shared +power domain for the display, radio, WS2812 and microSD, despite the device name +`epaper_power_ctrl`. +The README uses the published [product image](https://raw.githubusercontent.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/4aa6c326ca3a23317b180c86bbaea15d3327386f/docs/images/ESP32-S3-LR1121-ePaper-2.9-details-5-2.webp), +pinned to product-repository commit `4aa6c326ca3a23317b180c86bbaea15d3327386f`. + ## LR1121 OLED 1.54 XF definition scope `esp32_s3_lr1121_oled_1_54_xf` imports the three YAML files from the diff --git a/docs/BOARDS_ZH.md b/docs/BOARDS_ZH.md index b1ca2b2..7bf2462 100644 --- a/docs/BOARDS_ZH.md +++ b/docs/BOARDS_ZH.md @@ -9,6 +9,7 @@ ```text boards/ + esp32_s3_lr1121_epaper_2_9/ esp32_s3_lr1121_oled_1_54_xf/ esp32_s3_touch_lcd_7/ esp32_s3_touch_amoled_1_75c/ @@ -28,6 +29,43 @@ boards/ `_boards` 后缀能够通过该版本对覆盖依赖名称的筛选,无需修改上级组件或传入 customer-path 参数。 依据见固定版本的[扫描实现](https://github.com/espressif/esp-board-manager/blob/2beb9b22b0892b343bd555a1ebc9929a7edce8fc/generators/config_generator.py)。 +## LR1121 ePaper 2.9 定义范围 + +`esp32_s3_lr1121_epaper_2_9` 导入产品原有示例板卡配置中的三份 YAML。 +已公开的[产品示例](https://github.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/blob/4aa6c326ca3a23317b180c86bbaea15d3327386f/examples/esp-idf/README.md#board-manager-integration) +通过 `waveshare/waveshare_boards` 使用此配置。配置描述 ESP32-S3、兼容 SSD16xx 的 +2.9 英寸电子纸、LR1121 无线、PCF85063A RTC、AXP2602 电量计、一颗 WS2812 状态灯和显示电源控制。 + +下列数值是配置参考,不代表已经完成原理图核对: + +| 接口 | 配置的 GPIO / 参数 | +| --- | --- | +| I2C | SDA 13、SCL 14;RTC 地址 `0x51`,电量计地址 `0x62` | +| 共用 SPI2 | SCLK 40、MOSI 45、MISO 46;显示 10 MHz,无线 8 MHz | +| 电子纸 | BUSY 8、复位 9、DC 17、CS 18;电源 GPIO38,高电平有效 | +| LR1121 | DIO1 6、NSS 42、复位 39、BUSY 41 | +| 其他 | RTC 中断 7;WS2812 GPIO21,一颗 GRB 灯;BOOT 输入 GPIO0 | + +`status_led` 使用 Board Manager 原生 RMT `led_strip` 设备。 +它与四个自定义设备(`epaper_ssd16xx`、`rtc_pcf85063a`、`bat_axp2602`、 +`radio_lr1121`)均保留 `init_skip: true`,需要显式初始化。 +自定义设备还需要应用提供并注册初始化/反初始化适配代码及驱动依赖, +本组件包未包含这些代码;仅有 YAML 不会实现显示刷新或无线通信。 +电子纸与无线共用 `spi_shared`,分别使用独立片选。 + +`epaper_power_ctrl` 使用原生 GPIO 电源控制设备,**没有**跳过初始化, +其 GPIO38 默认输出高电平;显示设备通过 `power_ctrl_device` 引用它。 +应用启动和休眠时需考虑这一电源行为。BOOT 仅声明为 GPIO,未定义按键设备或 SD 卡设备。 +AXP2602 的 10 mΩ 采样电阻值是配置默认值,仍需核对实装硬件。 + +产品仓库已公开[硬件说明](https://github.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/blob/4aa6c326ca3a23317b180c86bbaea15d3327386f/docs/hardware-facts.zh-CN.md) +和 [Rev1.1 原理图](https://github.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/blob/4aa6c326ca3a23317b180c86bbaea15d3327386f/hardware/schematics/ESP32-S3-LR1121-ePaper-2.9-XF-Schematics.pdf)。 +上述 GPIO 分配与硬件说明一致;本次导入未完成完整原理图审计或实机验证, +具体 PCB 版本、显示/供电时序、无线配置及电量测量仍需分别验证。 +虽然设备名为 `epaper_power_ctrl`,GPIO38 实际控制电子纸、无线、WS2812 和 microSD 的共用电源域。 +README 使用已发布的[产品图片](https://raw.githubusercontent.com/waveshareteam/ESP32-S3-LR1121-ePaper-2.9/4aa6c326ca3a23317b180c86bbaea15d3327386f/docs/images/ESP32-S3-LR1121-ePaper-2.9-details-5-2.webp), +固定到产品仓库提交 `4aa6c326ca3a23317b180c86bbaea15d3327386f`。 + ## LR1121 OLED 1.54 XF 定义范围 `esp32_s3_lr1121_oled_1_54_xf` 的三份 YAML 来自 diff --git a/docs/CI.md b/docs/CI.md index 2772a80..3f12b56 100644 --- a/docs/CI.md +++ b/docs/CI.md @@ -15,8 +15,8 @@ published versions satisfying the range are tested, with duplicates removed. Registry lookup failures fail the job. Each matrix entry records an exact version. The initial Board Manager floor is **0.7.2**, matching the reference board-pack -template. Five board profiles are discovered. Each resolved Board Manager version -adds ten builds across the two IDF lines. Keep the floor until a deliberate +template. Six board profiles are discovered. Each resolved Board Manager version +adds twelve builds across the two IDF lines. Keep the floor until a deliberate compatibility change is tested. Unsupported catalog profiles or generation failures fail CI; they are not counted as successful builds. diff --git a/docs/CI_ZH.md b/docs/CI_ZH.md index b7b51d2..001b3c2 100644 --- a/docs/CI_ZH.md +++ b/docs/CI_ZH.md @@ -13,7 +13,7 @@ 相同版本合并。组件库查询失败会使任务失败,每个矩阵项均记录明确版本。 Board Manager 初始最低版本为 **0.7.2**,与参考板卡包模板一致。 -当前发现五块板卡,每个解析出的 Board Manager 版本在两个 IDF 版本线上共十项编译。 +当前发现六块板卡,每个解析出的 Board Manager 版本在两个 IDF 版本线上共十二项编译。 调整最低版本前需要明确兼容性变更并测试。 不支持的芯片能力配置或生成失败会使 CI 失败,不会被计为编译成功。 diff --git a/idf_component.yml b/idf_component.yml index 647620c..ff9f6e6 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,4 +1,4 @@ -version: "0.1.2" +version: "0.1.3" description: Waveshare board definitions for ESP Board Manager license: Apache-2.0 url: https://github.com/waveshareteam/waveshare_boards