diff --git a/boards/thingy52/Makefile b/boards/thingy52/Makefile new file mode 100644 index 0000000000..f8fcbb53a0 --- /dev/null +++ b/boards/thingy52/Makefile @@ -0,0 +1,3 @@ +MODULE = board + +include $(RIOTBASE)/Makefile.base diff --git a/boards/thingy52/Makefile.dep b/boards/thingy52/Makefile.dep new file mode 100644 index 0000000000..1a8393de41 --- /dev/null +++ b/boards/thingy52/Makefile.dep @@ -0,0 +1,3 @@ +ifneq (,$(filter gnrc_netdev_default,$(USEMODULE))) + USEMODULE += nrfmin +endif diff --git a/boards/thingy52/Makefile.features b/boards/thingy52/Makefile.features new file mode 100644 index 0000000000..1830ca6784 --- /dev/null +++ b/boards/thingy52/Makefile.features @@ -0,0 +1,13 @@ +# Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_gpio +FEATURES_PROVIDED += periph_rtt +FEATURES_PROVIDED += periph_timer +FEATURES_PROVIDED += periph_uart + +# Various other features (if any) +FEATURES_PROVIDED += radio_nrfmin + +# The board MPU family (used for grouping by the CI system) +FEATURES_MCU_GROUP = cortex_m4_3 + +-include $(RIOTCPU)/nrf52/Makefile.features diff --git a/boards/thingy52/Makefile.include b/boards/thingy52/Makefile.include new file mode 100644 index 0000000000..f555e72548 --- /dev/null +++ b/boards/thingy52/Makefile.include @@ -0,0 +1,12 @@ +# CPU configuration for the Thingy:52 +export CPU = nrf52 +CPU_MODEL = nrf52832xxaa + +# set default port depending on operating system +PORT_LINUX ?= /dev/ttyUSB0 +PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) +include $(RIOTMAKE)/tools/serial.inc.mk + +# setup JLink for flashing +export JLINK_DEVICE := nrf52 +include $(RIOTMAKE)/tools/jlink.inc.mk diff --git a/boards/thingy52/board.c b/boards/thingy52/board.c new file mode 100644 index 0000000000..c48a65ffc6 --- /dev/null +++ b/boards/thingy52/board.c @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2017 Freie Universität Berlin + * + * 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_thingy52 + * @{ + * + * @file + * @brief Board initialization for the Thingy:52 + * + * @author Hauke Petersen + * + * @} + */ + +#include "cpu.h" +#include "board.h" + +void board_init(void) +{ + /* initialize the CPU */ + cpu_init(); +} diff --git a/boards/thingy52/include/board.h b/boards/thingy52/include/board.h new file mode 100644 index 0000000000..c76f7d6ffd --- /dev/null +++ b/boards/thingy52/include/board.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2017 Feie Universität Berlin + * + * 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. + */ + +/** + * @defgroup boards_thingy52 Nordic Thingy:52 + * @ingroup boards + * @brief Board specific configuration for the Nordic Thingy:52 board + * @{ + * + * @file + * @brief Board specific configuration for the Nordic Thingy:52 board + * + * @author Hauke Petersen + */ + +#ifndef BOARD_H +#define BOARD_H + +#include "cpu.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Button pin configuration + * @{ + */ +#define BTN0_PIN GPIO_PIN(0, 11) +#define BTN0_MODE GPIO_IN_PU +/** @} */ + +/** + * @brief Initialize board specific hardware + */ +void board_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* BOARD_H */ +/** @} */ diff --git a/boards/thingy52/include/periph_conf.h b/boards/thingy52/include/periph_conf.h new file mode 100644 index 0000000000..ecae3942d8 --- /dev/null +++ b/boards/thingy52/include/periph_conf.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2017 Freie Universität Berlin + * + * 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_thingy52 + * @{ + * + * @file + * @brief Peripheral configuration for the Thingy:52 + * + * @author Hauke Petersen + * + */ + +#ifndef PERIPH_CONF_H +#define PERIPH_CONF_H + +#include "periph_cpu.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Clock configuration + * + * @note The radio will not work with the internal RC oscillator! + * + * @{ + */ +#define CLOCK_HFCLK (32U) /* set to 0: internal RC oscillator + * 32: 32MHz crystal */ +#define CLOCK_LFCLK (1) /* set to 0: internal RC oscillator + * 1: 32.768 kHz crystal + * 2: derived from HFCLK */ +/** @} */ + +/** + * @name Timer configuration + * @{ + */ +static const timer_conf_t timer_config[] = { + { + .dev = NRF_TIMER1, + .channels = 3, + .bitmode = TIMER_BITMODE_BITMODE_32Bit, + .irqn = TIMER1_IRQn + } +}; + +#define TIMER_0_ISR isr_timer1 + +#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) +/** @} */ + +/** + * @name Real time counter configuration + * @{ + */ +#define RTT_NUMOF (1U) +#define RTT_DEV (1) /* NRF_RTC1 */ +#define RTT_MAX_VALUE (0x00ffffff) +#define RTT_FREQUENCY (1024) +/** @} */ + +/** + * @name UART configuration + * @{ + */ +#define UART_NUMOF (1U) +#define UART_PIN_RX GPIO_PIN(0, 2) +#define UART_PIN_TX GPIO_PIN(0, 3) +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* PERIPH_CONF_H */