Skip to content
Open
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: 2 additions & 0 deletions Documentation/applications/examples/lvgldemo/index.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _lvgldemo:

======================
``lvgldemo`` LVGL Demo
======================
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
=================
ESP32S3-WS-LCD128
=================

.. tags:: chip:esp32s3

.. figure:: ESP32-S3-Touch-LCD-1.28.jpg
:align: center

This board definition is a starting point for development with
`ESP32-S3-LCD-1.28 <https://www.waveshare.com/esp32-s3-lcd-1.28.htm>`__ and
`ESP32-S3-Touch-LCD-1.28 <https://www.waveshare.com/esp32-s3-touch-lcd-1.28.htm>`__
which are low-cost ($16/$22) open-source hardware designed by
`WaveShare <https://www.waveshare.com/>`_. High-performance Xtensa based
ESP32-S3 MCU, small size, onboard round 1.28" LCD display, capacitive touch
screen (Touch version only), Li-ion accumulator charge manager, 6-axis sensor
(3-axis accelerometer and 3-axis gyroscope), and quick module attachmend
1.27mm connectors (non-Touch version only), makes it a perfect candidate
for integration into your projects and products quickly.

.. list-table::
:width: 100%
:class: borderless

* - .. figure:: ESP32-S3-LCD-1.28-details-intro.jpg
:target: https://www.waveshare.com/wiki/ESP32-S3-LCD-1.28
:align: center

ESP32-S3-LCD-1.28.

- .. figure:: ESP32-S3-Touch-LCD-1.28-details-intro.jpg
:target: https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-1.28
:align: center

ESP32-S3-Touch-LCD-1.28.

These boards are almost identical. Touch version has touch screen,
while non-Touch version has two connectors exposing more GPIOs at the bottom,
thus slightly different signal routes. Because of that similarity, a single
board definition is provided by NuttX, while features and configuration
details are build time Kconfig selectable.

Both boards are based on existing :ref:`esp32s3` chip implementation.
WaveShare WIKI contians board details, generic examples, documentation, and
schematics for the
`ESP32-S3-LCD-1.28 <https://www.waveshare.com/wiki/ESP32-S3-LCD-1.28>`__ and
`ESP32-S3-Touch-LCD-1.28 <https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-1.28>`__.

.. note:: Implementation is experimental and still early stage of development!


Features
========

- ESP32-S3R2 Xtensa® 32-bit LX7 dual-core processor, up to 240MHz frequency.
- 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth® 5 (BLE) with onboard antenna.
- Built in 512KB of SRAM and 384KB ROM, on-chip 2MB PSRAM, external 16MB
W25Q128JVSIQ NOR Flash memory.
- USB-C connector and CH343P USB-to-UART converter (flashing, console).
- Onboard GC9A01A controlled round 1.28" 240×240 resolution 65K color LCD.
- Onboard QMI8658 6-axis IMU (3-axis accelerometer and 3-axis gyroscope).
- Onboard 3.7V MX1.25 lithium battery re/discharge header, ETA6096 charger.
- Touch version:

- CST816S capacitive touch display controller.
- 6 × GPIO exposed over SH1.0 connector.

- Non-Touch version:

- 32 x GPIO exposed over 2 x 2x10 1.27mm female connectors.


Pinouts
=======

- ESP32-S3-LCD-1.28:

.. figure:: ESP32-S3-LCD-1.28-details-inter.jpg
:align: center

- ESP32-S3-Touch-LCD-1.28:

.. figure:: ESP32-S3-Touch-LCD-1.28-details-inter.jpg
:align: center

Dimensions
==========

- ESP32-S3-LCD-1.28:

.. figure:: ESP32-S3-LCD-1.28-details-size.jpg
:align: center

- ESP32-S3-Touch-LCD-1.28:

.. figure:: ESP32-S3-Touch-LCD-1.28-details-size-1.jpg
:align: center

.. figure:: ESP32-S3-Touch-LCD-1.28-details-size-2.jpg
:align: center


Serial Console
==============

UART0 is by default used for the serial console. It connects to the on-board
CH343P converter and is available on the USB-C connector that can be also used
for firmware flashing.


Buttons
=======

Board Buttons
-------------

There are two buttons labeled BOOT and RESET. The RESET button is not available
to the software and can be used as manual hardware Reset trigger.
The BOOT button is connected to IO0 and on reset / power-on it triggers the
BootROM serial bootloader when pressed. After reset the BOOT button can be used
as software input.


