Skip to content

Commit

Permalink
board: m5stack_m5dial: Add support for M5Dial IoT devkit
Browse files Browse the repository at this point in the history
Adding support for M5stack M5Dial IoT development kit.

M5Dial features 1,28" round display, rotary button,
beeper, touch-screen, real-time-clock.

Signed-off-by: Martin Kiepfer <mrmarteng@teleschirm.org>
  • Loading branch information
Martin Kiepfer committed Dec 29, 2023
1 parent b1532ce commit 9286669
Show file tree
Hide file tree
Showing 12 changed files with 528 additions and 0 deletions.
12 changes: 12 additions & 0 deletions boards/xtensa/m5stack_m5dial/Kconfig.board
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# M5Stack M5Dial board configuration

# Copyright (c) 2023 Martin Kiepfer <mrmarteng@teleschirm.org>
# SPDX-License-Identifier: Apache-2.0

config BOARD_M5STACK_M5DIAL
bool "M5Stack M5Dial IoT Development Board"
depends on SOC_SERIES_ESP32S3

choice SOC_PART_NUMBER
default SOC_ESP32S3_FN8
endchoice
35 changes: 35 additions & 0 deletions boards/xtensa/m5stack_m5dial/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# M5Stack M5Dial board configuration
# Copyright (c) 2023 Martin Kiepfer <mrmarteng@teleschirm.org>
# SPDX-License-Identifier: Apache-2.0

if BOARD_M5STACK_M5DIAL

config BOARD
default "m5stack_m5dial"
depends on BOARD_M5STACK_M5DIAL

config ENTROPY_GENERATOR
default y

config HEAP_MEM_POOL_SIZE
default 98304 if WIFI
default 65536 if BT
default 4096

config KERNEL_MEM_POOL
default y

choice BT_HCI_BUS_TYPE
default BT_ESP32 if BT
endchoice

config INPUT_FT5336_INTERRUPT
default y if INPUT

config INPUT
default y

config LV_COLOR_16_SWAP
default y if LVGL

endif # BOARD_M5STACK_M5DIAL
9 changes: 9 additions & 0 deletions boards/xtensa/m5stack_m5dial/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# SPDX-License-Identifier: Apache-2.0

if(NOT "${OPENOCD}" MATCHES "^${ESPRESSIF_TOOLCHAIN_PATH}/.*")
set(OPENOCD OPENOCD-NOTFOUND)
endif()
find_program(OPENOCD openocd PATHS ${ESPRESSIF_TOOLCHAIN_PATH}/openocd-esp32/bin NO_DEFAULT_PATH)

include(${ZEPHYR_BASE}/boards/common/esp32.board.cmake)
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
Binary file not shown.
137 changes: 137 additions & 0 deletions boards/xtensa/m5stack_m5dial/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
.. _m5stack_m5dial:

M5Stack M5Dial
##############

Overview
********

M5Stack M5Dial is an ESP32-based development board from M5Stack.

It features the following integrated components:

- ESP32-S3FN8 chip (240MHz dual core, Wi-Fi/BLE 5.0)
- 512KB of SRAM
- 384KB of ROM
- 8MB of Flash
- LCD IPS TFT 1,28", 240x240 round display
- WS1850S NFC/RFID
- RTC8563 RTC
- Rotary encoder
- Beeper

.. figure:: img/m5stack_m5dial.webp
:align: center
:alt: M5Stack M5Dial

M5Stack M5Dial


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

The Zephyr m5stack_m5dial board configuration supports the following hardware features:

+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port-polling; |
| | | serial port-interrupt |
+-----------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+
| I2C | on-chip | i2c |
+-----------+------------+-------------------------------------+
| SPI | on-chip | spi |
+-----------+------------+-------------------------------------+
| CLOCK | on-chip | reset and clock control |
+-----------+------------+-------------------------------------+
| COUNTER | on-chip | rtc |
+-----------+------------+-------------------------------------+
| WATCHDOG | on-chip | independent watchdog |
+-----------+------------+-------------------------------------+
| PWM | on-chip | pwm |
+-----------+------------+-------------------------------------+
| ADC | on-chip | adc |
+-----------+------------+-------------------------------------+
| DAC | on-chip | dac |
+-----------+------------+-------------------------------------+
| die-temp | on-chip | die temperature sensor |
+-----------+------------+-------------------------------------+


Start Application Development
*****************************

Before powering up your M5Stack M5Dial, please make sure that the board is in good
condition with no obvious signs of damage.

System requirements
===================

Prerequisites
-------------

Espressif HAL requires WiFi and Bluetooth binary blobs in order work. Run the command
below to retrieve those files.

.. code-block:: shell
west blobs fetch hal_espressif
.. note::

It is recommended running the command above after :file:`west update`.

Building & Flashing
-------------------

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: m5stack_m5dial
:goals: build

The usual ``flash`` target will work with the ``m5stack_m5dial`` board
configuration. Here is an example for the :ref:`hello_world`
application.

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: m5stack_m5dial
:goals: flash

The baud rate of 921600bps is set by default. If experiencing issues when flashing,
try using different values by using ``--esp-baud-rate <BAUD>`` option during
``west flash`` (e.g. ``west flash --esp-baud-rate 115200``).

You can also open the serial monitor using the following command:

.. code-block:: shell
west espressif monitor
After the board has automatically reset and booted, you should see the following
message in the monitor:

.. code-block:: console
***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx *****
Hello World! m5stack_m5dial
Debugging
---------

M5Stack M5Dial debugging is not supported due to pinout limitations.

Related Documents
*****************

- `M5Stack M5Dial schematic <https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/products/core/M5Dial/Sch_M5Dial.pdf>`_
- `ESP32S3 Datasheet <https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf>`_
17 changes: 17 additions & 0 deletions boards/xtensa/m5stack_m5dial/grove_connectors.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2023 Martin Kiepfer <mrmarteng@teleschirm.org>
* SPDX-License-Identifier: Apache-2.0
*/

/ {
grove_header: grove_header {
compatible = "grove-header";
#gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>;
gpio-map = <0 0 &gpio0 1 0>,
<1 0 &gpio0 2 0>;
};
};

grove_i2c1: &i2c1 {};
65 changes: 65 additions & 0 deletions boards/xtensa/m5stack_m5dial/m5stack_m5dial-pinctrl.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/*
* Copyright (c) 2023 Martin Kiepfer <mrmarteng@teleschirm.org>
*
* SPDX-License-Identifier: Apache-2.0
*/

#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32s3-pinctrl.h>
#include <zephyr/dt-bindings/pinctrl/esp32s3-gpio-sigmap.h>

&pinctrl {
uart0_default: uart0_default {
group1 {
pinmux = <UART0_TX_GPIO43>;
output-high;
};
group2 {
pinmux = <UART0_RX_GPIO44>;
bias-pull-up;
};
};

i2c0_default: i2c0_default {
group1 {
pinmux = <I2C0_SDA_GPIO13>,
<I2C0_SCL_GPIO15>;
bias-pull-up;
drive-open-drain;
output-high;
};
};

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

spim2_default: spim2_default {
group1 {
pinmux = <SPIM2_SCLK_GPIO6>,
<SPIM2_CSEL_GPIO7>;
};
group2 {
pinmux = <SPIM2_MOSI_GPIO5>;
output-low;
};

};

ledc0_default: ledc0_default {
group1 {
pinmux = <LEDC_CH0_GPIO9>;
output-enable;
};
group2 {
pinmux = <LEDC_CH1_GPIO3>;
output-enable;
};
};
};
Loading

0 comments on commit 9286669

Please sign in to comment.