From 076de4eb3522396c31a8e5f780621a9c5555be04 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Tue, 21 Nov 2017 16:22:33 +0100 Subject: [PATCH 1/4] boards: factored out shared code for nRF52 boards --- boards/common/nrf52xxxdk/Makefile | 3 + boards/common/nrf52xxxdk/Makefile.dep | 3 + boards/common/nrf52xxxdk/Makefile.features | 14 +++ boards/common/nrf52xxxdk/Makefile.include | 22 ++++ boards/common/nrf52xxxdk/board.c | 32 ++++++ .../common/nrf52xxxdk/include/board_common.h | 40 +++++++ .../common/nrf52xxxdk/include/gpio_params.h | 83 +++++++++++++++ .../common/nrf52xxxdk/include/periph_conf.h | 100 ++++++++++++++++++ 8 files changed, 297 insertions(+) create mode 100644 boards/common/nrf52xxxdk/Makefile create mode 100644 boards/common/nrf52xxxdk/Makefile.dep create mode 100644 boards/common/nrf52xxxdk/Makefile.features create mode 100644 boards/common/nrf52xxxdk/Makefile.include create mode 100644 boards/common/nrf52xxxdk/board.c create mode 100644 boards/common/nrf52xxxdk/include/board_common.h create mode 100644 boards/common/nrf52xxxdk/include/gpio_params.h create mode 100644 boards/common/nrf52xxxdk/include/periph_conf.h diff --git a/boards/common/nrf52xxxdk/Makefile b/boards/common/nrf52xxxdk/Makefile new file mode 100644 index 0000000000..6d21170b79 --- /dev/null +++ b/boards/common/nrf52xxxdk/Makefile @@ -0,0 +1,3 @@ +MODULE = boards_common_nrf52 + +include $(RIOTBASE)/Makefile.base diff --git a/boards/common/nrf52xxxdk/Makefile.dep b/boards/common/nrf52xxxdk/Makefile.dep new file mode 100644 index 0000000000..5472bf8b8d --- /dev/null +++ b/boards/common/nrf52xxxdk/Makefile.dep @@ -0,0 +1,3 @@ +ifneq (,$(filter saul_default,$(USEMODULE))) + USEMODULE += saul_gpio +endif diff --git a/boards/common/nrf52xxxdk/Makefile.features b/boards/common/nrf52xxxdk/Makefile.features new file mode 100644 index 0000000000..5c594d4b0d --- /dev/null +++ b/boards/common/nrf52xxxdk/Makefile.features @@ -0,0 +1,14 @@ +# Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_gpio +FEATURES_PROVIDED += periph_rtt +FEATURES_PROVIDED += periph_spi +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/common/nrf52xxxdk/Makefile.include b/boards/common/nrf52xxxdk/Makefile.include new file mode 100644 index 0000000000..5f34506f66 --- /dev/null +++ b/boards/common/nrf52xxxdk/Makefile.include @@ -0,0 +1,22 @@ +# this module contains shared code for all boards using the nrf52 CPU +export CPU = nrf52 + +# include this module into the build +INCLUDES += -I$(RIOTBOARD)/common/nrf52xxxdk/include +USEMODULE += boards_common_nrf52 + +# set default port depending on operating system +PORT_LINUX ?= /dev/ttyACM0 +PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) +include $(RIOTMAKE)/tools/serial.inc.mk + +# setup JLink for flashing +export JLINK_DEVICE := nrf52 + +# special options when using SoftDevice +ifneq (,$(filter nordic_softdevice_ble,$(USEPKG))) + export JLINK_PRE_FLASH := erase\nloadfile $(BINDIR)/softdevice.hex + export FLASH_ADDR := 0x1f000 + export LINKER_SCRIPT ?= $(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL)_sd.ld +endif +include $(RIOTMAKE)/tools/jlink.inc.mk diff --git a/boards/common/nrf52xxxdk/board.c b/boards/common/nrf52xxxdk/board.c new file mode 100644 index 0000000000..d25e9f08e9 --- /dev/null +++ b/boards/common/nrf52xxxdk/board.c @@ -0,0 +1,32 @@ +/* + * 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_nrf52840dk + * @{ + * + * @file + * @brief Board initialization for the nRF52840 DK + * + * @author Hauke Petersen + * + * @} + */ + +#include "cpu.h" +#include "board.h" + +void board_init(void) +{ + /* initialize the boards LEDs */ + LED_PORT->DIRSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); + LED_PORT->OUTSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); + + /* initialize the CPU */ + cpu_init(); +} diff --git a/boards/common/nrf52xxxdk/include/board_common.h b/boards/common/nrf52xxxdk/include/board_common.h new file mode 100644 index 0000000000..1cffcbe633 --- /dev/null +++ b/boards/common/nrf52xxxdk/include/board_common.h @@ -0,0 +1,40 @@ +/* + * 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_common_nrf52 Shared nRF52 code + * @ingroup boards_common + * @brief Shared configuration for all nRF52-based boards + * @{ + * + * @file + * @brief Shared configuration for the all nRF52-based boards + * + * @author Hauke Petersen + */ + +#ifndef BOARD_COMMON_H +#define BOARD_COMMON_H + +#include "cpu.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Initialize the platform + */ +void board_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* BOARD_COMMON_H */ +/** @} */ diff --git a/boards/common/nrf52xxxdk/include/gpio_params.h b/boards/common/nrf52xxxdk/include/gpio_params.h new file mode 100644 index 0000000000..77525b4c87 --- /dev/null +++ b/boards/common/nrf52xxxdk/include/gpio_params.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2016 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_nrf52dk + * @{ + * + * @file + * @brief Configuration of SAUL mapped GPIO pins + * + * @author Hauke Petersen + * @author Sebastian Meiling + */ + +#ifndef GPIO_PARAMS_H +#define GPIO_PARAMS_H + +#include "board.h" +#include "saul/periph.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief LED configuration + */ +static const saul_gpio_params_t saul_gpio_params[] = +{ + { + .name = "LED 1", + .pin = LED0_PIN, + .mode = GPIO_OUT + }, + { + .name = "LED 2", + .pin = LED1_PIN, + .mode = GPIO_OUT + }, + { + .name = "LED 3", + .pin = LED2_PIN, + .mode = GPIO_OUT + }, + { + .name = "LED 4", + .pin = LED3_PIN, + .mode = GPIO_OUT + }, + { + .name = "Button 1", + .pin = BTN0_PIN, + .mode = BTN0_MODE + }, + { + .name = "Button 2", + .pin = BTN1_PIN, + .mode = BTN1_MODE + }, + { + .name = "Button 3", + .pin = BTN2_PIN, + .mode = BTN2_MODE + }, + { + .name = "Button 4", + .pin = BTN3_PIN, + .mode = BTN3_MODE + } +}; + + +#ifdef __cplusplus +} +#endif + +#endif /* GPIO_PARAMS_H */ +/** @} */ diff --git a/boards/common/nrf52xxxdk/include/periph_conf.h b/boards/common/nrf52xxxdk/include/periph_conf.h new file mode 100644 index 0000000000..e9a82db84f --- /dev/null +++ b/boards/common/nrf52xxxdk/include/periph_conf.h @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2016-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_nrf52dk + * @{ + * + * @file + * @brief Peripheral configuration for the nRF52 DK + * + * @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,8) +#define UART_PIN_TX GPIO_PIN(0,6) +/** @} */ + +/** + * @name SPI configuration + * @{ + */ +static const spi_conf_t spi_config[] = { + { + .dev = NRF_SPI0, + .sclk = 15, + .mosi = 13, + .miso = 14 + } +}; + +#define SPI_NUMOF (sizeof(spi_config) / sizeof(spi_config[0])) +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* PERIPH_CONF_H */ From 2d93d14102caadee7e2619dcdee5c25a7a1abc85 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Tue, 21 Nov 2017 16:23:25 +0100 Subject: [PATCH 2/4] boards/nrf52dk: use common code --- boards/nrf52dk/Makefile | 1 + boards/nrf52dk/Makefile.dep | 8 +-- boards/nrf52dk/Makefile.features | 15 +--- boards/nrf52dk/Makefile.include | 20 +----- boards/nrf52dk/board.c | 33 --------- boards/nrf52dk/include/board.h | 34 ++++----- boards/nrf52dk/include/gpio_params.h | 83 ---------------------- boards/nrf52dk/include/periph_conf.h | 100 --------------------------- 8 files changed, 19 insertions(+), 275 deletions(-) delete mode 100644 boards/nrf52dk/board.c delete mode 100644 boards/nrf52dk/include/gpio_params.h delete mode 100644 boards/nrf52dk/include/periph_conf.h diff --git a/boards/nrf52dk/Makefile b/boards/nrf52dk/Makefile index f8fcbb53a0..f07357235f 100644 --- a/boards/nrf52dk/Makefile +++ b/boards/nrf52dk/Makefile @@ -1,3 +1,4 @@ MODULE = board +DIRS = $(RIOTBOARD)/common/nrf52xxxdk include $(RIOTBASE)/Makefile.base diff --git a/boards/nrf52dk/Makefile.dep b/boards/nrf52dk/Makefile.dep index e9b18989d0..dd71d2f711 100644 --- a/boards/nrf52dk/Makefile.dep +++ b/boards/nrf52dk/Makefile.dep @@ -1,13 +1,7 @@ -ifneq (,$(filter saul_default,$(USEMODULE))) - USEMODULE += saul_gpio -endif +include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.dep ifeq (,$(filter nrfmin,$(USEMODULE))) ifneq (,$(filter gnrc_netdev_default,$(USEMODULE))) USEPKG += nordic_softdevice_ble endif -else - ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin - endif endif diff --git a/boards/nrf52dk/Makefile.features b/boards/nrf52dk/Makefile.features index 5c594d4b0d..b99cfa472a 100644 --- a/boards/nrf52dk/Makefile.features +++ b/boards/nrf52dk/Makefile.features @@ -1,14 +1 @@ -# Put defined MCU peripherals here (in alphabetical order) -FEATURES_PROVIDED += periph_gpio -FEATURES_PROVIDED += periph_rtt -FEATURES_PROVIDED += periph_spi -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 +include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.features diff --git a/boards/nrf52dk/Makefile.include b/boards/nrf52dk/Makefile.include index ffd49c959e..4aa5e47071 100644 --- a/boards/nrf52dk/Makefile.include +++ b/boards/nrf52dk/Makefile.include @@ -1,21 +1,3 @@ -# define the cpu used by the nRF52 DK -export CPU = nrf52 export CPU_MODEL = nrf52832xxaa -# set default port depending on operating system -PORT_LINUX ?= /dev/ttyACM0 -PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) - -# setup JLink for flashing -export JLINK_DEVICE := nrf52 - -# special options when using SoftDevice -ifneq (,$(filter nordic_softdevice_ble,$(USEPKG))) -export JLINK_PRE_FLASH := erase\nloadfile $(BINDIR)/softdevice.hex -export FLASH_ADDR := 0x1f000 -export LINKER_SCRIPT ?= $(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL)_sd.ld -endif -include $(RIOTMAKE)/tools/jlink.inc.mk - -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk +include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.include diff --git a/boards/nrf52dk/board.c b/boards/nrf52dk/board.c deleted file mode 100644 index 9d06a200ca..0000000000 --- a/boards/nrf52dk/board.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2016 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_nrf52dk - * @{ - * - * @file - * @brief Board initialization for the nRF52 DK - * - * @author Hauke Petersen - * - * @} - */ - -#include "cpu.h" -#include "board.h" - -void board_init(void) -{ - /* initialize the boards LEDs */ - NRF_P0->DIRSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); - NRF_P0->OUTSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); - NRF_P0->OUTSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); - - /* initialize the CPU */ - cpu_init(); -} diff --git a/boards/nrf52dk/include/board.h b/boards/nrf52dk/include/board.h index b3a2c9c1a2..7214c11fb5 100644 --- a/boards/nrf52dk/include/board.h +++ b/boards/nrf52dk/include/board.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 Feie Universität Berlin + * Copyright (C) 2016-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 @@ -22,7 +22,7 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" +#include "board_common.h" #ifdef __cplusplus extern "C" { @@ -37,26 +37,27 @@ extern "C" { #define LED2_PIN GPIO_PIN(0, 19) #define LED3_PIN GPIO_PIN(0, 20) +#define LED_PORT (NRF_P0) #define LED0_MASK (1 << 17) #define LED1_MASK (1 << 18) #define LED2_MASK (1 << 19) #define LED3_MASK (1 << 20) -#define LED0_ON (NRF_P0->OUTCLR = LED0_MASK) -#define LED0_OFF (NRF_P0->OUTSET = LED0_MASK) -#define LED0_TOGGLE (NRF_P0->OUT ^= LED0_MASK) +#define LED0_ON (LED_PORT->OUTCLR = LED0_MASK) +#define LED0_OFF (LED_PORT->OUTSET = LED0_MASK) +#define LED0_TOGGLE (LED_PORT->OUT ^= LED0_MASK) -#define LED1_ON (NRF_P0->OUTCLR = LED1_MASK) -#define LED1_OFF (NRF_P0->OUTSET = LED1_MASK) -#define LED1_TOGGLE (NRF_P0->OUT ^= LED1_MASK) +#define LED1_ON (LED_PORT->OUTCLR = LED1_MASK) +#define LED1_OFF (LED_PORT->OUTSET = LED1_MASK) +#define LED1_TOGGLE (LED_PORT->OUT ^= LED1_MASK) -#define LED2_ON (NRF_P0->OUTCLR = LED2_MASK) -#define LED2_OFF (NRF_P0->OUTSET = LED2_MASK) -#define LED2_TOGGLE (NRF_P0->OUT ^= LED2_MASK) +#define LED2_ON (LED_PORT->OUTCLR = LED2_MASK) +#define LED2_OFF (LED_PORT->OUTSET = LED2_MASK) +#define LED2_TOGGLE (LED_PORT->OUT ^= LED2_MASK) -#define LED3_ON (NRF_P0->OUTCLR = LED3_MASK) -#define LED3_OFF (NRF_P0->OUTSET = LED3_MASK) -#define LED3_TOGGLE (NRF_P0->OUT ^= LED3_MASK) +#define LED3_ON (LED_PORT->OUTCLR = LED3_MASK) +#define LED3_OFF (LED_PORT->OUTSET = LED3_MASK) +#define LED3_TOGGLE (LED_PORT->OUT ^= LED3_MASK) /** @} */ /** @@ -73,11 +74,6 @@ extern "C" { #define BTN3_MODE GPIO_IN_PU /** @} */ -/** - * @brief Initialize board specific hardware, including clock, LEDs and std-IO - */ -void board_init(void); - #ifdef __cplusplus } #endif diff --git a/boards/nrf52dk/include/gpio_params.h b/boards/nrf52dk/include/gpio_params.h deleted file mode 100644 index 77525b4c87..0000000000 --- a/boards/nrf52dk/include/gpio_params.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2016 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_nrf52dk - * @{ - * - * @file - * @brief Configuration of SAUL mapped GPIO pins - * - * @author Hauke Petersen - * @author Sebastian Meiling - */ - -#ifndef GPIO_PARAMS_H -#define GPIO_PARAMS_H - -#include "board.h" -#include "saul/periph.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief LED configuration - */ -static const saul_gpio_params_t saul_gpio_params[] = -{ - { - .name = "LED 1", - .pin = LED0_PIN, - .mode = GPIO_OUT - }, - { - .name = "LED 2", - .pin = LED1_PIN, - .mode = GPIO_OUT - }, - { - .name = "LED 3", - .pin = LED2_PIN, - .mode = GPIO_OUT - }, - { - .name = "LED 4", - .pin = LED3_PIN, - .mode = GPIO_OUT - }, - { - .name = "Button 1", - .pin = BTN0_PIN, - .mode = BTN0_MODE - }, - { - .name = "Button 2", - .pin = BTN1_PIN, - .mode = BTN1_MODE - }, - { - .name = "Button 3", - .pin = BTN2_PIN, - .mode = BTN2_MODE - }, - { - .name = "Button 4", - .pin = BTN3_PIN, - .mode = BTN3_MODE - } -}; - - -#ifdef __cplusplus -} -#endif - -#endif /* GPIO_PARAMS_H */ -/** @} */ diff --git a/boards/nrf52dk/include/periph_conf.h b/boards/nrf52dk/include/periph_conf.h deleted file mode 100644 index e9a82db84f..0000000000 --- a/boards/nrf52dk/include/periph_conf.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2016-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_nrf52dk - * @{ - * - * @file - * @brief Peripheral configuration for the nRF52 DK - * - * @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,8) -#define UART_PIN_TX GPIO_PIN(0,6) -/** @} */ - -/** - * @name SPI configuration - * @{ - */ -static const spi_conf_t spi_config[] = { - { - .dev = NRF_SPI0, - .sclk = 15, - .mosi = 13, - .miso = 14 - } -}; - -#define SPI_NUMOF (sizeof(spi_config) / sizeof(spi_config[0])) -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* PERIPH_CONF_H */ From cb2ca02264c1e30f6a77755fd3259b093b8ddfdf Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Tue, 21 Nov 2017 16:23:44 +0100 Subject: [PATCH 3/4] boards/nrf52840dk: use common code --- boards/nrf52840dk/Makefile | 1 + boards/nrf52840dk/Makefile.dep | 8 +- boards/nrf52840dk/Makefile.features | 15 +--- boards/nrf52840dk/Makefile.include | 20 +---- boards/nrf52840dk/board.c | 32 -------- boards/nrf52840dk/include/board.h | 7 +- boards/nrf52840dk/include/gpio_params.h | 83 -------------------- boards/nrf52840dk/include/periph_conf.h | 100 ------------------------ 8 files changed, 5 insertions(+), 261 deletions(-) delete mode 100644 boards/nrf52840dk/board.c delete mode 100644 boards/nrf52840dk/include/gpio_params.h delete mode 100644 boards/nrf52840dk/include/periph_conf.h diff --git a/boards/nrf52840dk/Makefile b/boards/nrf52840dk/Makefile index f8fcbb53a0..f07357235f 100644 --- a/boards/nrf52840dk/Makefile +++ b/boards/nrf52840dk/Makefile @@ -1,3 +1,4 @@ MODULE = board +DIRS = $(RIOTBOARD)/common/nrf52xxxdk include $(RIOTBASE)/Makefile.base diff --git a/boards/nrf52840dk/Makefile.dep b/boards/nrf52840dk/Makefile.dep index a712616dc2..68628f406a 100644 --- a/boards/nrf52840dk/Makefile.dep +++ b/boards/nrf52840dk/Makefile.dep @@ -1,7 +1 @@ -ifneq (,$(filter saul_default,$(USEMODULE))) - USEMODULE += saul_gpio -endif - -ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin -endif +include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.dep diff --git a/boards/nrf52840dk/Makefile.features b/boards/nrf52840dk/Makefile.features index 5c594d4b0d..b99cfa472a 100644 --- a/boards/nrf52840dk/Makefile.features +++ b/boards/nrf52840dk/Makefile.features @@ -1,14 +1 @@ -# Put defined MCU peripherals here (in alphabetical order) -FEATURES_PROVIDED += periph_gpio -FEATURES_PROVIDED += periph_rtt -FEATURES_PROVIDED += periph_spi -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 +include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.features diff --git a/boards/nrf52840dk/Makefile.include b/boards/nrf52840dk/Makefile.include index 485d3f04fb..b76f405a51 100644 --- a/boards/nrf52840dk/Makefile.include +++ b/boards/nrf52840dk/Makefile.include @@ -1,21 +1,3 @@ -# define the cpu used by the nRF52 DK -export CPU = nrf52 export CPU_MODEL = nrf52840xxaa -# set default port depending on operating system -PORT_LINUX ?= /dev/ttyACM0 -PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) - -# setup JLink for flashing -export JLINK_DEVICE := nrf52 - -# special options when using SoftDevice -ifneq (,$(filter nordic_softdevice_ble,$(USEPKG))) - export JLINK_PRE_FLASH := erase\nloadfile $(BINDIR)/softdevice.hex - export FLASH_ADDR := 0x1f000 - export LINKER_SCRIPT ?= $(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL)_sd.ld -endif -include $(RIOTMAKE)/tools/jlink.inc.mk - -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk +include $(RIOTBOARD)/common/nrf52xxxdk/Makefile.include diff --git a/boards/nrf52840dk/board.c b/boards/nrf52840dk/board.c deleted file mode 100644 index d25e9f08e9..0000000000 --- a/boards/nrf52840dk/board.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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_nrf52840dk - * @{ - * - * @file - * @brief Board initialization for the nRF52840 DK - * - * @author Hauke Petersen - * - * @} - */ - -#include "cpu.h" -#include "board.h" - -void board_init(void) -{ - /* initialize the boards LEDs */ - LED_PORT->DIRSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); - LED_PORT->OUTSET = (LED0_MASK | LED1_MASK | LED2_MASK | LED3_MASK); - - /* initialize the CPU */ - cpu_init(); -} diff --git a/boards/nrf52840dk/include/board.h b/boards/nrf52840dk/include/board.h index ed2690577c..196b109277 100644 --- a/boards/nrf52840dk/include/board.h +++ b/boards/nrf52840dk/include/board.h @@ -22,7 +22,7 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" +#include "board_common.h" #ifdef __cplusplus extern "C" { @@ -74,11 +74,6 @@ extern "C" { #define BTN3_MODE GPIO_IN_PU /** @} */ -/** - * @brief Initialize board specific hardware, including clock, LEDs and std-IO - */ -void board_init(void); - #ifdef __cplusplus } #endif diff --git a/boards/nrf52840dk/include/gpio_params.h b/boards/nrf52840dk/include/gpio_params.h deleted file mode 100644 index d3b9e58ddb..0000000000 --- a/boards/nrf52840dk/include/gpio_params.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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_nrf52840dk - * @{ - * - * @file - * @brief Configuration of SAUL mapped GPIO pins - * - * @author Hauke Petersen - * @author Sebastian Meiling - */ - -#ifndef GPIO_PARAMS_H -#define GPIO_PARAMS_H - -#include "board.h" -#include "saul/periph.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief LED configuration - */ -static const saul_gpio_params_t saul_gpio_params[] = -{ - { - .name = "LED 1", - .pin = LED0_PIN, - .mode = GPIO_OUT - }, - { - .name = "LED 2", - .pin = LED1_PIN, - .mode = GPIO_OUT - }, - { - .name = "LED 3", - .pin = LED2_PIN, - .mode = GPIO_OUT - }, - { - .name = "LED 4", - .pin = LED3_PIN, - .mode = GPIO_OUT - }, - { - .name = "Button 1", - .pin = BTN0_PIN, - .mode = BTN0_MODE - }, - { - .name = "Button 2", - .pin = BTN1_PIN, - .mode = BTN1_MODE - }, - { - .name = "Button 3", - .pin = BTN2_PIN, - .mode = BTN2_MODE - }, - { - .name = "Button 4", - .pin = BTN3_PIN, - .mode = BTN3_MODE - } -}; - - -#ifdef __cplusplus -} -#endif - -#endif /* GPIO_PARAMS_H */ -/** @} */ diff --git a/boards/nrf52840dk/include/periph_conf.h b/boards/nrf52840dk/include/periph_conf.h deleted file mode 100644 index e9b072b859..0000000000 --- a/boards/nrf52840dk/include/periph_conf.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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_nrf52840dk - * @{ - * - * @file - * @brief Peripheral configuration for the nRF52840 DK - * - * @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, 8) -#define UART_PIN_TX GPIO_PIN(0, 6) -/** @} */ - -/** - * @name SPI configuration - * @{ - */ -static const spi_conf_t spi_config[] = { - { - .dev = NRF_SPI0, - .sclk = 15, - .mosi = 13, - .miso = 14 - } -}; - -#define SPI_NUMOF (sizeof(spi_config) / sizeof(spi_config[0])) -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* PERIPH_CONF_H */ From 41ec9b25421f6caa3f2f88a6d5842dac3e724827 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Thu, 30 Nov 2017 16:13:12 +0100 Subject: [PATCH 4/4] boards/common/nrf52: fixed SAUL gpio params --- .../common/nrf52xxxdk/include/gpio_params.h | 56 +++++++++++-------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/boards/common/nrf52xxxdk/include/gpio_params.h b/boards/common/nrf52xxxdk/include/gpio_params.h index 77525b4c87..4ac68e2487 100644 --- a/boards/common/nrf52xxxdk/include/gpio_params.h +++ b/boards/common/nrf52xxxdk/include/gpio_params.h @@ -33,44 +33,52 @@ extern "C" { static const saul_gpio_params_t saul_gpio_params[] = { { - .name = "LED 1", - .pin = LED0_PIN, - .mode = GPIO_OUT + .name = "LED 1", + .pin = LED0_PIN, + .mode = GPIO_OUT, + .flags = (SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR), }, { - .name = "LED 2", - .pin = LED1_PIN, - .mode = GPIO_OUT + .name = "LED 2", + .pin = LED1_PIN, + .mode = GPIO_OUT, + .flags = (SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR), }, { - .name = "LED 3", - .pin = LED2_PIN, - .mode = GPIO_OUT + .name = "LED 3", + .pin = LED2_PIN, + .mode = GPIO_OUT, + .flags = (SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR), }, { - .name = "LED 4", - .pin = LED3_PIN, - .mode = GPIO_OUT + .name = "LED 4", + .pin = LED3_PIN, + .mode = GPIO_OUT, + .flags = (SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR), }, { - .name = "Button 1", - .pin = BTN0_PIN, - .mode = BTN0_MODE + .name = "Button 1", + .pin = BTN0_PIN, + .mode = BTN0_MODE, + .flags = SAUL_GPIO_INVERTED, }, { - .name = "Button 2", - .pin = BTN1_PIN, - .mode = BTN1_MODE + .name = "Button 2", + .pin = BTN1_PIN, + .mode = BTN1_MODE, + .flags = SAUL_GPIO_INVERTED, }, { - .name = "Button 3", - .pin = BTN2_PIN, - .mode = BTN2_MODE + .name = "Button 3", + .pin = BTN2_PIN, + .mode = BTN2_MODE, + .flags = SAUL_GPIO_INVERTED, }, { - .name = "Button 4", - .pin = BTN3_PIN, - .mode = BTN3_MODE + .name = "Button 4", + .pin = BTN3_PIN, + .mode = BTN3_MODE, + .flags = SAUL_GPIO_INVERTED, } };