#bare-metal #esp32 #board #embassy #bsp #packages #focus

esp-bsp

Rust Bare Metal Board Support Packages for ESP32 related boards with focus on Embassy Async

6 releases (3 breaking)

new 0.4.1 Dec 20, 2024
0.4.0 Dec 20, 2024
0.3.1 Dec 18, 2024
0.2.0 Jan 30, 2024
0.1.0 Jan 18, 2024

#280 in Embedded development

Download history 4/week @ 2024-09-20 1/week @ 2024-09-27 2/week @ 2024-12-06 167/week @ 2024-12-13

169 downloads per month

MIT/Apache

38KB
1K SLoC

ESP-BSP-RS

Rust Bare Metal Board Support Packages (BSP) for ESP32-based boards with focus on Embassy Async.

List of Supported Boards

Actively Supported Boards

Older boards

These boards are available in BSP for backward compatibility, but not recommended for new projects:

Usage

Adding the BSP to Your Project

To add the ESP-BSP crate to your project:

cargo add esp-bsp

Board-Specific Features

Ensure the correct feature flag is enabled in your Cargo.toml:

[features]
esp-bsp = { version = "0.4.0", features = ["esp32-s3-box-3"] }

Board Initialization

Use the prelude for a streamlined initialization process.

use esp_bsp::prelude::*;

#[entry]
fn main() -> ! {
    let peripherals = esp_hal::init(esp_hal::Config::default());
    esp_alloc::psram_allocator!(peripherals.PSRAM, esp_hal::psram);

    let mut delay = Delay::new();

    // Initialize I2C for peripherals like accelerometers
    let i2c = i2c_init!(peripherals);

    // Initialize SPI with DMA for LCD display
    let spi = lcd_dma_spi!(peripherals);

    // Create the display interface
    let di = lcd_display_interface!(peripherals, spi);

    // Initialize the display
    let mut display = lcd_display!(peripherals, di)
        .init(&mut delay)
        .unwrap();

    // Turn on the backlight
    lcd_backlight_init!(peripherals);

    // Your application code here
    println!("Display initialized!");
    loop {}
}

Simplified Display Initialization

With esp_bsp::prelude::*, the macros ensure correct initialization per board based on the enabled feature.

Examples

Changelog

0.4.1

  • LCD_H_RES, LCD_V_RES, LCD_BYTES_PER_PIXEL, LCD_MEMORY_SIZE are exported via prelude

0.4.0

  • Renamed BSPs
  • Added BSPs for common boards for ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6

0.3.0

  • Unified BSP initialization using shared macros.
  • Introduced prelude for simplified imports and initialization.

0.2.0

  • renamed

No runtime deps

Features