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
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,19 @@ bilingual documentation, and generation/build checks.
<a href="boards/esp32_s3_touch_lcd_7/">Board definition</a> · <a href="https://docs.waveshare.com/ESP32-S3-Touch-LCD-7">Product documentation</a>
</td>
</tr>
<tr>
<td align="center" valign="middle" width="180">
<a href="https://docs.waveshare.com/ESP32-S3-LR1121-OLED-1.54">
<img src="https://raw.githubusercontent.com/waveshareteam/esp32-s3-lr1121-oled-1.54/main/assets/ESP32-S3-LR1121-OLED-1.54-DocHeader-1.webp"
alt="ESP32-S3-LR1121-OLED-1.54-XF development board"
width="160">
</a>
</td>
<td valign="middle" width="600">
<p><strong>ESP32-S3-LR1121-OLED-1.54-XF</strong></p>
<a href="boards/esp32_s3_lr1121_oled_1_54_xf/">Board definition</a> · <a href="https://docs.waveshare.com/ESP32-S3-LR1121-OLED-1.54">Product documentation</a>
</td>
</tr>
</table>

<details>
Expand All @@ -80,6 +93,7 @@ such as `spi_sd` describe a bus; they do not imply a complete storage applicatio
<!-- BEGIN SUPPORTED_BOARDS -->
| Board | Chip | Device definitions | Peripheral definitions |
| --- | --- | --- | --- |
| [`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` |
| [`esp32_s3_touch_amoled_2_16`](boards/esp32_s3_touch_amoled_2_16/) | ESP32-S3 | `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` |
Expand All @@ -92,6 +106,9 @@ Definitions live under `boards/<full_model>/`. The three AMOLED profiles come
from Espressif Brookesia; see [board revisions and migration notes](docs/BOARDS.md).
CI validates generation and compilation; physical operation requires board testing.

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).

<a id="quick-start"></a>

## 🚀 Quick start
Expand Down
16 changes: 16 additions & 0 deletions README_ZH.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,18 @@
<a href="boards/esp32_s3_touch_lcd_7/">板卡定义</a> · <a href="https://docs.waveshare.com/ESP32-S3-Touch-LCD-7">产品文档</a>
</td>
</tr>
<tr>
<td align="center" valign="middle" width="180">
<a href="https://docs.waveshare.com/ESP32-S3-LR1121-OLED-1.54">
<img src="https://raw.githubusercontent.com/waveshareteam/esp32-s3-lr1121-oled-1.54/main/assets/ESP32-S3-LR1121-OLED-1.54-DocHeader-1.webp"
alt="ESP32-S3-LR1121-OLED-1.54-XF 开发板产品图" width="160">
</a>
</td>
<td valign="middle" width="600">
<p><strong>ESP32-S3-LR1121-OLED-1.54-XF</strong></p>
<a href="boards/esp32_s3_lr1121_oled_1_54_xf/">板卡定义</a> · <a href="https://docs.waveshare.com/ESP32-S3-LR1121-OLED-1.54">产品文档</a>
</td>
</tr>
</table>

