-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6594 from aabadie/nucleo144_f429
boards/nucleo144-f429: initial support
- Loading branch information
Showing
13 changed files
with
9,452 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
MODULE = board | ||
|
||
include $(RIOTBASE)/Makefile.base |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
include $(RIOTBOARD)/nucleo-common/Makefile.dep |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Put defined MCU peripherals here (in alphabetical order) | ||
FEATURES_PROVIDED += periph_cpuid | ||
FEATURES_PROVIDED += periph_gpio | ||
FEATURES_PROVIDED += periph_i2c | ||
FEATURES_PROVIDED += periph_pwm | ||
FEATURES_PROVIDED += periph_spi | ||
FEATURES_PROVIDED += periph_timer | ||
FEATURES_PROVIDED += periph_uart | ||
|
||
# load the common Makefile.features for Nucleo boards | ||
include $(RIOTBOARD)/nucleo144-common/Makefile.features | ||
|
||
# The board MPU family (used for grouping by the CI system) | ||
FEATURES_MCU_GROUP = cortex_m4_3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# define the cpu used by the nucleo144-f429 board | ||
export CPU = stm32f4 | ||
export CPU_MODEL = stm32f429zi | ||
|
||
# load the common Makefile.include for Nucleo-144 boards | ||
include $(RIOTBOARD)/nucleo144-common/Makefile.include |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/* | ||
* Copyright (C) 2017 Inria | ||
* | ||
* 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_nucleo144-f429 | ||
* @{ | ||
* | ||
* @file | ||
* @brief Board specific implementations for the nucleo144-f429 board | ||
* | ||
* @author Alexandre Abadie <alexandre.abadie@inria.fr> | ||
* | ||
* @} | ||
*/ | ||
|
||
#include "board.h" | ||
#include "periph/gpio.h" | ||
|
||
void board_init(void) | ||
{ | ||
/* initialize the CPU */ | ||
cpu_init(); | ||
|
||
/* initialize the boards LEDs */ | ||
gpio_init(LED0_PIN, GPIO_OUT); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
source [find board/st_nucleo_f4.cfg] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
/* | ||
* Copyright (C) 2017 Inria | ||
* | ||
* 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_nucleo144-f429 Nucleo144-F429 | ||
* @ingroup boards | ||
* @brief Board specific files for the nucleo144-f429 board | ||
* @{ | ||
* | ||
* @file | ||
* @brief Board specific definitions for the nucleo144-f429 board | ||
* | ||
* @author Alexandre Abadie <alexandre.abadie@inria.fr> | ||
*/ | ||
|
||
#ifndef BOARD_H | ||
#define BOARD_H | ||
|
||
#include "board_common.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* @name xtimer configuration | ||
* @{ | ||
*/ | ||
#define XTIMER_DEV TIMER_DEV(0) | ||
#define XTIMER_CHAN (0) | ||
#define XTIMER_OVERHEAD (6) | ||
#define XTIMER_BACKOFF (5) | ||
/** @} */ | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* BOARD_H */ | ||
/** @} */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,247 @@ | ||
/* | ||
* Copyright (C) 2017 Inria | ||
* | ||
* 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_nucleo144-f429 | ||
* @{ | ||
* | ||
* @file | ||
* @name Peripheral MCU configuration for the nucleo144-f429 board | ||
* | ||
* @author Alexandre Abadie <alexandre.abadie@inria.fr> | ||
*/ | ||
|
||
#ifndef PERIPH_CONF_H | ||
#define PERIPH_CONF_H | ||
|
||
#include "periph_cpu.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* @name Clock system configuration | ||
* @{ | ||
*/ | ||
#define CLOCK_HSE (8000000U) /* external oscillator */ | ||
#define CLOCK_CORECLOCK (180000000U) /* desired core clock frequency */ | ||
|
||
/* the actual PLL values are automatically generated */ | ||
#define CLOCK_PLL_M (CLOCK_HSE / 1000000) | ||
#define CLOCK_PLL_N ((CLOCK_CORECLOCK / 1000000) * 2) | ||
#define CLOCK_PLL_P (2U) | ||
#define CLOCK_PLL_Q (CLOCK_PLL_N / 48) | ||
#define CLOCK_AHB_DIV RCC_CFGR_HPRE_DIV1 | ||
#define CLOCK_APB1_DIV RCC_CFGR_PPRE1_DIV4 | ||
#define CLOCK_APB2_DIV RCC_CFGR_PPRE2_DIV2 | ||
#define CLOCK_FLASH_LATENCY FLASH_ACR_LATENCY_5WS | ||
|
||
/* bus clocks for simplified peripheral initialization, UPDATE MANUALLY! */ | ||
#define CLOCK_AHB (CLOCK_CORECLOCK / 1) | ||
#define CLOCK_APB1 (CLOCK_CORECLOCK / 4) | ||
#define CLOCK_APB2 (CLOCK_CORECLOCK / 2) | ||
/** @} */ | ||
|
||
/** | ||
* @name Timer configuration | ||
* @{ | ||
*/ | ||
static const timer_conf_t timer_config[] = { | ||
{ | ||
.dev = TIM5, | ||
.max = 0xffffffff, | ||
.rcc_mask = RCC_APB1ENR_TIM5EN, | ||
.bus = APB1, | ||
.irqn = TIM5_IRQn | ||
} | ||
}; | ||
|
||
#define TIMER_0_ISR isr_tim5 | ||
|
||
#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) | ||
/** @} */ | ||
|
||
/** | ||
* @name UART configuration | ||
* @{ | ||
*/ | ||
static const uart_conf_t uart_config[] = { | ||
{ | ||
.dev = USART3, | ||
.rcc_mask = RCC_APB1ENR_USART3EN, | ||
.rx_pin = GPIO_PIN(PORT_D, 9), | ||
.tx_pin = GPIO_PIN(PORT_D, 8), | ||
.rx_af = GPIO_AF7, | ||
.tx_af = GPIO_AF7, | ||
.bus = APB1, | ||
.irqn = USART3_IRQn, | ||
#ifdef UART_USE_DMA | ||
.dma_stream = 6, | ||
.dma_chan = 4 | ||
#endif | ||
}, | ||
{ | ||
.dev = USART2, | ||
.rcc_mask = RCC_APB1ENR_USART2EN, | ||
.rx_pin = GPIO_PIN(PORT_A, 3), | ||
.tx_pin = GPIO_PIN(PORT_A, 2), | ||
.rx_af = GPIO_AF7, | ||
.tx_af = GPIO_AF7, | ||
.bus = APB1, | ||
.irqn = USART2_IRQn, | ||
#ifdef UART_USE_DMA | ||
.dma_stream = 5, | ||
.dma_chan = 4 | ||
#endif | ||
}, | ||
{ | ||
.dev = USART1, | ||
.rcc_mask = RCC_APB2ENR_USART1EN, | ||
.rx_pin = GPIO_PIN(PORT_A, 10), | ||
.tx_pin = GPIO_PIN(PORT_A, 9), | ||
.rx_af = GPIO_AF7, | ||
.tx_af = GPIO_AF7, | ||
.bus = APB2, | ||
.irqn = USART1_IRQn, | ||
#ifdef UART_USE_DMA | ||
.dma_stream = 4, | ||
.dma_chan = 4 | ||
#endif | ||
}, | ||
}; | ||
|
||
#define UART_0_ISR (isr_usart3) | ||
#define UART_0_DMA_ISR (isr_dma1_stream6) | ||
#define UART_1_ISR (isr_usart2) | ||
#define UART_1_DMA_ISR (isr_dma1_stream5) | ||
#define UART_2_ISR (isr_usart1) | ||
#define UART_2_DMA_ISR (isr_dma1_stream4) | ||
|
||
#define UART_NUMOF (sizeof(uart_config) / sizeof(uart_config[0])) | ||
/** @} */ | ||
|
||
/** | ||
* @brief PWM configuration | ||
* @{ | ||
*/ | ||
static const pwm_conf_t pwm_config[] = { | ||
{ | ||
.dev = TIM2, | ||
.rcc_mask = RCC_APB1ENR_TIM2EN, | ||
.chan = { { .pin = GPIO_PIN(PORT_A, 15), .cc_chan = 0}, | ||
{ .pin = GPIO_PIN(PORT_B, 3), .cc_chan = 1}, | ||
{ .pin = GPIO_PIN(PORT_B, 10), .cc_chan = 2}, | ||
{ .pin = GPIO_UNDEF, .cc_chan = 0} }, | ||
.af = GPIO_AF1, | ||
.bus = APB1 | ||
}, | ||
{ | ||
.dev = TIM3, | ||
.rcc_mask = RCC_APB1ENR_TIM3EN, | ||
.chan = { { .pin = GPIO_PIN(PORT_B, 4), .cc_chan = 0 }, | ||
{ .pin = GPIO_PIN(PORT_B, 5), .cc_chan = 1 }, | ||
{ .pin = GPIO_UNDEF, .cc_chan = 0 }, | ||
{ .pin = GPIO_UNDEF, .cc_chan = 0 } }, | ||
.af = GPIO_AF2, | ||
.bus = APB1 | ||
} | ||
}; | ||
|
||
#define PWM_NUMOF (sizeof(pwm_config) / sizeof(pwm_config[0])) | ||
/** @} */ | ||
|
||
/** | ||
* @name SPI configuration | ||
* | ||
* @note The spi_divtable is auto-generated from | ||
* `cpu/stm32_common/dist/spi_divtable/spi_divtable.c` | ||
* @{ | ||
*/ | ||
static const uint8_t spi_divtable[2][5] = { | ||
{ /* for APB1 @ 90000000Hz */ | ||
7, /* -> 351562Hz */ | ||
7, /* -> 351562Hz */ | ||
6, /* -> 703125Hz */ | ||
3, /* -> 5625000Hz */ | ||
2 /* -> 11250000Hz */ | ||
}, | ||
{ /* for APB2 @ 180000000Hz */ | ||
7, /* -> 703125Hz */ | ||
7, /* -> 703125Hz */ | ||
7, /* -> 703125Hz */ | ||
4, /* -> 5625000Hz */ | ||
3 /* -> 11250000Hz */ | ||
} | ||
}; | ||
|
||
static const spi_conf_t spi_config[] = { | ||
{ | ||
.dev = SPI1, | ||
.mosi_pin = GPIO_PIN(PORT_A, 7), | ||
.miso_pin = GPIO_PIN(PORT_A, 6), | ||
.sclk_pin = GPIO_PIN(PORT_A, 5), | ||
.cs_pin = GPIO_PIN(PORT_A, 4), | ||
.af = GPIO_AF5, | ||
.rccmask = RCC_APB2ENR_SPI1EN, | ||
.apbbus = APB2 | ||
} | ||
}; | ||
|
||
#define SPI_NUMOF (sizeof(spi_config) / sizeof(spi_config[0])) | ||
/** @} */ | ||
|
||
|
||
/** | ||
* @name I2C configuration | ||
* @{ | ||
*/ | ||
#define I2C_NUMOF (1U) | ||
#define I2C_0_EN 1 | ||
#define I2C_IRQ_PRIO 1 | ||
#define I2C_APBCLK (42000000U) | ||
|
||
/* I2C 0 device configuration */ | ||
#define I2C_0_DEV I2C1 | ||
#define I2C_0_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C1EN)) | ||
#define I2C_0_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C1EN)) | ||
#define I2C_0_EVT_IRQ I2C1_EV_IRQn | ||
#define I2C_0_EVT_ISR isr_i2c1_ev | ||
#define I2C_0_ERR_IRQ I2C1_ER_IRQn | ||
#define I2C_0_ERR_ISR isr_i2c1_er | ||
/* I2C 0 pin configuration */ | ||
#define I2C_0_SCL_PORT GPIOB | ||
#define I2C_0_SCL_PIN 8 | ||
#define I2C_0_SCL_AF 4 | ||
#define I2C_0_SCL_CLKEN() (periph_clk_en(AHB1, RCC_AHB1ENR_GPIOBEN)) | ||
#define I2C_0_SDA_PORT GPIOB | ||
#define I2C_0_SDA_PIN 9 | ||
#define I2C_0_SDA_AF 4 | ||
#define I2C_0_SDA_CLKEN() (periph_clk_en(AHB1, RCC_AHB1ENR_GPIOBEN)) | ||
/** @} */ | ||
|
||
/** | ||
* @name ADC configuration | ||
* @{ | ||
*/ | ||
#define ADC_NUMOF (0) | ||
/** @} */ | ||
|
||
/** | ||
* @name DAC configuration | ||
* @{ | ||
*/ | ||
#define DAC_NUMOF (0) | ||
/** @} */ | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* PERIPH_CONF_H */ | ||
/** @} */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.