CPU specific definitions and functions for peripheral handling. More...
CPU specific definitions and functions for peripheral handling.
Definition in file periph_cpu.h.
#include <stdint.h>#include <limits.h>#include "eagle_soc.h"#include "cpu_conf.h"#include "macros/units.h" Include dependency graph for periph_cpu.h:
 Include dependency graph for periph_cpu.h:Go to the source code of this file.
| Data Structures | |
| struct | i2c_conf_t | 
| I2C configuration structure.  More... | |
| struct | spi_conf_t | 
| SPI device configuration.  More... | |
| struct | uart_conf_t | 
| UART device configuration.  More... | |
| Macros | |
| #define | GPIO_UNDEF ((gpio_t)(UINT_MAX)) | 
| Definition of a fitting UNDEF value. | |
| #define | GPIO_PIN(x, y) | 
| Define a CPU specific GPIO pin generator macro. | |
| #define | PORT_GPIO (0) | 
| Available GPIO ports on ESP8266. | |
| #define | GPIO_PIN_NUMOF (17) | 
| Define CPU specific number of GPIO pins. | |
| #define | PERIPH_TIMER_PROVIDES_SET | 
| Prevent shared timer functions from being used. | |
| #define | CPUID_LEN (4U) | 
| Length of the CPU_ID in octets. | |
| #define | CPU_CYCLES_PER_LOOP (5) | 
| CPU cycles per busy wait loop. | |
| GPIO configuration | |
| #define | HAVE_GPIO_T | 
| Override the default gpio_t type definition. | |
| Predefined GPIO names | |
| #define | GPIO0 (GPIO_PIN(PORT_GPIO, 0)) | 
| #define | GPIO1 (GPIO_PIN(PORT_GPIO, 1)) | 
| #define | GPIO2 (GPIO_PIN(PORT_GPIO, 2)) | 
| #define | GPIO3 (GPIO_PIN(PORT_GPIO, 3)) | 
| #define | GPIO4 (GPIO_PIN(PORT_GPIO, 4)) | 
| #define | GPIO5 (GPIO_PIN(PORT_GPIO, 5)) | 
| #define | GPIO6 (GPIO_PIN(PORT_GPIO, 6)) | 
| #define | GPIO7 (GPIO_PIN(PORT_GPIO, 7)) | 
| #define | GPIO8 (GPIO_PIN(PORT_GPIO, 8)) | 
| #define | GPIO9 (GPIO_PIN(PORT_GPIO, 9)) | 
| #define | GPIO10 (GPIO_PIN(PORT_GPIO, 10)) | 
| #define | GPIO11 (GPIO_PIN(PORT_GPIO, 11)) | 
| #define | GPIO12 (GPIO_PIN(PORT_GPIO, 12)) | 
| #define | GPIO13 (GPIO_PIN(PORT_GPIO, 13)) | 
| #define | GPIO14 (GPIO_PIN(PORT_GPIO, 14)) | 
| #define | GPIO15 (GPIO_PIN(PORT_GPIO, 15)) | 
| #define | GPIO16 (GPIO_PIN(PORT_GPIO, 16)) | 
| I2C configuration | |
| ESP8266 provides up to two bit-banging I2C interfaces. The board-specific configuration of the I2C interface I2C_DEV(n) requires the definition of I2Cn_SPEED, the bus speed, I2Cn_SCL, the GPIO used as SCL signal, and I2Cn_SDA, the GPIO used as SDA signal, where n can be 0 or 1. If they are not defined, the I2C interface I2C_DEV(n) is not used. 
 I2C_NUMOF is determined automatically from board-specific peripheral definitions of I2Cn_SPEED, I2Cn_SCK, and I2Cn_SDA. | |
