Skip to content

Commit 4670181

Browse files
pblxptrhenrikbrixandersen
authored andcommitted
boards: seeed: Add support for XIAO ESP32S3 Sense
The Seeed Studio XIAO ESP32S3 Sense board is a board based on the XIAO ESP32S3 board with a soldered B2B connector that allows to connect an extension board with a camera sensor, microphone and the sdcard slot. Signed-off-by: Patryk Biel <[email protected]>
1 parent c4fcf56 commit 4670181

11 files changed

+351
-143
lines changed

boards/seeed/xiao_esp32s3/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33

44
config HEAP_MEM_POOL_ADD_SIZE_BOARD
55
int
6-
default 4096 if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU
6+
default 4096 if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU || BOARD_XIAO_ESP32S3_ESP32S3_PROCPU_SENSE
77
default 256 if BOARD_XIAO_ESP32S3_ESP32S3_APPCPU

boards/seeed/xiao_esp32s3/Kconfig.xiao_esp32s3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55

66
config BOARD_XIAO_ESP32S3
77
select SOC_ESP32S3_WROOM_N8R8
8-
select SOC_ESP32S3_PROCPU if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU
8+
select SOC_ESP32S3_PROCPU if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU || BOARD_XIAO_ESP32S3_ESP32S3_PROCPU_SENSE
99
select SOC_ESP32S3_APPCPU if BOARD_XIAO_ESP32S3_ESP32S3_APPCPU

boards/seeed/xiao_esp32s3/board.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@ board:
44
vendor: seeed
55
socs:
66
- name: esp32s3
7+
variants:
8+
- name: 'sense'
9+
cpucluster: 'procpu'
40.4 KB
Loading

boards/seeed/xiao_esp32s3/doc/index.rst

Lines changed: 82 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,28 @@
1-
.. zephyr:board:: xiao_esp32s3
1+
.. _xiao_esp32s3:
2+
3+
XIAO ESP32S3/XIAO ESP32S3 Sense
4+
###############################
25

36
Overview
47
********
58

6-
Seeed Studio XIAO ESP32S3 is an IoT mini development board based on the
9+
Seeed Studio XIAO ESP32S3 and XIAO ESP32S3 Sense are IoT mini development boards based on the
710
Espressif ESP32-S3 WiFi/Bluetooth dual-mode chip.
811

912
For more details see the `Seeed Studio XIAO ESP32S3`_ wiki page.
1013

14+
.. figure:: img/xiao_esp32s3.jpg
15+
:align: center
16+
:alt: XIAO ESP32S3
17+
18+
XIAO ESP32S3
19+
20+
.. figure:: img/xiao-esp32s3-sense.png
21+
:align: center
22+
:alt: XIAO ESP32S3 Sense
23+
24+
XIAO ESP32S3 Sense
25+
1126
Hardware
1227
********
1328

@@ -21,6 +36,8 @@ and Bluetooth® Low Energy (Bluetooth LE). It consists of high-performance dual-
2136
(Xtensa® 32-bit LX7), a low power coprocessor, a Wi-Fi baseband, a Bluetooth LE baseband,
2237
RF module, and numerous peripherals.
2338

39+
Additionally, Sense variant integrates a OV2640 camera sensor, microphone and sdcard slot.
40+
2441
Supported Features
2542
==================
2643

@@ -57,6 +74,8 @@ Current Zephyr's XIAO ESP32S3 board supports the following features:
5774
+------------+------------+-------------------------------------+
5875
| GDMA | on-chip | dma |
5976
+------------+------------+-------------------------------------+
77+
| LCD_CAM | on-chip | lcd_cam |
78+
+------------+------------+-------------------------------------+
6079

6180
Connections and IOs
6281
===================
@@ -67,7 +86,7 @@ The board uses a standard XIAO pinout, the default pin mapping is the following:
6786
:align: center
6887
:alt: XIAO ESP32S3 Pinout
6988

70-
XIAO ESP32S3 Pinout
89+
XIAO ESP32S3 and XIAO ESP32S3 Sense Pinout
7190

7291
Prerequisites
7392
-------------
@@ -174,19 +193,41 @@ The only difference is the structure of the build directory.
174193
Build and flash applications as usual (see :ref:`build_an_application` and
175194
:ref:`application_run` for more details).
176195

