| HOW TO USE API | EXAMPLES |
|---|
|
This is a generic BSP, which is configurable from |
|
Supported features:
- I2C
- SPIFFS
- SD card
- Buttons
- LEDs
Predefined configurations are saved in generic_button_led example.
idf.py -p COM4 -D "SDKCONFIG_DEFAULTS=sdkconfig.esp32_s3_devkitc_1" flash monitor
-
Set GPIOs for I2C in
menuconfigBSP_I2C_GPIO_SCLBSP_I2C_GPIO_SDA
-
Set I2C number in
menuconfigBSP_I2C_NUM
Example code:
/* Initialization */
bsp_i2c_init();
/* Example I2C write with BSP_I2C_NUM */
i2c_master_write_to_device(BSP_I2C_NUM, 0x10, value, sizeof(value), 1000 / portTICK_PERIOD_MS);
...
bsp_i2c_deinit();
Note: The BSP automatically initialize I2C, when need it for some component (LCD touch, audio, etc.)
Example code:
/* Mount SPIFFS partition */
bsp_spiffs_mount();
/* Use file system read/write with BSP_SPIFFS_MOUNT_POINT */
FILE *in = fopen(BSP_SD_MOUNT_POINT"/text.txt", "rb");
...
bsp_spiffs_unmount();
Example code:
/* Mount SD card partition */
bsp_sdcard_mount();
/* Use file system read/write with BSP_SD_MOUNT_POINT */
FILE *in = fopen(BSP_SD_MOUNT_POINT"/text.txt", "rb");
...
bsp_sdcard_unmount();
Note: This API is available only in MCUs, which have SD MMC peripheral.
-
Set count of buttons in
menuconfigBSP_BUTTONS_NUM(max 5)
-
Set button type and other values by type for each button in
menuconfigBSP_BUTTON_x_TYPEBSP_BUTTON_x_GPIO(for GPIO button)BSP_BUTTON_x_LEVEL(for GPIO button)BSP_BUTTON_x_ADC_CHANNEL(for ADC button)BSP_BUTTON_x_ADC_VALUE(for ADC button)
Example code:
/* Button callback */
static void btn_handler(void *button_handle, void *usr_data)
{
int button_pressed = (int)usr_data;
ESP_LOGI(TAG, "Button pressed: %d", button_pressed);
}
/* Initialize all buttons and register callback for them */
button_handle_t btns[BSP_BUTTON_NUM];
ESP_ERROR_CHECK(bsp_iot_button_create(btns, NULL, BSP_BUTTON_NUM));
for (int i = 0; i < BSP_BUTTON_NUM; i++) {
ESP_ERROR_CHECK(iot_button_register_cb(btns[i], BUTTON_PRESS_DOWN, btn_handler, (void *) i));
}
For button handling is used component iot_button. For more information, please look into guide for this component.
-
Set count of LEDs in
menuconfigBSP_LEDS_NUM(max 5)
-
Set type for all LEDs in
menuconfigBSP_LED_TYPE(GPIO / Adressable RGB LED / Classic RGB)
-
For GPIO LEDs set pin and level for each LED in
menuconfigBSP_LED_x_GPIOBSP_LED_x_LEVEL
-
For addressable RBG LEDs set pin and peripheral in
menuconfigBSP_LED_RGB_GPIOBSP_LED_RGB_BACKEND
-
For classic RBG LEDs set pins for all colors and level in
menuconfigBSP_LED_RGB_RED_GPIOBSP_LED_RGB_GREEN_GPIOBSP_LED_RGB_BLUE_GPIOBSP_LED_RGB_CLASSIC_LEVEL
Example code:
/* Initialize all LEDs */
led_indicator_handle_t leds[BSP_LED_NUM];
ESP_ERROR_CHECK(bsp_led_indicator_create(leds, NULL, BSP_LED_NUM));
/* Set LED color for first LED (only for addressable RGB LEDs) */
led_indicator_set_rgb(leds[0], SET_IRGB(0, 0x00, 0x64, 0x64));
/* Start effect for each LED (predefined: BSP_LED_ON, BSP_LED_OFF, BSP_LED_BLINK_FAST, BSP_LED_BLINK_SLOW, BSP_LED_BREATHE_FAST, BSP_LED_BREATHE_SLOW) */
led_indicator_start(leds[0], BSP_LED_BREATHE_SLOW);
For LEDs handling is used component led_indicator with led_strip component. For more information, please look into guides for these components.
-
Enable display in
menuconfigBSP_DISPLAY_ENABLED
-
Select communication interface in
menuconfigBSP_DISPLAY_INTERFACE_(only SPI is supported)
-
Set communication pins in
menuconfigBSP_DISPLAY_SCLK_GPIOBSP_DISPLAY_MOSI_GPIOBSP_DISPLAY_MISO_GPIOBSP_DISPLAY_CS_GPIOBSP_DISPLAY_DC_GPIOBSP_DISPLAY_RST_GPIOBSP_DISPLAY_BACKLIGHT_GPIO
-
Select display driver in
menuconfig(one of these)BSP_DISPLAY_DRIVER_ST7789BSP_DISPLAY_DRIVER_ILI9341BSP_DISPLAY_DRIVER_GC9A01
-
Set right rotation of the screen in
menuconfigBSP_DISPLAY_ROTATION_SWAP_XYBSP_DISPLAY_ROTATION_MIRROR_XBSP_DISPLAY_ROTATION_MIRROR_Y
-
Set other display params in
menuconfigBSP_DISPLAY_CMD_BITSBSP_DISPLAY_PARAM_BITSBSP_DISPLAY_PIXEL_CLOCKBSP_DISPLAY_WIDTHBSP_DISPLAY_HEIGHTBSP_DISPLAY_BRIGHTNESS_LEDC_CHBSP_LCD_DRAW_BUF_HEIGHTBSP_LCD_DRAW_BUF_DOUBLE
-
Enable display touch in
menuconfigBSP_TOUCH_ENABLED
-
Select communication interface in
menuconfigBSP_TOUCH_INTERFACE_(only I2C is supported)
-
Set communication pins in
menuconfigBSP_TOUCH_RST_GPIOBSP_TOUCH_INT_GPIO
-
Select display driver in
menuconfig(one of these)BSP_TOUCH_DRIVER_TT21100BSP_TOUCH_DRIVER_GT1151BSP_TOUCH_DRIVER_GT911BSP_TOUCH_DRIVER_CST816SBSP_TOUCH_DRIVER_FT5X06
-
Set right rotation of the screen in
menuconfigBSP_TOUCH_ROTATION_SWAP_XYBSP_TOUCH_ROTATION_MIRROR_XBSP_TOUCH_ROTATION_MIRROR_Y
Example code:
/* Initialize display, touch and LVGL */
bsp_display_start();
/* Set display brightness to 100% */
bsp_display_backlight_on();
bsp_display_lock(0);
/* === Your LVGL code here === */
bsp_display_unlock();
| Available | Capability | Controller/Codec | Component | Version |
|---|---|---|---|---|
| ✔️ | 📟 DISPLAY | st7789, ili9341, gc9a01 | idf espressif/esp_lcd_ili9341 espressif/esp_lcd_gc9a01 |
>=5.2 ^2.0.1 ^2 |
| ✔️ | ⚫ LVGL_PORT | espressif/esp_lvgl_port | ^2 | |
| ✔️ | ☝️ TOUCH | tt21100, gt1151, gt911, cst816s, ft5x06 | espressif/esp_lcd_touch_tt21100 espressif/esp_lcd_touch_gt1151 espressif/esp_lcd_touch_gt911 espressif/esp_lcd_touch_cst816s espressif/esp_lcd_touch_ft5x06 |
^1 ^1 ^1 ^1 ^1 |
| ✔️ | 🔘 BUTTONS | espressif/button | ^4 | |
| ✔️ | 💡 LED | idf espressif/led_indicator |
>=5.2 ~2.0 |
|
| ❌ | 🎵 AUDIO | |||
| ❌ | 🔈 AUDIO_SPEAKER | |||
| ❌ | 🎤 AUDIO_MIC | |||
| ❌ | 💾 SDCARD | |||
| ❌ | 🎮 IMU |
| Example | Description | Try with ESP Launchpad |
|---|---|---|
| Generic Button and LED Example | Minimal example using the Generic BSP: button and LED control | - |
