mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
boards/weact-f411ce: add WeAct-f411ce
This commit is contained in:
parent
e200d009ad
commit
26a907576c
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2020 Inria
|
||||
# Copyright (c) 2020 Benjamin Valentin
|
||||
#
|
||||
# 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
|
||||
@ -11,17 +11,7 @@ config BOARD
|
||||
config BOARD_WEACT_F411CE
|
||||
bool
|
||||
default y
|
||||
select BOARD_COMMON_WEACT_F41XCX
|
||||
select CPU_MODEL_STM32F411CE
|
||||
|
||||
# Put defined MCU peripherals here (in alphabetical order)
|
||||
select HAS_PERIPH_ADC
|
||||
select HAS_PERIPH_I2C
|
||||
select HAS_PERIPH_PWM
|
||||
select HAS_PERIPH_RTC
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
select HAS_PERIPH_USBDEV
|
||||
|
||||
# Put other features for this board (in alphabetical order)
|
||||
select HAS_HIGHLEVEL_STDIO
|
||||
source "$(RIOTBOARD)/common/weact-f4x1cx/Kconfig"
|
||||
|
@ -1,3 +1,5 @@
|
||||
MODULE = board
|
||||
|
||||
DIRS = $(RIOTBOARD)/common/weact-f4x1cx
|
||||
|
||||
include $(RIOTBASE)/Makefile.base
|
||||
|
@ -1,15 +1,3 @@
|
||||
ifneq (,$(filter saul_default,$(USEMODULE)))
|
||||
USEMODULE += saul_gpio
|
||||
endif
|
||||
USEMODULE += boards_common_weact-f4x1cx
|
||||
|
||||
include $(RIOTBOARD)/common/makefiles/stdio_cdc_acm.dep.mk
|
||||
|
||||
ifneq (,$(filter stdio_cdc_acm,$(USEMODULE)))
|
||||
# The Mask-ROM bootloader provides USB-DFU capability
|
||||
FEATURES_REQUIRED += bootloader_stm32
|
||||
USEMODULE += usb_board_reset
|
||||
endif
|
||||
|
||||
ifneq (,$(filter mtd,$(USEMODULE)))
|
||||
USEMODULE += mtd_spi_nor
|
||||
endif
|
||||
include $(RIOTBOARD)/common/weact-f4x1cx/Makefile.dep
|
||||
|
@ -1,14 +1,3 @@
|
||||
CPU = stm32
|
||||
CPU_MODEL = stm32f411ce
|
||||
|
||||
# Put defined MCU peripherals here (in alphabetical order)
|
||||
FEATURES_PROVIDED += periph_adc
|
||||
FEATURES_PROVIDED += periph_i2c
|
||||
FEATURES_PROVIDED += periph_pwm
|
||||
FEATURES_PROVIDED += periph_rtc
|
||||
FEATURES_PROVIDED += periph_spi
|
||||
FEATURES_PROVIDED += periph_timer
|
||||
FEATURES_PROVIDED += periph_uart
|
||||
FEATURES_PROVIDED += periph_usbdev
|
||||
|
||||
FEATURES_PROVIDED += highlevel_stdio
|
||||
include $(RIOTBOARD)/common/weact-f4x1cx/Makefile.features
|
||||
|
@ -1,14 +1,5 @@
|
||||
INCLUDES += -I$(RIOTBOARD)/common/stm32/include
|
||||
# Product & Vendor ID taken from example firmware that the board was shipped with.
|
||||
CFLAGS += -DINTERNAL_PERIPHERAL_VID=0x0483
|
||||
CFLAGS += -DINTERNAL_PERIPHERAL_PID=0x5740
|
||||
|
||||
# default to flashing over USB
|
||||
PROGRAMMER ?= dfu-util
|
||||
DFU_USB_ID ?= 0483:df11
|
||||
DFU_FLAGS ?= -a 0 -s 0x08000000:leave
|
||||
ROM_OFFSET ?= 0x0
|
||||
|
||||
# CDC ACM is available faster on STM32
|
||||
TERM_DELAY ?= 1
|
||||
|
||||
# Setup of programmer and serial is shared between STM32 based boards
|
||||
include $(RIOTMAKE)/boards/stm32.inc.mk
|
||||
include $(RIOTMAKE)/tools/usb_board_reset.mk
|
||||
include $(RIOTBOARD)/common/weact-f4x1cx/Makefile.include
|
||||
|
@ -1,64 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Benjamin Valentin
|
||||
*
|
||||
* 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_weact-f411ce
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Board initialization code for the WeAct-F411CE board.
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include "board.h"
|
||||
#include "cpu.h"
|
||||
#include "mtd.h"
|
||||
#include "timex.h"
|
||||
#include "mtd_spi_nor.h"
|
||||
#include "periph/gpio.h"
|
||||
|
||||
#ifdef MODULE_MTD
|
||||
/* AT25SF041 */
|
||||
static const mtd_spi_nor_params_t _weact_nor_params = {
|
||||
.opcode = &mtd_spi_nor_opcode_default,
|
||||
.wait_chip_erase = 4800LU * US_PER_MS,
|
||||
.wait_32k_erase = 300LU * US_PER_MS,
|
||||
.wait_sector_erase = 70LU * US_PER_MS,
|
||||
.wait_chip_wake_up = 1LU * US_PER_MS,
|
||||
.clk = WEACT_411CE_NOR_SPI_CLK,
|
||||
.flag = WEACT_411CE_NOR_FLAGS,
|
||||
.spi = WEACT_411CE_NOR_SPI_DEV,
|
||||
.mode = WEACT_411CE_NOR_SPI_MODE,
|
||||
.cs = WEACT_411CE_NOR_SPI_CS,
|
||||
.wp = GPIO_UNDEF,
|
||||
.hold = GPIO_UNDEF,
|
||||
.addr_width = 3,
|
||||
};
|
||||
|
||||
static mtd_spi_nor_t weact_nor_dev = {
|
||||
.base = {
|
||||
.driver = &mtd_spi_nor_driver,
|
||||
.page_size = WEACT_411CE_NOR_PAGE_SIZE,
|
||||
.pages_per_sector = WEACT_411CE_NOR_PAGES_PER_SECTOR,
|
||||
},
|
||||
.params = &_weact_nor_params,
|
||||
};
|
||||
|
||||
mtd_dev_t *mtd0 = (mtd_dev_t *)&weact_nor_dev;
|
||||
#endif /* MODULE_MTD */
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
cpu_init();
|
||||
|
||||
gpio_init(LED0_PIN, GPIO_OUT);
|
||||
LED0_OFF;
|
||||
}
|
@ -1,103 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Benjamin Valentin
|
||||
*
|
||||
* 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_weact-f411ce
|
||||
*
|
||||
* @brief Support for the WeAct-F411CE Board
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Pin definitions and board configuration options
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "mtd.h"
|
||||
#include "periph_cpu.h"
|
||||
|
||||
/**
|
||||
* @name Xtimer configuration
|
||||
* @{
|
||||
*/
|
||||
#define XTIMER_BACKOFF (8)
|
||||
#define XTIMER_OVERHEAD (6)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief Product & Vendor ID taken from example firmware
|
||||
* that the board was shipped with.
|
||||
* @{
|
||||
*/
|
||||
#define INTERNAL_PERIPHERAL_VID (0x0483)
|
||||
#define INTERNAL_PERIPHERAL_PID (0x5740)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name LED pin definition and handlers
|
||||
* @{
|
||||
*/
|
||||
#define LED0_PORT GPIOC
|
||||
#define LED0_PIN GPIO_PIN(PORT_C, 13)
|
||||
#define LED0_MASK (1 << 13)
|
||||
|
||||
#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16))
|
||||
#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 0))
|
||||
#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name User button pin definition
|
||||
* @{
|
||||
*/
|
||||
#define BTN0_PIN GPIO_PIN(PORT_A, 0)
|
||||
#define BTN0_MODE GPIO_IN_PU
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name WeAct-F411CE NOR flash hardware configuration
|
||||
*
|
||||
* The pad for the NOR Flash (U3) is not populated.
|
||||
* You have to solder a serial flash yourself and adjust the parameters.
|
||||
* @{
|
||||
*/
|
||||
#define WEACT_411CE_NOR_PAGE_SIZE (256)
|
||||
#define WEACT_411CE_NOR_PAGES_PER_SECTOR (16)
|
||||
#define WEACT_411CE_NOR_FLAGS (SPI_NOR_F_SECT_4K | SPI_NOR_F_SECT_32K)
|
||||
#define WEACT_411CE_NOR_SPI_DEV SPI_DEV(0)
|
||||
#define WEACT_411CE_NOR_SPI_CLK SPI_CLK_10MHZ
|
||||
#define WEACT_411CE_NOR_SPI_CS GPIO_PIN(PORT_A, 4)
|
||||
#define WEACT_411CE_NOR_SPI_MODE SPI_MODE_0
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name MTD configuration
|
||||
* @{
|
||||
*/
|
||||
extern mtd_dev_t *mtd0;
|
||||
#define MTD_0 mtd0
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief Initialize board specific hardware, including clock, LEDs and std-IO
|
||||
*/
|
||||
void board_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BOARD_H */
|
||||
/** @} */
|
@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Benjamin Valentin
|
||||
*
|
||||
* 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_weact-f411ce
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Board specific configuration of direct mapped GPIOs
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef GPIO_PARAMS_H
|
||||
#define GPIO_PARAMS_H
|
||||
|
||||
#include "board.h"
|
||||
#include "saul/periph.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIO pin configuration
|
||||
*/
|
||||
static const saul_gpio_params_t saul_gpio_params[] =
|
||||
{
|
||||
{
|
||||
.name = "LED",
|
||||
.pin = LED0_PIN,
|
||||
.mode = GPIO_OUT,
|
||||
.flags = (SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR)
|
||||
},
|
||||
{
|
||||
.name = "KEY",
|
||||
.pin = BTN0_PIN,
|
||||
.mode = BTN0_MODE,
|
||||
.flags = SAUL_GPIO_INVERTED
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GPIO_PARAMS_H */
|
||||
/** @} */
|
@ -1,193 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Benjamin Valentin
|
||||
*
|
||||
* 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_weact-f411ce
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Peripheral MCU configuration for the WeAct-F411CE Board
|
||||
*
|
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||
* @author José Ignacio Alamos <jialamos@uc.cl>
|
||||
* @author Alexandre Abadie <alexandre.abadie@inria.fr>
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef PERIPH_CONF_H
|
||||
#define PERIPH_CONF_H
|
||||
|
||||
/* This board provides an LSE */
|
||||
#ifndef CONFIG_BOARD_HAS_LSE
|
||||
#define CONFIG_BOARD_HAS_LSE 1
|
||||
#endif
|
||||
|
||||
/* This board provides an HSE */
|
||||
#ifndef CONFIG_BOARD_HAS_HSE
|
||||
#define CONFIG_BOARD_HAS_HSE 1
|
||||
#endif
|
||||
|
||||
/* The HSE provides a 25MHz clock */
|
||||
#define CLOCK_HSE MHZ(25)
|
||||
|
||||
#include "periph_cpu.h"
|
||||
#include "clk_conf.h"
|
||||
#include "cfg_i2c1_pb8_pb9.h"
|
||||
#include "cfg_timer_tim5.h"
|
||||
#include "cfg_usb_otg_fs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @name UART configuration
|
||||
* @{
|
||||
*/
|
||||
static const uart_conf_t uart_config[] = {
|
||||
{
|
||||
.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 MODULE_PERIPH_DMA
|
||||
.dma = DMA_STREAM_UNDEF,
|
||||
.dma_chan = UINT8_MAX,
|
||||
#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 MODULE_PERIPH_DMA
|
||||
.dma = DMA_STREAM_UNDEF,
|
||||
.dma_chan = UINT8_MAX,
|
||||
#endif
|
||||
},
|
||||
};
|
||||
|
||||
/* assign ISR vector names */
|
||||
#define UART_0_ISR isr_usart2
|
||||
#define UART_1_ISR isr_usart1
|
||||
|
||||
/* deduct number of defined UART interfaces */
|
||||
#define UART_NUMOF ARRAY_SIZE(uart_config)
|
||||
/** @} */
|
||||
|
||||
/** @name 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), /* D3 */ .cc_chan = 1 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 10), /* D6 */ .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), /* D5 */ .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_C, 7), /* D9 */ .cc_chan = 1 },
|
||||
{ .pin = GPIO_PIN(PORT_C, 8), .cc_chan = 2 },
|
||||
{ .pin = GPIO_PIN(PORT_C, 9), .cc_chan = 3 } },
|
||||
.af = GPIO_AF2,
|
||||
.bus = APB1
|
||||
},
|
||||
};
|
||||
|
||||
#define PWM_NUMOF ARRAY_SIZE(pwm_config)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name SPI configuration
|
||||
* @{
|
||||
*/
|
||||
static const spi_conf_t spi_config[] = {
|
||||
{ /* U3 - SPI flash */
|
||||
.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),
|
||||
.mosi_af = GPIO_AF5,
|
||||
.miso_af = GPIO_AF5,
|
||||
.sclk_af = GPIO_AF5,
|
||||
.cs_af = GPIO_AF5,
|
||||
.rccmask = RCC_APB2ENR_SPI1EN,
|
||||
.apbbus = APB2
|
||||
},
|
||||
{
|
||||
.dev = SPI2,
|
||||
.mosi_pin = GPIO_PIN(PORT_B, 15),
|
||||
.miso_pin = GPIO_PIN(PORT_B, 14),
|
||||
.sclk_pin = GPIO_PIN(PORT_B, 13),
|
||||
.cs_pin = GPIO_PIN(PORT_B, 12),
|
||||
.mosi_af = GPIO_AF5,
|
||||
.miso_af = GPIO_AF5,
|
||||
.sclk_af = GPIO_AF5,
|
||||
.cs_af = GPIO_AF5,
|
||||
.rccmask = RCC_APB1ENR_SPI2EN,
|
||||
.apbbus = APB1
|
||||
},
|
||||
{
|
||||
.dev = SPI3,
|
||||
.mosi_pin = GPIO_PIN(PORT_B, 5),
|
||||
.miso_pin = GPIO_PIN(PORT_B, 4),
|
||||
.sclk_pin = GPIO_PIN(PORT_B, 3),
|
||||
.cs_pin = GPIO_PIN(PORT_A, 15),
|
||||
.mosi_af = GPIO_AF6,
|
||||
.miso_af = GPIO_AF6,
|
||||
.sclk_af = GPIO_AF6,
|
||||
.cs_af = GPIO_AF6,
|
||||
.rccmask = RCC_APB1ENR_SPI3EN,
|
||||
.apbbus = APB1
|
||||
},
|
||||
};
|
||||
|
||||
#define SPI_NUMOF ARRAY_SIZE(spi_config)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name ADC configuration
|
||||
*
|
||||
* Note that we do not configure all ADC channels,
|
||||
* and not in the STM32F411 order.
|
||||
* Feel free to add more if needed.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
static const adc_conf_t adc_config[] = {
|
||||
{GPIO_PIN(PORT_A, 0), 0, 0},
|
||||
{GPIO_PIN(PORT_A, 1), 0, 1},
|
||||
{GPIO_PIN(PORT_A, 4), 0, 4},
|
||||
{GPIO_PIN(PORT_B, 0), 0, 8},
|
||||
};
|
||||
|
||||
#define ADC_NUMOF ARRAY_SIZE(adc_config)
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PERIPH_CONF_H */
|
||||
/** @} */
|
Loading…
Reference in New Issue
Block a user