Skip to content

boards: seeed: Add support for XIAO ESP32S3 Sense #79334

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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
2 changes: 1 addition & 1 deletion boards/seeed/xiao_esp32s3/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@

config HEAP_MEM_POOL_ADD_SIZE_BOARD
int
default 4096 if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU
default 4096 if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU || BOARD_XIAO_ESP32S3_ESP32S3_PROCPU_SENSE
default 256 if BOARD_XIAO_ESP32S3_ESP32S3_APPCPU
2 changes: 1 addition & 1 deletion boards/seeed/xiao_esp32s3/Kconfig.xiao_esp32s3
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@

config BOARD_XIAO_ESP32S3
select SOC_ESP32S3_WROOM_N8R8
select SOC_ESP32S3_PROCPU if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU
select SOC_ESP32S3_PROCPU if BOARD_XIAO_ESP32S3_ESP32S3_PROCPU || BOARD_XIAO_ESP32S3_ESP32S3_PROCPU_SENSE
select SOC_ESP32S3_APPCPU if BOARD_XIAO_ESP32S3_ESP32S3_APPCPU
3 changes: 3 additions & 0 deletions boards/seeed/xiao_esp32s3/board.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ board:
vendor: seeed
socs:
- name: esp32s3
variants:
- name: 'sense'
cpucluster: 'procpu'
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
101 changes: 82 additions & 19 deletions boards/seeed/xiao_esp32s3/doc/index.rst
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
.. zephyr:board:: xiao_esp32s3
.. _xiao_esp32s3:

XIAO ESP32S3/XIAO ESP32S3 Sense
###############################

Overview
********

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

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

.. figure:: img/xiao_esp32s3.jpg
:align: center
:alt: XIAO ESP32S3

XIAO ESP32S3

.. figure:: img/xiao-esp32s3-sense.png
:align: center
:alt: XIAO ESP32S3 Sense

XIAO ESP32S3 Sense

Hardware
********

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

Additionally, Sense variant integrates a OV2640 camera sensor, microphone and sdcard slot.

Supported Features
==================

Expand Down Expand Up @@ -57,6 +74,8 @@ Current Zephyr's XIAO ESP32S3 board supports the following features:
+------------+------------+-------------------------------------+
| GDMA | on-chip | dma |
+------------+------------+-------------------------------------+
| LCD_CAM | on-chip | lcd_cam |
+------------+------------+-------------------------------------+

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

XIAO ESP32S3 Pinout
XIAO ESP32S3 and XIAO ESP32S3 Sense Pinout

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

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32s3/procpu
:goals: build
.. tabs::

.. group-tab:: XIAO ESP32S3

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu
:goals: build

.. group-tab:: XIAO ESP32S3 Sense

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu/sense
:goals: build

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

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32s3/procpu
:goals: flash
.. tabs::

.. group-tab:: XIAO ESP32S3

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu
:goals: flash

.. group-tab:: XIAO ESP32S3 Sense

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu/sense
:goals: flash

Open the serial monitor using the following command:

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

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

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu
:goals: build flash
.. tabs::

.. group-tab:: XIAO ESP32S3

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu
:goals: debug

.. group-tab:: XIAO ESP32S3 Sense

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu/sense
:goals: debug

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

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu
:goals: debug
.. tabs::

.. group-tab:: XIAO ESP32S3

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu
:goals: debug

.. group-tab:: XIAO ESP32S3 Sense

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: xiao_esp32s3/esp32/procpu/sense
:goals: debug

References
**********
Expand Down
32 changes: 32 additions & 0 deletions boards/seeed/xiao_esp32s3/xiao_esp32s3-pinctrl.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,38 @@
};
};

i2c1_default: i2c1_default {
group1 {
pinmux = <I2C1_SDA_GPIO40>,
<I2C1_SCL_GPIO39>;
bias-pull-up;
drive-open-drain;
output-high;
};
};

lcd_cam_default: lcd_cam_default {
group1 {
pinmux = <LCD_CAM_CAM_CLK_GPIO10>;
output-enable;
};
group2 {
pinmux = <LCD_CAM_V_SYNC_CAM_GPIO38>,
<LCD_CAM_H_ENABLE_CAM_GPIO47>,
<LCD_CAM_CAM_PCLK_GPIO13>,
<LCD_CAM_DATA_IN0_GPIO15>,
<LCD_CAM_DATA_IN1_GPIO17>,
<LCD_CAM_DATA_IN2_GPIO18>,
<LCD_CAM_DATA_IN3_GPIO16>,
<LCD_CAM_DATA_IN4_GPIO14>,
<LCD_CAM_DATA_IN5_GPIO12>,
<LCD_CAM_DATA_IN6_GPIO11>,
<LCD_CAM_DATA_IN7_GPIO48>;
input-enable;
bias-disable;
};
};

twai_default: twai_default {
group1 {
pinmux = <TWAI_TX_GPIO3>,
Expand Down
123 changes: 1 addition & 122 deletions boards/seeed/xiao_esp32s3/xiao_esp32s3_procpu.dts
Original file line number Diff line number Diff line change
Expand Up @@ -5,130 +5,9 @@
*/

/dts-v1/;

#include <espressif/esp32s3/esp32s3_wroom_n8r8.dtsi>
#include "xiao_esp32s3-pinctrl.dtsi"
#include "seeed_xiao_connector.dtsi"
#include "xiao_esp32s3_procpu_common.dtsi"

/ {
model = "Seeed Xiao ESP32S3 PROCPU";
compatible = "seeed,xiao-esp32s3";

chosen {
zephyr,sram = &sram0;
zephyr,console = &usb_serial;
zephyr,shell-uart = &usb_serial;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
zephyr,bt-hci = &esp32_bt_hci;
};

aliases {
i2c-0 = &i2c0;
watchdog0 = &wdt0;
led0 = &led0;
};

leds {
compatible = "gpio-leds";
led0: led_0 {
gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
label = "BUILTIN LED";
};
};

};

&usb_serial {
status = "okay";
};

&uart0 {
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};

&i2c0 {
status = "okay";
clock-frequency = <I2C_BITRATE_STANDARD>;
pinctrl-0 = <&i2c0_default>;
pinctrl-names = "default";
};

&trng0 {
status = "okay";
};

&spi2 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
pinctrl-0 = <&spim2_default>;
pinctrl-names = "default";
};

&gpio0 {
status = "okay";
};

&gpio1 {
status = "okay";
};

&wdt0 {
status = "okay";
};

&twai {
pinctrl-0 = <&twai_default>;
pinctrl-names = "default";
};

&timer0 {
status = "okay";
};

&timer1 {
status = "okay";
};

&flash0 {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000F000>;
read-only;
};

slot0_partition: partition@10000 {
label = "image-0";
reg = <0x00010000 0x00100000>;
};

slot1_partition: partition@110000 {
label = "image-1";
reg = <0x00110000 0x00100000>;
};

scratch_partition: partition@210000 {
label = "image-scratch";
reg = <0x00210000 0x00040000>;
};

storage_partition: partition@250000 {
label = "storage";
reg = <0x00250000 0x00006000>;
};
};
};

&esp32_bt_hci {
status = "okay";
};
Loading
Loading