

24 changed files with 17594 additions and 36 deletions
@ -0,0 +1,3 @@
|
||||
MODULE = board
|
||||
|
||||
include $(RIOTBASE)/Makefile.base |
@ -0,0 +1,7 @@
|
||||
ifneq (,$(filter saul_default,$(USEMODULE))) |
||||
USEMODULE += saul_gpio
|
||||
endif |
||||
|
||||
ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) |
||||
USEMODULE += nrfmin
|
||||
endif |
@ -0,0 +1,16 @@
|
||||
# Put defined MCU peripherals here (in alphabetical order)
|
||||
FEATURES_PROVIDED += periph_cpuid
|
||||
FEATURES_PROVIDED += periph_flashpage
|
||||
FEATURES_PROVIDED += periph_gpio
|
||||
FEATURES_PROVIDED += periph_hwrng
|
||||
FEATURES_PROVIDED += periph_rtt
|
||||
FEATURES_PROVIDED += periph_spi
|
||||
FEATURES_PROVIDED += periph_timer
|
||||
FEATURES_PROVIDED += periph_uart
|
||||
|
||||
# Various other features (if any)
|
||||
FEATURES_PROVIDED += cpp
|
||||
FEATURES_PROVIDED += radio_nrfmin
|
||||
|
||||
# The board MPU family (used for grouping by the CI system)
|
||||
FEATURES_MCU_GROUP = cortex_m4_3
|
@ -0,0 +1,21 @@
|
||||
# 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 JLINK_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 |
@ -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 <hauke.petersen@fu-berlin.de> |
||||
* |
||||
* @} |
||||
*/ |
||||
|
||||
#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(); |
||||
} |
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* 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_nrf52840dk nRF52840 DK |
||||
* @ingroup boards |
||||
* @{ |
||||
* |
||||
* @file |
||||
* @brief Board specific configuration for the nRF52840 DK |
||||
* |
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de> |
||||
* |
||||
*/ |
||||
|
||||
#ifndef BOARD_H |
||||
#define BOARD_H |
||||
|
||||
#include "cpu.h" |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/**
|
||||
* @brief LED pin configuration |
||||
* @{ |
||||
*/ |
||||
#define LED0_PIN GPIO_PIN(0, 13) |
||||
#define LED1_PIN GPIO_PIN(0, 14) |
||||
#define LED2_PIN GPIO_PIN(0, 15) |
||||
#define LED3_PIN GPIO_PIN(0, 16) |
||||
|
||||
#define LED_PORT (NRF_P0) |
||||
#define LED0_MASK (1 << 13) |
||||
#define LED1_MASK (1 << 14) |
||||
#define LED2_MASK (1 << 15) |
||||
#define LED3_MASK (1 << 16) |
||||
|
||||
#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 (LED_PORT->OUTCLR = LED1_MASK) |
||||
#define LED1_OFF (LED_PORT->OUTSET = LED1_MASK) |
||||
#define LED1_TOGGLE (LED_PORT->OUT ^= LED1_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 (LED_PORT->OUTCLR = LED3_MASK) |
||||
#define LED3_OFF (LED_PORT->OUTSET = LED3_MASK) |
||||
#define LED3_TOGGLE (LED_PORT->OUT ^= LED3_MASK) |
||||
/** @} */ |
||||
|
||||
/**
|
||||
* @brief Button pin configuration |
||||
* @{ |
||||
*/ |
||||
#define BUTTON1_PIN (GPIO_PIN(0, 11)) |
||||
#define BUTTON2_PIN (GPIO_PIN(0, 12)) |
||||
#define BUTTON3_PIN (GPIO_PIN(0, 24)) |
||||
#define BUTTON4_PIN (GPIO_PIN(0, 25)) |
||||
/** @} */ |
||||
|
||||
/**
|
||||
* @brief Initialize board specific hardware, including clock, LEDs and std-IO |
||||
*/ |
||||
void board_init(void); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /** BOARD_H */ |
||||
/** @} */ |
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* 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 <hauke.petersen@fu-berlin.de> |
||||
* |
||||
*/ |
||||
|
||||
#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 = BUTTON1_PIN, |
||||
.mode = GPIO_IN_PU |
||||
}, |
||||
{ |
||||
.name = "Button 2", |
||||
.pin = BUTTON2_PIN, |
||||
.mode = GPIO_IN_PU |
||||
}, |
||||
{ |
||||
.name = "Button 3", |
||||
.pin = BUTTON3_PIN, |
||||
.mode = GPIO_IN_PU |
||||
}, |
||||
{ |
||||
.name = "Button 4", |
||||
.pin = BUTTON4_PIN, |
||||
.mode = GPIO_IN_PU |
||||
} |
||||
}; |
||||
|
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* GPIO_PARAMS_H */ |
||||
/** @} */ |
@ -0,0 +1,101 @@
|
||||
/*
|
||||
* 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 <hauke.petersen@fu-berlin.de> |
||||
* |
||||
*/ |
||||
|
||||
#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_CORECLOCK (64000000U) /* fixed for all NRF52832 */ |
||||
#define CLOCK_CRYSTAL (32U) /* set to 0: internal RC oscillator |
||||
32: 32MHz crystal */ |
||||
/** @} */ |
||||
|
||||
/**
|
||||
* @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 NRF_RTC1 |
||||
#define RTT_IRQ RTC1_IRQn |
||||
#define RTT_ISR isr_rtc1 |
||||
#define RTT_MAX_VALUE (0xffffff) |
||||
#define RTT_FREQUENCY (10) /* in Hz */ |
||||
#define RTT_PRESCALER (3275U) /* run with 10 Hz */ |
||||
/** @} */ |
||||
|
||||
/**
|
||||
* @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 */ |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,27 @@
|
||||
/* |
||||
* 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. |
||||
*/ |
||||
|
||||
/** |
||||
* @addtogroup cpu_nrf52 |
||||
* @{ |
||||
* |
||||
* @file |
||||
* @brief Memory definitions for the NRF52840XXAA |
||||
* |
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de> |
||||
* |
||||
* @} |
||||
*/ |
||||
|
||||
MEMORY |
||||
{ |
||||
rom (rx) : ORIGIN = 0x00000000, LENGTH = 1024K |
||||
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 256K |
||||
} |
||||
|
||||
INCLUDE cortexm_base.ld |
@ -0,0 +1,27 @@
|
||||
/* |
||||
* 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. |
||||
*/ |
||||
|
||||
/** |
||||
* @addtogroup cpu_nrf52 |
||||
* @{ |
||||
* |
||||
* @file |
||||
* @brief Memory definitions for the NRF52840XXAA |
||||
* |
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de> |
||||
* |
||||
* @} |
||||
*/ |
||||
|
||||
MEMORY |
||||
{ |
||||
rom (rx) : ORIGIN = 0x1f000, LENGTH = 0xe1000 |
||||
ram (rwx) : ORIGIN = 0x20002800, LENGTH = 0x3D800 |
||||
} |
||||
|
||||
INCLUDE cortexm_base.ld |
Loading…
Reference in new issue