177-
.. zephyr-app-commands::
178-
:zephyr-app: samples/hello_world
179-
:board: xiao_esp32s3/esp32s3/procpu
180-
:goals: build
196+
.. tabs::
197+
198+
.. group-tab:: XIAO ESP32S3
199+
200+
.. zephyr-app-commands::
201+
:zephyr-app: samples/hello_world
202+
:board: xiao_esp32s3/esp32/procpu
203+
:goals: build
204+
205+
.. group-tab:: XIAO ESP32S3 Sense
206+
207+
.. zephyr-app-commands::
208+
:zephyr-app: samples/hello_world
209+
:board: xiao_esp32s3/esp32/procpu/sense
210+
:goals: build
181211

182212
The usual ``flash`` target will work with the ``xiao_esp32s3`` board
183213
configuration. Here is an example for the :zephyr:code-sample:`hello_world`
184214
application.
185215

186-
.. zephyr-app-commands::
187-
:zephyr-app: samples/hello_world
188-
:board: xiao_esp32s3/esp32s3/procpu
189-
:goals: flash
216+
.. tabs::
217+
218+
.. group-tab:: XIAO ESP32S3
219+
220+
.. zephyr-app-commands::
221+
:zephyr-app: samples/hello_world
222+
:board: xiao_esp32s3/esp32/procpu
223+
:goals: flash
224+
225+
.. group-tab:: XIAO ESP32S3 Sense
226+
227+
.. zephyr-app-commands::
228+
:zephyr-app: samples/hello_world
229+
:board: xiao_esp32s3/esp32/procpu/sense
230+
:goals: flash
190231

191232
Open the serial monitor using the following command:
192233