| #define | I2C_NUMOF_MAX (2) | 
| Maximum number of I2C interfaces that can be used by board definitions. | |
| #define | PERIPH_I2C_NEED_READ_REG | 
| i2c_read_reg required | |
| #define | PERIPH_I2C_NEED_READ_REGS | 
| i2c_read_regs required | |
| #define | PERIPH_I2C_NEED_WRITE_REG | 
| i2c_write_reg required | |
| #define | PERIPH_I2C_NEED_WRITE_REGS | 
| i2c_write_regs required | |
| PWM configuration | |
| The hardware implementation of ESP8266 PWM supports only frequencies as power of two. Therefore a software implementation of one PWM device PWM_DEV(0) with up to 8 PWM channels (PWM_CHANNEL_NUM_MAX) is used. The GPIOs that can be used as PWM channels are defined by PWM0_GPIOS in board definition. 
 | |
| #define | PWM_NUMOF_MAX (1) | 
| Maximum number of PWM devices. | |
| #define | PWM_CHANNEL_NUM_MAX (8) | 
| Maximum number of channels per PWM device. | |
| RNG configuration | |
| #define | RNG_DATA_REG_ADDR (0x3ff20e44) | 
| The address of the register for accessing the hardware RNG. | |
| RTT and RTC configuration | |
| #define | RTT_FREQUENCY (312500UL) | 
| #define | RTT_MAX_VALUE (0xFFFFFFFFUL) | 
| SPI configuration | |||||||||||
| ESP8266 has two SPI controllers: 
 Thus, HSPI is the only SPI interface that is available for peripherals. It is exposed as RIOT's SPI_DEV(0). The pin configuration of the HSPI interface is fixed as shown in following table. 
 The only pin definition that can be overridden by an application-specific board configuration is the CS signal defined by SPI0_CS0. | |||||||||||