Configurations
==============

All of the available configurations provide basic testing utilities or serve
as an example starting point for your own projects.
Use them by running the following commands::

$ ./tools/configure.sh esp32s3-ws-lcd128:<config_name>
$ make flash ESPTOOL_PORT=<serial_port_device> -j

Notes:

- ``<config_name>`` is the name of board configuration you want to use
(i.e. nsh, lvgl). Then use a serial console terminal like ``cu`` or
``minicom`` configured to 115200 8N1.
- ``<serial_port_device>`` is usually ``/dev/ttyUSB0`` or ``/dev/cuaU0``
depending on the OS you are using.
- On BSD systems use GNU Make (``gmake``) in place of ``make``.

coremark
--------

Provides CoreMark benchmarking utility.

notouch-lvgl
------------

This is a demonstration of the LVGL graphics library running on the NuttX's
GC9A01A LCD driver. Demo will launch itself on boot and you should see it on
the screen right away. This configuration uses the :ref:`lvgldemo` application.

.. note:: This configuration has ``CONFIG_ARCH_BOARD_ESP32S3_WS_LCD128_NOTOUCH``
set. It selects LCD pins valid for the Non-Touch board variant.

nsh
---

Basic NuttShell configuration (console enabled in UART0, exposed via
USB connection by means of CH343P converter, at 115200 bps).

qmi8658
-------

Provides QMI8658 IMU ``uorb_listener`` example.

ostest
------

Provides ``ostest`` NuttX self-test utility.

touch-lvgl
----------

This is a demonstration of the LVGL graphics library running on the NuttX's
GC9A01A LCD driver. Demo will launch itself on boot and you should see it on
the screen right away. This configuration uses the :ref:`lvgldemo` application.

.. note:: This configuration has ``CONFIG_ARCH_BOARD_ESP32S3_WS_LCD128_TOUCH``
set. It selects LCD pins valid for the Touch board variant.

.. warning:: Touch screen driver is not yet implemented! Work in progress.

watchdog
--------

Provides watchdog testing utilities.
2 changes: 2 additions & 0 deletions Documentation/platforms/xtensa/esp32s3/index.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _esp32s3:

==================
Espressif ESP32-S3
==================
Expand Down
33 changes: 33 additions & 0 deletions boards/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,35 @@ config ARCH_BOARD_ESP32S3_LCKFB_SZPI
select ARCH_HAVE_BUTTONS
select ARCH_HAVE_IRQBUTTONS if ESPRESSIF_GPIO_IRQ

config ARCH_BOARD_ESP32S3_WS_LCD128
bool "WaveShare ESP32-S3-(Touch)-LCD-1.28"
depends on ARCH_CHIP_ESP32S3CUSTOM
select ESP32S3_UART0
select ESP32S3_SPI2
select SPI_CMDDATA
select LCD
select LCD_DEV
select LCD_GC9A01
---help---
This board comes in two variants:
1. Touch screen marked ESP32-S3-Touch-LCD-1.28 [1].
2. No-Touch marked ESP32-S3-LCD-1.28 [2].

WaveShare ESP32-S3-(Touch)-LCD-1.28 board uses up to 240MHz dual core LX7
32-bit ESP32-S3R2 SoC with WiFi (802.11b/g/n) and Bluetooh 5 (LE) using
onboard antenna, 512KB SRAM, 384KB ROM, onboard 2MB PSRAM, external 16MB
NOR Flash (W25Q128JVSIQ). Flashing and console over CH434P UART-to-USB-C.
Board is equipped with round 240x240 GCA01 65K color SPI LCD, CST819 I2C
touch screen (touch variant), QMI8658 6-axis IMU, ETA6096 3.7V lithium
charger (MX1.25 connector), reset and boot buttons.

Touch varian provides 6 GPIO over SH-1.0 12 pin connector (goldpin ended
cable attached). Non-touch variant provides two 2x10 1.27mm female board
connectors.

[1] www.waveshare.com/esp32-s3-lcd-1.28.htm
[2] www.waveshare.com/esp32-s3-touch-lcd-1.28.htm

