ESP-Hosted-MCU Slave example
This document details the ESP-Hosted MCU Slave Example, demonstrating the slave firmware that provides Wi-Fi and Bluetooth connectivity to host MCUs via ESP32 series co-processors.
Overview
The slave firmware enables host MCUs to utilize the Wi-Fi and Bluetooth capabilities of ESP32 series chips through SDIO, SPI, or UART interfaces. This minimal example focuses on basic connectivity; however, advanced features like Network Split and Host Power Save can be configured for optimized network traffic and power management.
Supported Co-processors and Transports
The following table summarizes the supported co-processors and transport communication buses between the slave and host. This example specifically utilizes SDIO as the transport and ESP32-C6 as the slave co-processor.
| Transport Supported | SDIO | SPI Full-Duplex | SPI Half-Duplex | UART |
|---|---|---|---|---|
| Co-Processors Supported | ||||
| ESP32 | ✓ | ✓ | × | ✓ |
| ESP32-C2 | × | ✓ | ✓ | ✓ |
| ESP32-C3 | × | ✓ | ✓ | ✓ |
| ESP32-C5 | ✓ | ✓ | ✓ | ✓ |
| ESP32-C6/C61 | ✓ | ✓ | ✓ | ✓ |
| ESP32-S2 | × | ✓ | ✓ | ✓ |
| ESP32-S3 | × | ✓ | ✓ | ✓ |
Example Hardware Connections
This example uses the SDIO interface. The default SDIO pin connections for the ESP32-C6 slave are as follows:
SDIO Interface (Default for ESP32-P4-Function-EV-Board)
| Signal | GPIO | Notes |
|---|---|---|
| CLK | 19 | Clock |
| CMD | 18 | Command |
| D0 | 20 | Data 0 |
| D1 | 21 | Data 1 |
| D2 | 22 | Data 2 |
| D3 | 23 | Data 3 |
| Reset | EN | Reset input |
For detailed SDIO hardware connection requirements, refer to the official documentation at https://github.com/espressif/esp-hosted-mcu/blob/main/docs/sdio.md#3-hardware-considerations. The GPIO pins and transport can be configured as explained in later sections.
Quick Start Guide
1. Obtain the Slave Example
Execute the following commands to retrieve the slave example:
idf.py create-project-from-example "espressif/esp_hosted:slave"
cd slave
2. Set Up ESP-IDF
It is presumed that ESP-IDF has already been set up. If not, please proceed with the setup using one of the following options:
Option 1: Installer Way
-
Windows
- Install and set up ESP-IDF on Windows as documented in the Standard Setup of Toolchain for Windows.
- Use the ESP-IDF Powershell Command Prompt for subsequent commands.
-
Linux or macOS
- For bash:
bash docs/setup_esp_idf__latest_stable__linux_macos.sh - For fish:
fish docs/setup_esp_idf__latest_stable__linux_macos.fish
- For bash:
Option 2: Manual Way
Please follow the ESP-IDF Get Started Guide for manual installation.
3. Set Target
Set the target co-processor using the command below:
idf.py set-target esp32c6
Tip
You can customize the target co-processor by replacing
esp32c6with your desired ESP32 series chip.
4. Customizing Configuration: Transport and Features
This is optional step. By default, SDIO transport is pre-configured.
You can access the configuration menu to choose desired configuration and features using:
idf.py menuconfig
The default configuration tree looks like this:
Example Configuration
└── Bus Config in between Host and Co-processor
└── Transport layer
└── Select transport: SDIO/SPI-Full-Duplex/SPI-Half-Duplex/UART
└── <Other optional features>
Tip
You can optinally customize the transport layer (SDIO, SPI Full-Duplex, SPI Half-Duplex, or UART), their GPIOs in use and other optional features within this menu.
5. Build and Flash
Build and flash the firmware to your device using the commands below, replacing <SERIAL_PORT> with your device's serial port:
idf.py build
idf.py -p <SERIAL_PORT> flash monitor
Tip
You can customize the serial port (
<SERIAL_PORT>) to match your specific hardware connection.