Loading...
Searching...
No Matches
periph_cpu.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2019 Gunar Schorcht
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser
5 * General Public License v2.1. See the file LICENSE in the top level
6 * directory for more details.
7 */
8
19#ifndef PERIPH_CPU_H
20#define PERIPH_CPU_H
21
22#include <stdint.h>
23#include <limits.h>
24
25#include "eagle_soc.h"
26#include "cpu_conf.h"
27#include "macros/units.h"
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
36#define CPUID_LEN (4U)
37
41#define CPU_CYCLES_PER_LOOP (5)
42
54#define HAVE_GPIO_T
55typedef unsigned int gpio_t;
61#define GPIO_UNDEF ((gpio_t)(UINT_MAX))
62
66#define GPIO_PIN(x, y) ((x & 0) | y)
67
71#define PORT_GPIO (0)
72
76#define GPIO_PIN_NUMOF (17)
77
78#ifndef DOXYGEN
83#define HAVE_GPIO_FLANK_T
84typedef enum {
85 GPIO_NONE = 0,
86 GPIO_RISING = 1,
87 GPIO_FALLING = 2,
88 GPIO_BOTH = 3,
89 GPIO_LOW = 4,
90 GPIO_HIGH = 5
93#endif /* ndef DOXYGEN */
100#define GPIO0 (GPIO_PIN(PORT_GPIO,0))
101#define GPIO1 (GPIO_PIN(PORT_GPIO,1))
102#define GPIO2 (GPIO_PIN(PORT_GPIO,2))
103#define GPIO3 (GPIO_PIN(PORT_GPIO,3))
104#define GPIO4 (GPIO_PIN(PORT_GPIO,4))
105#define GPIO5 (GPIO_PIN(PORT_GPIO,5))
106#define GPIO6 (GPIO_PIN(PORT_GPIO,6))
107#define GPIO7 (GPIO_PIN(PORT_GPIO,7))
108#define GPIO8 (GPIO_PIN(PORT_GPIO,8))
109#define GPIO9 (GPIO_PIN(PORT_GPIO,9))
110#define GPIO10 (GPIO_PIN(PORT_GPIO,10))
111#define GPIO11 (GPIO_PIN(PORT_GPIO,11))
112#define GPIO12 (GPIO_PIN(PORT_GPIO,12))
113#define GPIO13 (GPIO_PIN(PORT_GPIO,13))
114#define GPIO14 (GPIO_PIN(PORT_GPIO,14))
115#define GPIO15 (GPIO_PIN(PORT_GPIO,15))
116#define GPIO16 (GPIO_PIN(PORT_GPIO,16))
142#ifndef DOXYGEN
149#define HAVE_I2C_SPEED_T
150typedef enum {
151 I2C_SPEED_LOW = 0,
158#endif /* ndef DOXYGEN */
162typedef struct {
163 i2c_speed_t speed;
164 gpio_t scl;
165 gpio_t sda;
166} i2c_conf_t;
167
171#define I2C_NUMOF_MAX (2)
172
173#define PERIPH_I2C_NEED_READ_REG
174#define PERIPH_I2C_NEED_READ_REGS
175#define PERIPH_I2C_NEED_WRITE_REG
176#define PERIPH_I2C_NEED_WRITE_REGS
183#define PROVIDES_PM_SET_LOWEST
184#define PROVIDES_PM_RESTART
185#define PROVIDES_PM_OFF
208#define PWM_NUMOF_MAX (1)
209
213#define PWM_CHANNEL_NUM_MAX (8)
214
225#define RNG_DATA_REG_ADDR (0x3ff20e44)
232#define RTT_FREQUENCY (312500UL)
233#define RTT_MAX_VALUE (0xFFFFFFFFUL)
264typedef enum {
265 HSPI = 1,
266} spi_ctrl_t;
267
272#define HAVE_SPI_CLK_T
280
284typedef struct {
285 spi_ctrl_t ctrl;
286 gpio_t sck;
287 gpio_t mosi;
288 gpio_t miso;
289 gpio_t cs;
290} spi_conf_t;
291
295#define SPI_NUMOF_MAX (1)
296
297#define PERIPH_SPI_NEEDS_TRANSFER_BYTE
298#define PERIPH_SPI_NEEDS_TRANSFER_REG
299#define PERIPH_SPI_NEEDS_TRANSFER_REGS
305#define PERIPH_TIMER_PROVIDES_SET
306
318typedef struct {
319 gpio_t txd;
320 gpio_t rxd;
322
326#define UART_NUMOF_MAX (2)
329#ifdef __cplusplus
330}
331#endif
332
333#endif /* PERIPH_CPU_H */
gpio_flank_t
Definition periph_cpu.h:180
i2c_speed_t
Definition periph_cpu.h:276
@ I2C_SPEED_NORMAL
normal mode: ~100 kbit/s
Definition periph_cpu.h:278
@ I2C_SPEED_FAST_PLUS
fast plus mode: ~1000 kbit/s
Definition periph_cpu.h:280
@ I2C_SPEED_LOW
low speed mode: ~10 kbit/s
Definition periph_cpu.h:277
@ I2C_SPEED_HIGH
high speed mode: ~3400 kbit/s
Definition periph_cpu.h:282
@ I2C_SPEED_FAST
fast mode: ~400 kbit/s
Definition periph_cpu.h:279
spi_clk_t
Definition periph_cpu.h:352
@ SPI_CLK_10MHZ
drive the SPI bus with 10MHz
Definition periph_cpu.h:357
@ SPI_CLK_5MHZ
drive the SPI bus with 5MHz
Definition periph_cpu.h:356
@ SPI_CLK_400KHZ
drive the SPI bus with 400KHz
Definition periph_cpu.h:354
@ SPI_CLK_1MHZ
drive the SPI bus with 1MHz
Definition periph_cpu.h:355
@ SPI_CLK_100KHZ
drive the SPI bus with 100KHz
Definition periph_cpu.h:353
spi_host_device_t spi_ctrl_t
Mapping of SPI controller type for source code compatibility.
Definition periph_cpu.h:842
spi_ctrl_t
SPI controllers that can be used for peripheral interfaces.
Definition periph_cpu.h:264
@ HSPI
HSPI interface controller.
Definition periph_cpu.h:265
Implementation specific CPU configuration options.
I2C configuration structure.
Definition periph_cpu.h:299
SPI device configuration.
Definition periph_cpu.h:337
UART device configuration.
Definition periph_cpu.h:218
Unit helper macros.
#define MHZ(x)
A macro to return the Hz in x MHz.
Definition units.h:49
#define KHZ(x)
A macro to return the Hz in x kHz.
Definition units.h:44