Skip to content

espressif/esp-bsp

Repository files navigation

pre-commit

ESP-BSP: Espressif's Board Support Packages

HOW TO USE BOARDS EXAMPLES CONTRIBUTING LVGL port LCD drivers

This repository provides Board Support Packages (BSPs) for various Espressif and M5Stack development boards. Written in C, each BSP offers a unified and consistent API to simplify the initialization and use of common onboard peripherals such as displays, touch panels, audio codecs, SD cards, and selected sensors. The goal is to streamline development and reduce hardware-specific boilerplate, enabling faster prototyping and cleaner application code.

Main Purpose of BSP

  1. Simplify development on Espressif and M5Stack boards by providing ready-to-use peripheral initialization.
  2. Enable quick project startup on supported development boards, with an easy path to migrate to custom hardware.
  3. Facilitate cross-board development by offering a common API, making it easier to build and maintain projects for multiple boards.

Supported IDF versions

The following table shows the compatibility of this BSP with different ESP-IDF versions:

4.x 5.0 5.1 5.2 5.3 5.4 5.5
โŒ โŒ โœ”๏ธ โœ”๏ธ โœ”๏ธ โœ”๏ธ โœ”๏ธ

Supported Boards

Board name SoC Supported Features Photo
ESP-BOX-3 esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7210)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (st7789, ili9341)
๐ŸŽฎ IMU
๐Ÿ’พ uSD Card
โ˜๏ธ Display Touch (tt21100, gt911)
ESP32-C3-LCDKit esp32c3 ๐ŸŽต Audio
๐Ÿ”ˆ Audio Speaker
๐Ÿ“Ÿ LCD Display (gc9a01)
โšช Knob
๐Ÿ’ก LED
ESP32-LyraT esp32 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es8388)
๐Ÿ”ˆ Audio Speaker (es8388)
๐Ÿ”˜ Button
๐Ÿ’ก LED
๐Ÿ’พ uSD Card
ESP32-P4 Function EV Board esp32p4 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es8311)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ“Ÿ LCD Display (ek79007, ili9881c, lt8912b)
๐Ÿ’พ uSD Card
โ˜๏ธ Display Touch (gt911)
ESP32-S2-Kaluga Kit esp32s2 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es8311)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ”˜ Button
๐Ÿ“ท Camera
๐Ÿ“Ÿ LCD Display (st7789)
๐Ÿ’ก LED
ESP32-S3-EYE esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone
๐Ÿ”˜ Button
๐Ÿ“ท Camera
๐Ÿ“Ÿ LCD Display (st7789)
๐ŸŽฎ IMU
๐Ÿ’พ uSD Card
ESP32-S3-KORVO-1 esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7210)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ”˜ Button
๐Ÿ’ก LED
๐Ÿ’พ uSD Card
ESP32-S3-Korvo-2 esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7210)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ”˜ Button
๐Ÿ“ท Camera
๐Ÿ“Ÿ LCD Display (ili9341)
๐Ÿ’ก LED
๐Ÿ’พ uSD Card
โ˜๏ธ Display Touch (tt21100)
ESP32-S3-LCD-EV-Board esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7210)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display
โ˜๏ธ Display Touch
ESP32-S3-USB-OTG esp32s3 ๐Ÿ”‹ Battery
๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (st7789)
๐Ÿ’ก LED
๐Ÿ’พ uSD Card
DevKit BSP - ๐Ÿ”˜ Button
๐Ÿ’ก LED
Generic BSP - ๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (st7789, ili9341, gc9a01)
๐Ÿ’ก LED
โ˜๏ธ Display Touch (tt21100, gt1151, gt911, cst816s, ft5x06)
ESP-WROVER-KIT esp32 ๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (st7789)
๐Ÿ’ก LED
๐Ÿ’พ uSD Card
M5 Atom S3 esp32s3 ๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (gc9a01)
M5Dial esp32s3 ๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (gc9a01)
โšช Knob
โ˜๏ธ Display Touch (ft5x06)
M5Stack Core esp32 ๐Ÿ”ˆ Audio Speaker
๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (ili9341)
๐Ÿ’พ uSD Card
M5Stack Core2 esp32 ๐ŸŽต Audio
๐Ÿ”ˆ Audio Speaker
๐Ÿ“Ÿ LCD Display (ili9341)
๐Ÿ’พ uSD Card
โ˜๏ธ Display Touch (ft5x06)
M5Stack CoreS3 esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7210)
๐Ÿ”ˆ Audio Speaker (aw88298)
๐Ÿ“ท Camera
๐Ÿ“Ÿ LCD Display (ili9341)
๐Ÿ’พ uSD Card
โ˜๏ธ Display Touch (ft5x06)

Deprecated Boards

Board name SoC Supported Features Photo
ESP-BOX esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7210)
๐Ÿ”ˆ Audio Speaker (es8311)
๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (st7789)
๐ŸŽฎ IMU
โ˜๏ธ Display Touch (tt21100)
ESP-BOX-Lite esp32s3 ๐ŸŽต Audio
๐ŸŽค Audio Microphone (es7243e)
๐Ÿ”ˆ Audio Speaker (es8156)
๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (st7789)
ESP32-Azure IoT Kit esp32 ๐Ÿ”˜ Button
๐Ÿ“Ÿ LCD Display (ssd1306)
๐ŸŽฎ IMU
๐Ÿ’ก LED
๐Ÿ’พ uSD Card
โšซ SENSOR_HUMIDITY
โšซ SENSOR_LIGHT
โšซ SENSOR_MAG
โšซ SENSOR_PRESSURE
โšซ SENSOR_TEMPERATURE

