1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/boards/common/esp32/include/board_common.h
Erik Ekman e3142c39f0 boards/esp32: add ESP32-Ethernet-Kit board
Mostly copied from esp32-wroom-kit and Ethernet part from
esp32-olimex-evb.

Ethernet and serial port has been tested (on v1.2 board).
2020-11-28 10:18:54 +01:00

189 lines
4.4 KiB
C

/*
* Copyright (C) 2018 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_common_esp32
* @brief Board definitions that are common for all ESP32 boards.
*
* This file contains board configurations that are valid for all ESP32.
*
* For detailed information about the configuration of ESP32 boards, see
* section \ref esp32_comm_periph "Common Peripherals".
*
* @author Gunar Schorcht <gunar@schorcht.net>
* @file
* @{
*/
#ifndef BOARD_COMMON_H
#define BOARD_COMMON_H
/* not required when compiling ESP32 vendor code parts */
#ifndef ESP32_IDF_CODE
#include <stdint.h>
#include "cpu.h"
#include "periph_conf.h"
#if MODULE_ARDUINO
#include "arduino_pinmap.h"
#endif
#include "periph/gpio.h"
#include "sdk_conf.h"
#if MODULE_MTD
#include "mtd.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name External clock crystal frequency (MHz)
*
* Most boards use a 40MHz crystal, including all those based on Espressif's
* WROOM-32 and WROVER-32 modules. Those that don't, like the SparkFun ESP32
* Thing (26MHz), must define ESP32_XTAL_FREQ appropriately in their board
* configuration.
*
* An obvious side effect of a mismatch is that the UART won't sync and the
* development terminal will show garbage instead of log output.
* @{
*/
#ifndef ESP32_XTAL_FREQ
#define ESP32_XTAL_FREQ (40)
#endif
/** @} */
/**
* @name LED configuration (three predefined LEDs at maximum)
*
* @note LEDx_ACTIVE value must be declared in board configuration.
* @{
*/
#if defined(LED0_PIN) || DOXYGEN
#define LED0_MASK (BIT(LED0_PIN))
#define LED0_ON (gpio_write(LED0_PIN, LED0_ACTIVE))
#define LED0_OFF (gpio_write(LED0_PIN, !LED0_ACTIVE))
#define LED0_TOGGLE (gpio_toggle(LED0_PIN))
#endif
#if defined(LED1_PIN) || DOXYGEN
#define LED1_MASK (BIT(LED1_PIN))
#define LED1_ON (gpio_write(LED1_PIN, LED1_ACTIVE))
#define LED1_OFF (gpio_write(LED1_PIN, !LED1_ACTIVE))
#define LED1_TOGGLE (gpio_toggle(LED1_PIN))
#endif
#if defined(LED2_PIN) || DOXYGEN
#define LED2_MASK (BIT(LED2_PIN))
#define LED2_ON (gpio_write(LED2_PIN, LED2_ACTIVE))
#define LED2_OFF (gpio_write(LED2_PIN, !LED2_ACTIVE))
#define LED2_TOGGLE (gpio_toggle(LED2_PIN))
#endif
/** @} */
/**
* @name STDIO configuration
* @{
*/
/**< Default baudrate of UART for stdio */
#ifndef STDIO_UART_BAUDRATE
#define STDIO_UART_BAUDRATE (115200)
#endif
/** @} */
#if MODULE_MTD || DOXYGEN
/**
* @name MTD system drive configuration
*
* Built-in SPI flash memory is used as MTD system drive.
* @{
*/
/**
* @brief MTD drive start address in SPI flash memory
*
* Defines the start address of the MTD system device in the SPI
* flash memory. It can be overridden by \ref esp32_app_spec_conf
* "application-specific board configuration"
*
* If the MTD start address is not defined or is 0, the first possible
* multiple of 0x100000 (1 MByte) is used in free SPI flash memory,
* which was determined from the partition table.
*/
#ifndef SPI_FLASH_DRIVE_START
#define SPI_FLASH_DRIVE_START 0
#endif
/** Default MTD drive definition */
#define MTD_0 mtd0
/** Pointer to the default MTD drive structure */
extern mtd_dev_t *mtd0;
/** @} */
#endif /* MODULE_MTD || DOXYGEN */
#if MODULE_SPIFFS || DOXYGEN
/**
* @name SPIFFS configuration for the system MTD device
*
* Configuration of the SPIFFS that can be used on the system MTD device.
* @{
*/
#define SPIFFS_ALIGNED_OBJECT_INDEX_TABLES 1
#define SPIFFS_READ_ONLY 0
#define SPIFFS_SINGLETON 0
#define SPIFFS_HAL_CALLBACK_EXTRA 1
#define SPIFFS_CACHE 1
/** @} */
#endif /* MODULE_SPIFFS || DOXYGEN */
/**
* @brief Initialize the hardware that is common for all ESP32 boards.
*
* This function has to be called from the board specific `board_init` function.
*/
void board_init_common(void);
/**
* @brief Print the board configuration in a human readable format
*/
void print_board_config(void);
#ifdef __cplusplus
} /* end extern "C" */
#endif
#else /* ESP32_IDF_CODE */
#ifndef DOXYGEN
#ifdef __cplusplus
extern "C"
#endif
/* declaration of `board_init_common` is required when compiling vendor code */
extern void board_init_common(void);
#ifdef __cplusplus
}
#endif
#endif /* DOXYGEN */
#endif /* ESP32_IDF_CODE */
#endif /* BOARD_COMMON_H */
/** @} */