uploaded 5 months ago
Generig Board Support Package

readme

# BSP: Generic

[![Component Registry](https://components.espressif.com/components/espressif/esp_bsp_generic/badge.svg)](https://components.espressif.com/components/espressif/esp_bsp_generic)

This is a generic BSP, which is configurable from `menuconfig`. The generic BSP can provide consistent API for simple boards, such as Espressif's DevKits. Predefined settings for selected DevKits are in [generic_button_led](examples/generic_button_led).

Supported features:
- I2C
- SPIFFS
- SD card
- Buttons
- LEDs

# Build with predefined configuration

Predefined configurations are saved in [generic_button_led](examples/generic_button_led) example.

```
    idf.py -p COM4 -D "SDKCONFIG_DEFAULTS=sdkconfig.esp32_s3_devkitc_1" flash monitor
```

# Example usage

## I2C

1. Set GPIOs for I2C in `menuconfig`
    - `BSP_I2C_GPIO_SCL`
    - `BSP_I2C_GPIO_SDA`

2. Set I2C number in `menuconfig`
    - `BSP_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.)

## SPIFFS

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();
```

## SD card

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.

## Buttons

1. Set count of buttons in `menuconfig`
    - `BSP_BUTTONS_NUM` (max 5)

2. Set button type and other values by type for each button in `menuconfig`
    - `BSP_BUTTON_x_TYPE`
    - `BSP_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](https://components.espressif.com/components/espressif/button). For more information, please look into guide for this component.

## LEDS

1. Set count of LEDs in `menuconfig`
    - `BSP_LEDS_NUM` (max 5)

2. Set type for all LEDs in `menuconfig`
    - `BSP_LED_TYPE` (GPIO / Adressable LED)

3. For GPIO LEDs set pin and level for each LED in `menuconfig`
    - `BSP_LED_x_GPIO`
    - `BSP_LED_x_LEVEL`

3. For addressable RBG LEDs set pin and peripheral in `menuconfig`
    - `BSP_LED_RGB_GPIO`
    - `BSP_LED_RGB_BACKEND`

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](https://components.espressif.com/components/espressif/led_indicator) with [led_strip](https://components.espressif.com/components/espressif/led_strip) component. For more information, please look into guides for these components.



readme of generic_button_led example

                                        
                                        # BSP: Generic Button and LED Example

This is a minimalistic button and LED example with using Generig BSP.
In few function calls it sets up the use button and LED.

Available LEDs and buttons are initialized with preconfigured settings. The first LED is set to breathing and the first button can change LED blinking effect.

# Build with predefined configuration

Predefined configurations are saved in [generic_button_led](examples/generic_button_led) example.

```
    idf.py -p COM4 -D "SDKCONFIG_DEFAULTS=sdkconfig.esp32_s3_devkitc_1" flash monitor
```

**Note:** If you changing configuration, please remove `build` folder and `sdkconfig` file before build with new configuration.

                                    

Links

Supports all targets

License: Apache-2.0

To add this component to your project, run:

idf.py add-dependency "espressif/esp_bsp_generic^1.0.0~1"

or download archive

Dependencies

  • espressif/button >=2.5,<4.0
  • ESP-IDF >=4.4.2
  • espressif/led_indicator >=0.7,<=0.8
  • Examples:

    generic_button_led

    more details

    To create a project from this example, run:

    idf.py create-project-from-example "espressif/esp_bsp_generic^1.0.0~1:generic_button_led"

    or download archive

    Stats

    • Downloaded in total
      Downloaded in total 3.8k times
    • Downloaded this version
      This version: 13 times

    Badge

    espressif/esp_bsp_generic version: 1.0.0~1
    |