Examples

The best way to start with ESP-BSP is by trying one of the available examples on your board. Each example includes a README.md file listing supported boards and usage instructions.

Here is a summary of the available examples:

Example Description Supported Boards Try with ESP Launchpad
Audio Example Play and record WAV file
4 boardsesp32_lyrat
esp32_s2_kaluga_kit
esp32_s3_korvo_1
esp32_s3_korvo_2
Flash Example
Display Example Show an image on the screen with a simple startup animation (LVGL)
16 boardsesp-box
esp-box-3
esp-box-lite
esp32_c3_lcdkit
esp32_p4_function_ev_board
esp32_s2_kaluga_kit
esp32_s3_eye
esp32_s3_korvo_2
esp32_s3_lcd_ev_board
esp32_s3_usb_otg
esp_wrover_kit
m5_atom_s3
m5dial
m5stack_core
m5stack_core_2
m5stack_core_s3
Flash Example
Display, Audio and Photo Example Complex demo: browse files from filesystem and play/display JPEG, WAV, or TXT files (LVGL)
7 boardsesp-box
esp-box-3
esp-box-lite
esp32_s3_korvo_2
esp32_s3_lcd_ev_board
m5stack_core_2
m5stack_core_s3
Flash Example
Camera Example Stream camera output to display (LVGL)
4 boardsesp32_s2_kaluga_kit
esp32_s3_eye
esp32_s3_korvo_2
m5stack_core_s3
Flash Example
LVGL Benchmark Example Run LVGL benchmark tests
10 boardsesp-box
esp-box-3
esp-box-lite
esp32_p4_function_ev_board
esp32_s2_kaluga_kit
esp32_s3_eye
esp32_s3_korvo_2
esp32_s3_lcd_ev_board
m5dial
m5stack_core_s3
-
LVGL Demos Example Run the LVGL demo player - all LVGL examples are included (LVGL)
10 boardsesp-box
esp-box-3
esp-box-lite
esp32_p4_function_ev_board
esp32_s2_kaluga_kit
esp32_s3_eye
esp32_s3_korvo_2
esp32_s3_lcd_ev_board
m5dial
m5stack_core_s3
Flash Example
Display Rotation Example Rotate screen using buttons or an accelerometer (BSP_CAPS_IMU, if available)
9 boardsesp-box
esp-box-3
esp-box-lite
esp32_p4_function_ev_board
esp32_s3_korvo_2
esp32_s3_lcd_ev_board
m5dial
m5stack_core
m5stack_core_s3
Flash Example
Sensors Example Display sensor data on a monochrome screen (LVGL)
1 boardesp32_azure_iot_kit
Flash Example
USB HID Example USB HID demo (keyboard, mouse, or gamepad visualization using LVGL)
2 boardsesp32_p4_function_ev_board
esp32_s3_usb_otg
-
Generic Button and LED Example Minimal example using the Generic BSP: button and LED control
2 boardsesp_bsp_devkit
esp_bsp_generic
-
MQTT Example Collect sensor data and publish to an MQTT server
1 boardesp32_azure_iot_kit
-

BSP headers and options

  • bsp/name-of-the-bsp.h: Main include file of the BSP with public API
  • bsp/esp-bsp.h: Convenience include file with the same name for all BPSs
  • bsp/display.h and bsp/touch.h: Only for BSPs with LCD or touch controller. Contain low level initialization functions for usage without LVGL graphical library
    • By default, BSPs with display are shipped with LVGL, if you are interested in BSP without LVGL you can use BSP versions with noglib suffix (eg. esp32_s3_eye_noglib).

NOTE: There can be only one BSP in a single esp-idf project.

In a custom project

Packages from this repository are uploaded to the IDF component registry. You can add them to your project via idf.py add-dependency, e.g.

    idf.py add-dependency esp_wrover_kit==1.0.0

Recommendation for custom projects

When you want to use a BSP in a real project, it is highly recommended to disable configuration option CONFIG_BSP_ERROR_CHECK in menuconfig. You should check all returned error codes from all BSP functions you call. Otherwise, if the option CONFIG_BSP_ERROR_CHECK is enabled, any error encountered in a BSP will abort the program.

Compiling project for multiple BSPs

โš ๏ธ Experimental feature: This feature is under development!

A single project can be run on multiple different development boards, if the boards contain the features required by the project (such as audio, display, camera...). For this purpose, idf.py is extended by examples/bsp_ext.py which allows you to build an example for your specific BSP. Example command for display e.g.:

idf.py -D SDKCONFIG_DEFAULTS=sdkconfig.bsp.esp_wrover_kit build

In case you want to build locally for multiple boards at the same time, it is useful to have separate build directories for each BSP configuration. In order to achieve this, you can extend the above command like this:

idf.py -B build/wrover_kit -D SDKCONFIG_DEFAULTS=sdkconfig.bsp.esp_wrover_kit build

Note: This feature is not yet integrated to idf.py by default. If you want to use it, you must set your environmental variable IDF_EXTRA_ACTIONS_PATH to path to esp-bsp/examples/bsp_ext.py.

Copyrights and License

All original source code in this repository is Copyright (c) Espressif Systems (Shanghai) Co. Ltd., and is licensed under the Apache 2.0 license.

About

Board support components for Espressif development boards

Resources

Stars

Watchers

Forks

Languages