<details>
Expand All @@ -79,6 +91,7 @@
<!-- BEGIN SUPPORTED_BOARDS -->
| 开发板 | 芯片 | 设备定义 | 外设定义 |
| --- | --- | --- | --- |
| [`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` |
| [`esp32_s3_touch_amoled_2_16`](boards/esp32_s3_touch_amoled_2_16/) | ESP32-S3 | `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` |
Expand All @@ -90,6 +103,9 @@
板卡定义统一放在 `boards/<完整型号>/`。新增的三个 AMOLED 型号来自 Espressif Brookesia,
详见[硬件版本与迁移说明](docs/BOARDS_ZH.md)。CI 校验生成与编译,实机运行效果需要单独测试。

LR1121 OLED XF 配置提供硬件定义,自定义设备需要应用侧适配代码,详见
[支持范围](docs/BOARDS_ZH.md#lr1121-oled-154-xf-定义范围)。

<a id="quick-start"></a>

## 🚀 快速开始
Expand Down
125 changes: 125 additions & 0 deletions boards/esp32_s3_lr1121_oled_1_54_xf/board_devices.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
devices:
- name: button_boot
type: button
sub_type: gpio
init_skip: true
config:
active_level: 0
peripherals:
- gpio_name: gpio_boot
- name: button_power
type: button
sub_type: gpio
init_skip: true
config:
active_level: 0
disable_pull: true
peripherals:
- gpio_name: gpio_power
- name: button_menu
type: button
sub_type: gpio
init_skip: true
config:
active_level: 0
peripherals:
- gpio_name: gpio_menu
- name: button_ptt
type: button
sub_type: gpio
init_skip: true
config:
active_level: 0
peripherals:
- gpio_name: gpio_ptt
- name: button_rtc_irq
type: button
sub_type: gpio
init_skip: true
config:
active_level: 0
peripherals:
- gpio_name: gpio_rtc_irq
- name: radio
type: custom
chip: lr1121
init_skip: true
config:
clock_hz: 8000000
mode: 0
queue_size: 1
peripherals:
- name: spi_radio
- name: gpio_radio_cs
- name: gpio_radio_irq
- name: gpio_radio_reset
- name: oled
type: custom
chip: ssd1309
init_skip: true
config:
address: 60
clock_hz: 400000
width: 128
height: 64
bits_per_pixel: 1
reset_gpio: -1
rotation: 0
num_fbs: 1
invert_color: false
control_phase_bytes: 1
dc_bit_offset: 6
cmd_bits: 8
param_bits: 8
peripherals:
- name: i2c_main
- name: rtc
type: custom
chip: pcf85063a
init_skip: true
config:
address: 81
peripherals:
- name: i2c_main
- name: battery
type: custom
chip: bq27220
init_skip: true
config:
address: 85
clock_hz: 100000
charge_threshold_ma: 20
peripherals:
- name: i2c_main
- name: audio
type: custom
chip: es8311_es7210
init_skip: true
config:
speaker_address: 24
microphone_address: 64
sample_rate: 16000
peripherals:
- name: i2c_main
- name: i2s_speaker
- name: i2s_microphone
- name: gpio_amplifier
- name: sdcard
type: fs_fat
sub_type: sdmmc
init_skip: true
config:
mount_point: /sdcard
vfs_config:
format_if_mount_failed: false
max_files: 5
allocation_unit_size: 16384
sub_config:
slot: SDMMC_HOST_SLOT_1
frequency: SDMMC_FREQ_DEFAULT
bus_width: 1
slot_flags: SDMMC_SLOT_FLAG_INTERNAL_PULLUP
pins:
clk: 12
cmd: 10
d0: 11
5 changes: 5 additions & 0 deletions boards/esp32_s3_lr1121_oled_1_54_xf/board_info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
board: esp32_s3_lr1121_oled_1_54_xf
chip: esp32s3
version: 1.0.0
description: Waveshare ESP32-S3-LR1121-OLED-1.54-XF common digital board
manufacturer: Waveshare
124 changes: 124 additions & 0 deletions boards/esp32_s3_lr1121_oled_1_54_xf/board_peripherals.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
peripherals:
- name: i2c_main
type: i2c
config:
port: 0
pins:
sda: 13
scl: 14
enable_internal_pullup: true
glitch_count: 7
- name: spi_radio
type: spi
config:
spi_bus_config:
spi_port: SPI3_HOST
mosi_io_num: 45
miso_io_num: 46
sclk_io_num: 40
max_transfer_sz: 4092
- name: gpio_boot
type: gpio
config:
pin: 0
mode: GPIO_MODE_INPUT
pull_up: true
default_level: 0
- name: gpio_power
type: gpio
config:
pin: 4
mode: GPIO_MODE_INPUT
pull_up: false
default_level: 0
- name: gpio_menu
type: gpio
config:
pin: 5
mode: GPIO_MODE_INPUT
pull_up: true
default_level: 0
- name: gpio_ptt
type: gpio
config:
pin: 6
mode: GPIO_MODE_INPUT
pull_up: true
default_level: 0
- name: gpio_rtc_irq
type: gpio
config:
pin: 7
mode: GPIO_MODE_INPUT
pull_up: true
default_level: 0
- name: gpio_amplifier
type: gpio
config:
pin: 8
mode: GPIO_MODE_OUTPUT
pull_up: false
default_level: 0
- name: gpio_radio_cs
type: gpio
config:
pin: 42
mode: GPIO_MODE_OUTPUT
pull_up: false
default_level: 1
- name: gpio_radio_irq
type: gpio
config:
pin: 38
mode: GPIO_MODE_INPUT
pull_up: false
default_level: 0
- name: gpio_radio_reset
type: gpio
config:
pin: 39
mode: GPIO_MODE_OUTPUT
pull_up: false
default_level: 1
- name: gpio_radio_busy
type: gpio
config:
pin: 41
mode: GPIO_MODE_INPUT
pull_up: false
default_level: 0
- name: i2s_speaker
type: i2s
role: master
format: std-out
config:
port: 0
sample_rate_hz: 16000
data_bit_width: 16
slot_mode: I2S_SLOT_MODE_MONO
slot_mask: I2S_STD_SLOT_LEFT
pins:
mclk: 17
bclk: 18
ws: 21
dout: 16
din: -1
- name: i2s_microphone
type: i2s
role: master
format: tdm-in
config:
port: 0
sample_rate_hz: 16000
data_bit_width: 16
slot_mode: I2S_SLOT_MODE_STEREO
slot_mask: I2S_TDM_SLOT0 | I2S_TDM_SLOT1 | I2S_TDM_SLOT2 | I2S_TDM_SLOT3
pins:
mclk: 17
bclk: 18
ws: 21
dout: -1
din: 15
total_slot: 4
ws_width: 0
left_align: false
30 changes: 30 additions & 0 deletions docs/BOARDS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ is `waveshare/waveshare_boards`. Keep all definitions in:

```text
boards/
esp32_s3_lr1121_oled_1_54_xf/
esp32_s3_touch_lcd_7/
esp32_s3_touch_amoled_1_75c/
esp32_s3_touch_amoled_1_8/
Expand All @@ -30,6 +31,35 @@ 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 OLED 1.54 XF definition scope

`esp32_s3_lr1121_oled_1_54_xf` imports the three YAML files from the
[product's factory-source profile](https://github.com/waveshareteam/esp32-s3-lr1121-oled-1.54/tree/a0bf73932ef06d047810b17888cc7e33f064680e/firmware/12_factory_demo/components/esp32_s3_lr1121_oled_1_54_support/boards/esp32_s3_lr1121_oled_1_54_xf) without changing its hardware values.
The hardware reference is the product repository's [schematic](https://github.com/waveshareteam/esp32-s3-lr1121-oled-1.54/blob/a0bf73932ef06d047810b17888cc7e33f064680e/hardware/schematics/esp32-s3-lr1121-oled-1_54_schematics.pdf).
The profile describes ESP32-S3 GPIOs, shared I2C, LR1121 SPI, speaker/microphone
I2S, buttons and one-bit SDMMC.

This is a hardware-definition profile. All devices retain `init_skip: true` for
application-controlled initialization. `radio`, `oled`, `rtc`, `battery` and
`audio` are custom devices; this pack does not include their initialization
callbacks, product adapters or managed driver dependencies. Applications must
supply and register those adapters before initializing the devices by name.
Calling `esp_board_manager_init()` alone does not make these devices usable.
Buttons and SD use built-in Board Manager device types and also require explicit
initialization. SD mount failure does not automatically format the card.

The radio adapter must also initialize the separately declared `gpio_radio_busy`;
it is not in the custom radio's four-entry peripheral list. The audio defaults
are 16 kHz with STD speaker output and four-slot TDM microphone input. Application
profiles such as the walkie-talkie's 8 kHz capture need their own configuration.
When adopting this published profile, remove duplicate application-local board
YAML definitions while retaining the required product adapters.

Generation and compilation checks do not validate device initialization, shared
I2S operation, RF settings, power behavior or physical wiring. Hardware testing
has not been performed for this import; verify the exact PCB revision and those
functions separately before claiming complete product support.

## Imported source and adaptations

The three AMOLED definitions originate from
Expand Down
Loading
Loading