config ARCH_BOARD_ESP32C6_DEVKITC
bool "Espressif ESP32-C6-DevKitC-1"
depends on ARCH_CHIP_ESP32C6WROOM1
Expand Down Expand Up @@ -3628,6 +3657,7 @@ config ARCH_BOARD
default "esp32s3-box" if ARCH_BOARD_ESP32S3_BOX
default "esp32s3-korvo-2" if ARCH_BOARD_ESP32S3_KORVO_2
default "lckfb-szpi-esp32s3" if ARCH_BOARD_ESP32S3_LCKFB_SZPI
default "esp32s3-ws-lcd128" if ARCH_BOARD_ESP32S3_WS_LCD128
default "esp32c6-devkitc" if ARCH_BOARD_ESP32C6_DEVKITC
default "esp32c6-devkitm" if ARCH_BOARD_ESP32C6_DEVKITM
default "esp32c6-xiao" if ARCH_BOARD_ESP32C6_XIAO
Expand Down Expand Up @@ -4917,6 +4947,9 @@ endif
if ARCH_BOARD_ESP32S3_LHCBIT
source "boards/xtensa/esp32s3/esp32s3-lhcbit/Kconfig"
endif
if ARCH_BOARD_ESP32S3_WS_LCD128
source "boards/xtensa/esp32s3/esp32s3-ws-lcd128/Kconfig"
endif
if ARCH_BOARD_ESP32S3_XIAO
source "boards/xtensa/esp32s3/esp32s3-xiao/Kconfig"
endif
Expand Down
38 changes: 38 additions & 0 deletions boards/xtensa/esp32s3/esp32s3-ws-lcd128/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

if ARCH_BOARD_ESP32S3_WS_LCD128

choice
prompt "BOARD VARIANT"
default ARCH_BOARD_ESP32S3_WS_LCD128_NOTOUCH
---help---
There are two variants of the board with [1] and without [2] touch screen.
These boards also have slightly different signals and capabilities.
Non-touch variant has two connectors with many more GPIO available.

[1] https://www.waveshare.com/esp32-s3-touch-lcd-1.28.htm
[2] https://www.waveshare.com/esp32-s3-lcd-1.28.htm

NOTE: Touch screen driver is not yet implemented!

config ARCH_BOARD_ESP32S3_WS_LCD128_NOTOUCH
bool "NO-TOUCH ESP32-S3-LCD-1.28"
select LCD
---help---
Mark this choice if your board has no touch screen module installed.
www.waveshare.com/esp32-s3-lcd-1.28.htm

config ARCH_BOARD_ESP32S3_WS_LCD128_TOUCH
bool "TOUCH ESP32-S3-Touch-LCD-1.28"
help
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
help
---help---

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aaargh mea cupla o_O

Mark this choice if your board has touch screen module installed.
www.waveshare.com/esp32-s3-touch-lcd-1.28.htm

NOTE: Touch screen driver is not yet implemented!

endchoice
Comment on lines +6 to +36
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @cederom , please correct the style of the Kconfig files.

  • add TAB
  • help -> ---help---

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed thanks! :-)


endif # ARCH_BOARD_ESP32S3_WS_LCD128
44 changes: 44 additions & 0 deletions boards/xtensa/esp32s3/esp32s3-ws-lcd128/configs/coremark/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_ARCH_LEDS is not set
# CONFIG_NDEBUG is not set
CONFIG_ARCH="xtensa"
CONFIG_ARCH_BOARD="esp32s3-ws-lcd128"
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_BOARD_ESP32S3_WS_LCD128=y
CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3CUSTOM=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQ_TO_NDX=y
CONFIG_ARCH_MINIMAL_VECTORTABLE_DYNAMIC=y
CONFIG_ARCH_NUSER_INTERRUPTS=2
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_BENCHMARK_COREMARK=y
CONFIG_BOARD_LOOPSPERMSEC=16717
CONFIG_DEBUG_CUSTOMOPT=y
CONFIG_DEBUG_OPTLEVEL="-O3"
CONFIG_ESP32S3_UART0=y
CONFIG_FS_PROCFS=y
CONFIG_IDLETHREAD_STACKSIZE=3072
CONFIG_INIT_ENTRYPOINT="coremark_main"
CONFIG_INIT_STACKSIZE=3072
CONFIG_INTELHEX_BINARY=y
CONFIG_PREALLOC_TIMERS=4
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_WAITPID=y
CONFIG_SMP=y
CONFIG_SMP_NCPUS=2
CONFIG_START_DAY=6
CONFIG_START_MONTH=12
CONFIG_START_YEAR=2011
CONFIG_SYSLOG_BUFFER=y
CONFIG_UART0_SERIAL_CONSOLE=y
Loading
Loading