@@ -213,17 +254,39 @@ Further documentation can be obtained from the SoC vendor in `JTAG debugging for
213254

214255
Here is an example for building the :zephyr:code-sample:`hello_world` application.
215256

216-
.. zephyr-app-commands::
217-
:zephyr-app: samples/hello_world
218-
:board: xiao_esp32s3/esp32/procpu
219-
:goals: build flash
257+
.. tabs::
258+
259+
.. group-tab:: XIAO ESP32S3
260+
261+
.. zephyr-app-commands::
262+
:zephyr-app: samples/hello_world
263+
:board: xiao_esp32s3/esp32/procpu
264+
:goals: debug
265+
266+
.. group-tab:: XIAO ESP32S3 Sense
267+
268+
.. zephyr-app-commands::
269+
:zephyr-app: samples/hello_world
270+
:board: xiao_esp32s3/esp32/procpu/sense
271+
:goals: debug
220272

221273
You can debug an application in the usual way. Here is an example for the :zephyr:code-sample:`hello_world` application.
222274

223-
.. zephyr-app-commands::
224-
:zephyr-app: samples/hello_world
225-
:board: xiao_esp32s3/esp32/procpu
226-
:goals: debug
275+
.. tabs::
276+
277+
.. group-tab:: XIAO ESP32S3
278+
279+
.. zephyr-app-commands::
280+
:zephyr-app: samples/hello_world
281+
:board: xiao_esp32s3/esp32/procpu
282+
:goals: debug
283+
284+
.. group-tab:: XIAO ESP32S3 Sense
285+
286+
.. zephyr-app-commands::
287+
:zephyr-app: samples/hello_world
288+
:board: xiao_esp32s3/esp32/procpu/sense
289+
:goals: debug
227290

228291
References
229292
**********

boards/seeed/xiao_esp32s3/xiao_esp32s3-pinctrl.dtsi

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,38 @@
4141
};
4242
};
4343

44+
i2c1_default: i2c1_default {
45+
group1 {
46+
pinmux = <I2C1_SDA_GPIO40>,
47+
<I2C1_SCL_GPIO39>;
48+
bias-pull-up;
49+
drive-open-drain;
50+
output-high;
51+
};
52+
};
53+
54+
lcd_cam_default: lcd_cam_default {
55+
group1 {
56+
pinmux = <LCD_CAM_CAM_CLK_GPIO10>;
57+
output-enable;
58+
};
59+
group2 {
60+
pinmux = <LCD_CAM_V_SYNC_CAM_GPIO38>,
61+
<LCD_CAM_H_ENABLE_CAM_GPIO47>,
62+
<LCD_CAM_CAM_PCLK_GPIO13>,
63+
<LCD_CAM_DATA_IN0_GPIO15>,
64+
<LCD_CAM_DATA_IN1_GPIO17>,
65+
<LCD_CAM_DATA_IN2_GPIO18>,
66+
<LCD_CAM_DATA_IN3_GPIO16>,
67+
<LCD_CAM_DATA_IN4_GPIO14>,
68+
<LCD_CAM_DATA_IN5_GPIO12>,
69+
<LCD_CAM_DATA_IN6_GPIO11>,
70+
<LCD_CAM_DATA_IN7_GPIO48>;
71+
input-enable;
72+
bias-disable;
73+
};
74+
};
75+
4476
twai_default: twai_default {
4577
group1 {
4678
pinmux = <TWAI_TX_GPIO3>,

boards/seeed/xiao_esp32s3/xiao_esp32s3_procpu.dts

Lines changed: 1 addition & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -5,130 +5,9 @@
55
*/
66

77
/dts-v1/;
8-
9-
#include <espressif/esp32s3/esp32s3_wroom_n8r8.dtsi>
10-
#include "xiao_esp32s3-pinctrl.dtsi"
11-
#include "seeed_xiao_connector.dtsi"
8+
#include "xiao_esp32s3_procpu_common.dtsi"
129

1310
/ {
1411
model = "Seeed Xiao ESP32S3 PROCPU";
1512
compatible = "seeed,xiao-esp32s3";
16-
17-
chosen {
18-
zephyr,sram = &sram0;
19-
zephyr,console = &usb_serial;
20-
zephyr,shell-uart = &usb_serial;
21-
zephyr,flash = &flash0;
22-
zephyr,code-partition = &slot0_partition;
23-
zephyr,bt-hci = &esp32_bt_hci;
24-
};
25-
26-
aliases {
27-
i2c-0 = &i2c0;
28-
watchdog0 = &wdt0;
29-
led0 = &led0;
30-
};
31-
32-
leds {
33-
compatible = "gpio-leds";
34-
led0: led_0 {
35-
gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
36-
label = "BUILTIN LED";
37-
};
38-
};
39-
40-
};
41-
42-
&usb_serial {
43-
status = "okay";
44-
};
45-
46-
&uart0 {
47-
status = "okay";
48-
current-speed = <115200>;
49-
pinctrl-0 = <&uart0_default>;
50-
pinctrl-names = "default";
51-
};
52-
53-
&i2c0 {
54-
status = "okay";
55-
clock-frequency = <I2C_BITRATE_STANDARD>;
56-
pinctrl-0 = <&i2c0_default>;
57-
pinctrl-names = "default";
58-
};
59-
60-
&trng0 {
61-
status = "okay";
62-
};
63-
64-
&spi2 {
65-
#address-cells = <1>;
66-
#size-cells = <0>;
67-
status = "okay";
68-
pinctrl-0 = <&spim2_default>;
69-
pinctrl-names = "default";
70-
};
71-
72-
&gpio0 {
73-
status = "okay";
74-
};
75-
76-
&gpio1 {
77-
status = "okay";
78-
};
79-
80-
&wdt0 {
81-
status = "okay";
82-
};
83-
84-
&twai {
85-
pinctrl-0 = <&twai_default>;
86-
pinctrl-names = "default";
87-
};
88-
89-
&timer0 {
90-
status = "okay";
91-
};
92-
93-
&timer1 {
94-
status = "okay";
95-
};
96-
97-
&flash0 {
98-
status = "okay";
99-
partitions {
100-
compatible = "fixed-partitions";
101-
#address-cells = <1>;
102-
#size-cells = <1>;
103-
104-
boot_partition: partition@0 {
105-
label = "mcuboot";
106-
reg = <0x00000000 0x0000F000>;
107-
read-only;
108-
};
109-
110-
slot0_partition: partition@10000 {
111-
label = "image-0";
112-
reg = <0x00010000 0x00100000>;
113-
};
114-
115-
slot1_partition: partition@110000 {
116-
label = "image-1";
117-
reg = <0x00110000 0x00100000>;
118-
};
119-
120-
scratch_partition: partition@210000 {
121-
label = "image-scratch";
122-
reg = <0x00210000 0x00040000>;
123-
};
124-
125-
storage_partition: partition@250000 {
126-
label = "storage";
127-
reg = <0x00250000 0x00006000>;
128-
};
129-
};
130-
};
131-
132-
&esp32_bt_hci {
133-
status = "okay";
13413
};

0 commit comments

Comments
 (0)