| #define | HAVE_SPI_CLK_T | ||||||||||
| Override SPI clock speed values. | |||||||||||
| #define | SPI_NUMOF_MAX (1) | ||||||||||
| Maximum number of SPI interfaces. | |||||||||||
| #define | PERIPH_SPI_NEEDS_TRANSFER_BYTE | ||||||||||
| requires function spi_transfer_byte | |||||||||||
| #define | PERIPH_SPI_NEEDS_TRANSFER_REG | ||||||||||
| requires function spi_transfer_reg | |||||||||||
| #define | PERIPH_SPI_NEEDS_TRANSFER_REGS | ||||||||||
| requires function spi_transfer_regs | |||||||||||
| enum | spi_ctrl_t { HSPI = 1 } | ||||||||||
| SPI controllers that can be used for peripheral interfaces.  More... | |||||||||||
| enum | spi_clk_t { SPI_CLK_100KHZ = KHZ(100) , SPI_CLK_400KHZ = KHZ(400) , SPI_CLK_1MHZ = MHZ(1) , SPI_CLK_5MHZ = MHZ(5) , SPI_CLK_10MHZ = MHZ(10) } | ||||||||||
| UART configuration | |
| All ESP8266 boards have exactly one UART device with fixed pin mapping. | |
| #define | UART_NUMOF_MAX (2) | 
| Maximum number of UART interfaces. | |
| #define CPU_CYCLES_PER_LOOP (5) | 
CPU cycles per busy wait loop.
Definition at line 37 of file periph_cpu.h.
| #define CPUID_LEN (4U) | 
Length of the CPU_ID in octets.
Definition at line 32 of file periph_cpu.h.
Definition at line 95 of file periph_cpu.h.
Definition at line 96 of file periph_cpu.h.
Definition at line 105 of file periph_cpu.h.
Definition at line 106 of file periph_cpu.h.
Definition at line 107 of file periph_cpu.h.
Definition at line 108 of file periph_cpu.h.
Definition at line 109 of file periph_cpu.h.
Definition at line 110 of file periph_cpu.h.
Definition at line 111 of file periph_cpu.h.
Definition at line 97 of file periph_cpu.h.
Definition at line 98 of file periph_cpu.h.
Definition at line 99 of file periph_cpu.h.
Definition at line 100 of file periph_cpu.h.
Definition at line 101 of file periph_cpu.h.
Definition at line 102 of file periph_cpu.h.
Definition at line 103 of file periph_cpu.h.
Definition at line 104 of file periph_cpu.h.
| #define GPIO_PIN | ( | x, | |
| y ) | 
Define a CPU specific GPIO pin generator macro.
Definition at line 62 of file periph_cpu.h.
| #define GPIO_PIN_NUMOF (17) | 
Define CPU specific number of GPIO pins.
Definition at line 72 of file periph_cpu.h.
| #define GPIO_UNDEF ((gpio_t)(UINT_MAX)) | 
Definition of a fitting UNDEF value.
Definition at line 57 of file periph_cpu.h.
| #define HAVE_GPIO_T | 
Override the default gpio_t type definition.
This is required here to have gpio_t defined in this file.
Definition at line 50 of file periph_cpu.h.
| #define HAVE_SPI_CLK_T | 
Override SPI clock speed values.
Definition at line 269 of file periph_cpu.h.
| #define I2C_NUMOF_MAX (2) | 
Maximum number of I2C interfaces that can be used by board definitions.
Definition at line 168 of file periph_cpu.h.
| #define PERIPH_I2C_NEED_READ_REG | 
i2c_read_reg required
Definition at line 170 of file periph_cpu.h.
| #define PERIPH_I2C_NEED_READ_REGS | 
i2c_read_regs required
Definition at line 171 of file periph_cpu.h.
| #define PERIPH_I2C_NEED_WRITE_REG | 
i2c_write_reg required
Definition at line 172 of file periph_cpu.h.
| #define PERIPH_I2C_NEED_WRITE_REGS | 
i2c_write_regs required
Definition at line 173 of file periph_cpu.h.
| #define PERIPH_SPI_NEEDS_TRANSFER_BYTE | 
requires function spi_transfer_byte
Definition at line 294 of file periph_cpu.h.
| #define PERIPH_SPI_NEEDS_TRANSFER_REG | 
requires function spi_transfer_reg
Definition at line 295 of file periph_cpu.h.
| #define PERIPH_SPI_NEEDS_TRANSFER_REGS | 
requires function spi_transfer_regs
Definition at line 296 of file periph_cpu.h.
| #define PERIPH_TIMER_PROVIDES_SET | 
Prevent shared timer functions from being used.
Definition at line 304 of file periph_cpu.h.
| #define PORT_GPIO (0) | 
Available GPIO ports on ESP8266.
Definition at line 67 of file periph_cpu.h.
| #define PROVIDES_PM_OFF | 
Definition at line 182 of file periph_cpu.h.
| #define PROVIDES_PM_RESTART | 
Definition at line 181 of file periph_cpu.h.
| #define PROVIDES_PM_SET_LOWEST | 
Definition at line 180 of file periph_cpu.h.
| #define PWM_CHANNEL_NUM_MAX (8) | 
Maximum number of channels per PWM device.
Definition at line 210 of file periph_cpu.h.
| #define PWM_NUMOF_MAX (1) | 
Maximum number of PWM devices.
Definition at line 205 of file periph_cpu.h.
| #define RNG_DATA_REG_ADDR (0x3ff20e44) | 
The address of the register for accessing the hardware RNG.
Definition at line 222 of file periph_cpu.h.
| #define RTT_FREQUENCY (312500UL) | 
Definition at line 229 of file periph_cpu.h.
| #define RTT_MAX_VALUE (0xFFFFFFFFUL) | 
Definition at line 230 of file periph_cpu.h.
| #define SPI_NUMOF_MAX (1) | 
Maximum number of SPI interfaces.
Definition at line 292 of file periph_cpu.h.
| #define UART_NUMOF_MAX (2) | 
Maximum number of UART interfaces.
Definition at line 325 of file periph_cpu.h.
| enum spi_clk_t | 
Definition at line 270 of file periph_cpu.h.
| enum spi_ctrl_t | 
SPI controllers that can be used for peripheral interfaces.
| Enumerator | |
|---|---|
| HSPI | HSPI interface controller. | 
Definition at line 261 of file periph_cpu.h.