Skip to content

Commit 44ec0e6

Browse files
authored
Merge pull request #9608 from sanhu88/espressif_esp32s3_lcd_ev_v1.5
Add Espressif esp32s3 lcd ev v1.5
2 parents f18695d + 2b7480e commit 44ec0e6

File tree

6 files changed

+319
-0
lines changed

6 files changed

+319
-0
lines changed
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "supervisor/board.h"
8+
#include "mpconfigboard.h"
9+
#include "shared-bindings/board/__init__.h"
10+
#include "shared-bindings/busio/I2C.h"
11+
#include "shared-bindings/dotclockframebuffer/DotClockFramebuffer.h"
12+
#include "shared-bindings/dotclockframebuffer/__init__.h"
13+
#include "shared-bindings/framebufferio/FramebufferDisplay.h"
14+
#include "shared-bindings/microcontroller/Pin.h"
15+
#include "shared-module/displayio/__init__.h"
16+
#include "boards/espressif_esp32s3_lcd_ev_v1.5/board.h"
17+
18+
#define MP_DEFINE_BYTES_OBJ_WITH_NULL(obj_name, bin) mp_obj_str_t obj_name = {{&mp_type_bytes}, 0, sizeof(bin) - 1, (const byte *)bin}
19+
20+
static const uint8_t display_init_sequence[] = {
21+
0xf0, 5, 0x55, 0xaa, 0x52, 0x08, 0x00,
22+
0xf6, 2, 0x5a, 0x87,
23+
0xc1, 1, 0x3f,
24+
0xc2, 1, 0x0e,
25+
0xc6, 1, 0xf8,
26+
0xc9, 1, 0x10,
27+
0xcd, 1, 0x25,
28+
0xf8, 1, 0x8a,
29+
0xac, 1, 0x45,
30+
0xa0, 1, 0xdd,
31+
0xa7, 1, 0x47,
32+
0xfa, 4, 0x00, 0x00, 0x00, 0x04,
33+
0x86, 4, 0x99, 0xa3, 0xa3, 0x51,
34+
0xa3, 1, 0xee,
35+
0xfd, 3, 0x3c, 0x3c, 0x00,
36+
0x71, 1, 0x48,
37+
0x72, 1, 0x48,
38+
0x73, 2, 0x00, 0x44,
39+
0x97, 1, 0xee,
40+
0x83, 1, 0x93,
41+
0x9a, 1, 0x72,
42+
0x9b, 1, 0x5a,
43+
0x82, 2, 0x2c, 0x2c,
44+
0xb1, 1, 0x10,
45+
0x6d, 32, 0x00, 0x1f, 0x19, 0x1a, 0x10, 0x0e, 0x0c, 0x0a, 0x02, 0x07, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x08, 0x01, 0x09, 0x0b, 0x0d, 0x0f, 0x1a, 0x19, 0x1f, 0x00,
46+
0x64, 16, 0x38, 0x05, 0x01, 0xdb, 0x03, 0x03, 0x38, 0x04, 0x01, 0xdc, 0x03, 0x03, 0x7a, 0x7a, 0x7a, 0x7a,
47+
0x65, 16, 0x38, 0x03, 0x01, 0xdd, 0x03, 0x03, 0x38, 0x02, 0x01, 0xde, 0x03, 0x03, 0x7a, 0x7a, 0x7a, 0x7a,
48+
0x66, 16, 0x38, 0x01, 0x01, 0xdf, 0x03, 0x03, 0x38, 0x00, 0x01, 0xe0, 0x03, 0x03, 0x7a, 0x7a, 0x7a, 0x7a,
49+
0x67, 16, 0x30, 0x01, 0x01, 0xe1, 0x03, 0x03, 0x30, 0x02, 0x01, 0xe2, 0x03, 0x03, 0x7a, 0x7a, 0x7a, 0x7a,
50+
0x68, 13, 0x00, 0x08, 0x15, 0x08, 0x15, 0x7a, 0x7a, 0x08, 0x15, 0x08, 0x15, 0x7a, 0x7a,
51+
0x60, 8, 0x38, 0x08, 0x7a, 0x7a, 0x38, 0x09, 0x7a, 0x7a,
52+
0x63, 8, 0x31, 0xe4, 0x7a, 0x7a, 0x31, 0xe5, 0x7a, 0x7a,
53+
0x69, 7, 0x04, 0x22, 0x14, 0x22, 0x14, 0x22, 0x08,
54+
0x6b, 1, 0x07,
55+
0x7a, 2, 0x08, 0x13,
56+
0x7b, 2, 0x08, 0x13,
57+
0xd1, 52, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x18, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x47, 0x00, 0x56, 0x00, 0x90, 0x00, 0xe5, 0x01, 0x68, 0x01, 0xd5, 0x01, 0xd7, 0x02, 0x36, 0x02, 0xa6, 0x02, 0xee, 0x03, 0x48, 0x03, 0xa0, 0x03, 0xba, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xe0, 0x03, 0xea, 0x03, 0xfa, 0x03, 0xff,
58+
0xd2, 52, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x18, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x47, 0x00, 0x56, 0x00, 0x90, 0x00, 0xe5, 0x01, 0x68, 0x01, 0xd5, 0x01, 0xd7, 0x02, 0x36, 0x02, 0xa6, 0x02, 0xee, 0x03, 0x48, 0x03, 0xa0, 0x03, 0xba, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xe0, 0x03, 0xea, 0x03, 0xfa, 0x03, 0xff,
59+
0xd3, 52, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x18, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x47, 0x00, 0x56, 0x00, 0x90, 0x00, 0xe5, 0x01, 0x68, 0x01, 0xd5, 0x01, 0xd7, 0x02, 0x36, 0x02, 0xa6, 0x02, 0xee, 0x03, 0x48, 0x03, 0xa0, 0x03, 0xba, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xe0, 0x03, 0xea, 0x03, 0xfa, 0x03, 0xff,
60+
0xd4, 52, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x18, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x47, 0x00, 0x56, 0x00, 0x90, 0x00, 0xe5, 0x01, 0x68, 0x01, 0xd5, 0x01, 0xd7, 0x02, 0x36, 0x02, 0xa6, 0x02, 0xee, 0x03, 0x48, 0x03, 0xa0, 0x03, 0xba, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xe0, 0x03, 0xea, 0x03, 0xfa, 0x03, 0xff,
61+
0xd5, 52, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x18, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x47, 0x00, 0x56, 0x00, 0x90, 0x00, 0xe5, 0x01, 0x68, 0x01, 0xd5, 0x01, 0xd7, 0x02, 0x36, 0x02, 0xa6, 0x02, 0xee, 0x03, 0x48, 0x03, 0xa0, 0x03, 0xba, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xe0, 0x03, 0xea, 0x03, 0xfa, 0x03, 0xff,
62+
0xd6, 52, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x18, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x47, 0x00, 0x56, 0x00, 0x90, 0x00, 0xe5, 0x01, 0x68, 0x01, 0xd5, 0x01, 0xd7, 0x02, 0x36, 0x02, 0xa6, 0x02, 0xee, 0x03, 0x48, 0x03, 0xa0, 0x03, 0xba, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xe0, 0x03, 0xea, 0x03, 0xfa, 0x03, 0xff,
63+
0x3a, 1, 0x66,
64+
0x3a, 1, 0x66,
65+
0x11, 0x80, 120,
66+
0x29, 0x0,
67+
0, // trailing NUL for Python bytes() representation
68+
};
69+
MP_DEFINE_BYTES_OBJ_WITH_NULL(display_init_byte_obj, display_init_sequence);
70+
71+
static const char i2c_bus_init_sequence[] = {
72+
2, 3, 0xf1, // set GPIO direction
73+
2, 2, 0, // disable all output inversion
74+
0, // trailing NUL for Python bytes() representation
75+
};
76+
MP_DEFINE_BYTES_OBJ_WITH_NULL(i2c_init_byte_obj, i2c_bus_init_sequence);
77+
78+
static const mcu_pin_obj_t *red_pins[] = {
79+
&pin_GPIO1, &pin_GPIO2, &pin_GPIO42, &pin_GPIO41, &pin_GPIO40
80+
};
81+
static const mcu_pin_obj_t *green_pins[] = {
82+
&pin_GPIO21, &pin_GPIO8, &pin_GPIO18, &pin_GPIO45, &pin_GPIO38, &pin_GPIO39
83+
};
84+
static const mcu_pin_obj_t *blue_pins[] = {
85+
&pin_GPIO10, &pin_GPIO11, &pin_GPIO12, &pin_GPIO13, &pin_GPIO14
86+
};
87+
void board_init(void) {
88+
dotclockframebuffer_framebuffer_obj_t *framebuffer = &allocate_display_bus_or_raise()->dotclock;
89+
framebuffer->base.type = &dotclockframebuffer_framebuffer_type;
90+
91+
common_hal_dotclockframebuffer_framebuffer_construct(
92+
framebuffer,
93+
/* de */ &pin_GPIO17,
94+
/* vsync */ &pin_GPIO3,
95+
/* hsync */ &pin_GPIO46,
96+
/* dclk */ &pin_GPIO9,
97+
/* data */ red_pins, MP_ARRAY_SIZE(red_pins), green_pins, MP_ARRAY_SIZE(green_pins), blue_pins, MP_ARRAY_SIZE(blue_pins),
98+
/* frequency */ 12000000,
99+
/* width x height */ 480, 480,
100+
/* horizontal: pulse, back & front porch, idle */ 13, 20, 40, false,
101+
/* vertical: pulse, back & front porch, idle */ 15, 20, 40, false,
102+
/* de_idle_high */ false,
103+
/* pclk_active_high */ true,
104+
/* pclk_idle_high */ false,
105+
/* overscan_left */ 0
106+
);
107+
108+
framebufferio_framebufferdisplay_obj_t *disp = &allocate_display_or_raise()->framebuffer_display;
109+
disp->base.type = &framebufferio_framebufferdisplay_type;
110+
common_hal_framebufferio_framebufferdisplay_construct(
111+
disp,
112+
framebuffer,
113+
0,
114+
true
115+
);
116+
117+
busio_i2c_obj_t i2c;
118+
i2c.base.type = &busio_i2c_type;
119+
common_hal_busio_i2c_construct(&i2c, DEFAULT_I2C_BUS_SCL, DEFAULT_I2C_BUS_SDA, 400000, 255);
120+
const int i2c_device_address = 32;
121+
122+
dotclockframebuffer_ioexpander_spi_bus spibus = {
123+
.bus = &i2c,
124+
.i2c_device_address = i2c_device_address,
125+
.i2c_write_size = 2,
126+
.addr_reg_shadow = { .u32 = 1 }, // GPIO data at register 1
127+
.cs_mask = 0x100 << 1, // data payload is at byte 2
128+
.mosi_mask = 0x100 << 3,
129+
.clk_mask = 0x100 << 2,
130+
};
131+
132+
static const mp_buffer_info_t bufinfo_display_init = { (void *)display_init_sequence, sizeof(display_init_sequence) - 1 };
133+
static const mp_buffer_info_t bufinfo_i2c_bus_init = { (void *)i2c_bus_init_sequence, sizeof(i2c_bus_init_sequence) - 1 };
134+
dotclockframebuffer_ioexpander_send_init_sequence(&spibus, &bufinfo_i2c_bus_init, &bufinfo_display_init);
135+
136+
common_hal_busio_i2c_deinit(&i2c);
137+
}
138+
139+
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#pragma once
8+
9+
#include "py/objstr.h"
10+
11+
extern mp_obj_str_t display_init_byte_obj, i2c_init_byte_obj;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#pragma once
8+
9+
// Micropython setup
10+
11+
#define MICROPY_HW_BOARD_NAME "Espressif-ESP32-S3-LCD-EV-Board_v1.5"
12+
#define MICROPY_HW_MCU_NAME "ESP32S3"
13+
14+
#define MICROPY_HW_NEOPIXEL (&pin_GPIO4)
15+
16+
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO47)
17+
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO48)
18+
19+
// UART pins attached to the USB-serial converter chip
20+
#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO43)
21+
#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO44)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
USB_VID = 0x303A
2+
USB_PID = 0x7011
3+
USB_PRODUCT = "ESP32-S3-EV-LCD-Board_v1.5"
4+
USB_MANUFACTURER = "Espressif"
5+
6+
IDF_TARGET = esp32s3
7+
8+
CIRCUITPY_ESP_FLASH_MODE = qio
9+
CIRCUITPY_ESP_FLASH_FREQ = 80m
10+
CIRCUITPY_ESP_FLASH_SIZE = 16MB
11+
12+
CIRCUITPY_ESP_PSRAM_SIZE = 8MB
13+
CIRCUITPY_ESP_PSRAM_MODE = opi
14+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
15+
16+
CIRCUITPY_DOTCLOCKFRAMEBUFFER = 1
17+
UF2_BOOTLOADER = 0
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "py/objtuple.h"
8+
#include "boards/espressif_esp32s3_lcd_ev_v1.5/board.h"
9+
#include "shared-bindings/board/__init__.h"
10+
#include "shared-module/displayio/__init__.h"
11+
12+
static const mp_rom_map_elem_t tft_io_expander_table[] = {
13+
{ MP_ROM_QSTR(MP_QSTR_i2c_address), MP_ROM_INT(0x20)},
14+
{ MP_ROM_QSTR(MP_QSTR_gpio_address), MP_ROM_INT(1)},
15+
{ MP_ROM_QSTR(MP_QSTR_gpio_data_len), MP_ROM_INT(1)},
16+
{ MP_ROM_QSTR(MP_QSTR_gpio_data), MP_ROM_INT(0xF1)},
17+
{ MP_ROM_QSTR(MP_QSTR_cs_bit), MP_ROM_INT(1)},
18+
{ MP_ROM_QSTR(MP_QSTR_mosi_bit), MP_ROM_INT(3)},
19+
{ MP_ROM_QSTR(MP_QSTR_clk_bit), MP_ROM_INT(2)},
20+
{ MP_ROM_QSTR(MP_QSTR_i2c_init_sequence), &i2c_init_byte_obj},
21+
};
22+
MP_DEFINE_CONST_DICT(tft_io_expander_dict, tft_io_expander_table);
23+
24+
static const mp_rom_obj_tuple_t tft_r_pins = {
25+
{&mp_type_tuple},
26+
5,
27+
{
28+
MP_ROM_PTR(&pin_GPIO1),
29+
MP_ROM_PTR(&pin_GPIO2),
30+
MP_ROM_PTR(&pin_GPIO42),
31+
MP_ROM_PTR(&pin_GPIO41),
32+
MP_ROM_PTR(&pin_GPIO40),
33+
}
34+
};
35+
36+
static const mp_rom_obj_tuple_t tft_g_pins = {
37+
{&mp_type_tuple},
38+
6,
39+
{
40+
MP_ROM_PTR(&pin_GPIO21),
41+
MP_ROM_PTR(&pin_GPIO8),
42+
MP_ROM_PTR(&pin_GPIO18),
43+
MP_ROM_PTR(&pin_GPIO45),
44+
MP_ROM_PTR(&pin_GPIO38),
45+
MP_ROM_PTR(&pin_GPIO39),
46+
}
47+
};
48+
49+
static const mp_rom_obj_tuple_t tft_b_pins = {
50+
{&mp_type_tuple},
51+
5,
52+
{
53+
MP_ROM_PTR(&pin_GPIO10),
54+
MP_ROM_PTR(&pin_GPIO11),
55+
MP_ROM_PTR(&pin_GPIO12),
56+
MP_ROM_PTR(&pin_GPIO13),
57+
MP_ROM_PTR(&pin_GPIO14),
58+
}
59+
};
60+
61+
static const mp_rom_map_elem_t tft_pins_table[] = {
62+
{ MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO17) },
63+
{ MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO3) },
64+
{ MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO46) },
65+
{ MP_ROM_QSTR(MP_QSTR_dclk), MP_ROM_PTR(&pin_GPIO9) },
66+
{ MP_ROM_QSTR(MP_QSTR_red), MP_ROM_PTR(&tft_r_pins) },
67+
{ MP_ROM_QSTR(MP_QSTR_green), MP_ROM_PTR(&tft_g_pins) },
68+
{ MP_ROM_QSTR(MP_QSTR_blue), MP_ROM_PTR(&tft_b_pins) },
69+
};
70+
MP_DEFINE_CONST_DICT(tft_pins_dict, tft_pins_table);
71+
72+
static const mp_rom_map_elem_t tft_timings_table[] = {
73+
{ MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(6500000) }, // nominal 16MHz, but display is unstable/tears at that frequency
74+
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(480) },
75+
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(480) },
76+
{ MP_ROM_QSTR(MP_QSTR_hsync_pulse_width), MP_ROM_INT(13) },
77+
{ MP_ROM_QSTR(MP_QSTR_hsync_front_porch), MP_ROM_INT(20) },
78+
{ MP_ROM_QSTR(MP_QSTR_hsync_back_porch), MP_ROM_INT(40) },
79+
{ MP_ROM_QSTR(MP_QSTR_hsync_idle_low), MP_ROM_FALSE },
80+
{ MP_ROM_QSTR(MP_QSTR_vsync_pulse_width), MP_ROM_INT(15) },
81+
{ MP_ROM_QSTR(MP_QSTR_vsync_front_porch), MP_ROM_INT(20) },
82+
{ MP_ROM_QSTR(MP_QSTR_vsync_back_porch), MP_ROM_INT(40) },
83+
{ MP_ROM_QSTR(MP_QSTR_vsync_idle_low), MP_ROM_FALSE },
84+
{ MP_ROM_QSTR(MP_QSTR_de_idle_high), MP_ROM_FALSE },
85+
{ MP_ROM_QSTR(MP_QSTR_pclk_active_high), MP_ROM_FALSE },
86+
{ MP_ROM_QSTR(MP_QSTR_pclk_idle_high), MP_ROM_FALSE },
87+
};
88+
MP_DEFINE_CONST_DICT(tft_timings_dict, tft_timings_table);
89+
90+
static const mp_rom_map_elem_t board_module_globals_table[] = {
91+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
92+
93+
{ MP_ROM_QSTR(MP_QSTR_TFT_PINS), MP_ROM_PTR(&tft_pins_dict) },
94+
{ MP_ROM_QSTR(MP_QSTR_TFT_TIMINGS), MP_ROM_PTR(&tft_timings_dict) },
95+
{ MP_ROM_QSTR(MP_QSTR_TFT_IO_EXPANDER), MP_ROM_PTR(&tft_io_expander_dict) },
96+
{ MP_ROM_QSTR(MP_QSTR_TFT_INIT_SEQUENCE), &display_init_byte_obj},
97+
98+
{ MP_ROM_QSTR(MP_QSTR_I2S_SCK), MP_ROM_PTR(&pin_GPIO16) },
99+
{ MP_ROM_QSTR(MP_QSTR_I2S_MCLK), MP_ROM_PTR(&pin_GPIO5) },
100+
{ MP_ROM_QSTR(MP_QSTR_I2S_WS), MP_ROM_PTR(&pin_GPIO7) },
101+
{ MP_ROM_QSTR(MP_QSTR_I2S_SDO), MP_ROM_PTR(&pin_GPIO6) },
102+
103+
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
104+
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
105+
106+
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(DEFAULT_I2C_BUS_SCL) },
107+
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(DEFAULT_I2C_BUS_SDA) },
108+
109+
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display) },
110+
111+
// boot mode button can be used in SW as well
112+
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) },
113+
114+
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
115+
};
116+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#
2+
# Espressif IoT Development Framework Configuration
3+
#
4+
#
5+
# Component config
6+
#
7+
#
8+
# LWIP
9+
#
10+
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3-lcd-ev-v1.5"
11+
# end of LWIP
12+
13+
# end of Component config
14+
15+
# end of Espressif IoT Development Framework Configuration

0 commit comments

Comments
 (0)