1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request #13045 from aabadie/pr/boards/remote_factorize

boards/remote*: cleanup and factorize code in peripheral configuration headers
This commit is contained in:
Francisco 2020-03-03 13:21:04 +01:00 committed by GitHub
commit 3f062a78b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 375 additions and 306 deletions

View File

@ -2,4 +2,9 @@ CPU = cc2538
CPU_MODEL = cc2538sf53
# Put defined MCU peripherals here (in alphabetical order)
FEATURES_PROVIDED += periph_adc
FEATURES_PROVIDED += periph_i2c
FEATURES_PROVIDED += periph_rtt
FEATURES_PROVIDED += periph_spi
FEATURES_PROVIDED += periph_timer
FEATURES_PROVIDED += periph_uart

View File

@ -0,0 +1,52 @@
/*
* Copyright (C) 2014-2016 Freie Universität Berlin
* 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Common default ADC configuration for the RE-Mote board revision A
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* @author Antonio Lignan <alinan@zolertia.com>
* @author Sebastian Meiling <s@mlng.net>
*/
#ifndef CFG_ADC_DEFAULT_H
#define CFG_ADC_DEFAULT_H
#include "periph_cpu.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name ADC configuration
* @{
*/
#define SOC_ADC_ADCCON3_EREF SOC_ADC_ADCCON3_EREF_AVDD5
static const adc_conf_t adc_config[] = {
GPIO_PIN(PORT_A, 5), /**< GPIO_PA5 = ADC1_PIN */
GPIO_PIN(PORT_A, 4), /**< GPIO_PA4 = ADC2_PIN */
/* voltage divider with 5/3 relationship to allow 5V sensors */
GPIO_PIN(PORT_A, 2), /**< GPIO_PA2 = ADC3_PIN */
};
#define ADC_NUMOF ARRAY_SIZE(adc_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* CFG_ADC_DEFAULT_H */
/** @} */

View File

@ -0,0 +1,41 @@
/*
* Copyright (C) 2014-2016 Freie Universität Berlin
* 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Common default clock configuration for the RE-Mote board revision A
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* @author Antonio Lignan <alinan@zolertia.com>
* @author Sebastian Meiling <s@mlng.net>
*/
#ifndef CFG_CLK_DEFAULT_H
#define CFG_CLK_DEFAULT_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name Clock system configuration
* @{
*/
#define CLOCK_CORECLOCK (32000000U) /* 32MHz */
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* CFG_CLK_DEFAULT_H */
/** @} */

View File

@ -0,0 +1,53 @@
/*
* Copyright (C) 2014-2016 Freie Universität Berlin
* 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Common default I2C configuration for the RE-Mote board revision A
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* @author Antonio Lignan <alinan@zolertia.com>
* @author Sebastian Meiling <s@mlng.net>
*/
#ifndef CFG_I2C_DEFAULT_H
#define CFG_I2C_DEFAULT_H
#include "periph_cpu.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name I2C configuration
* @{
*/
#define I2C_IRQ_PRIO 1
static const i2c_conf_t i2c_config[] = {
{
.speed = I2C_SPEED_FAST, /**< bus speed */
.scl_pin = GPIO_PIN(PORT_C, 3), /**< GPIO_PC3 */
.sda_pin = GPIO_PIN(PORT_C, 2) /**< GPIO_PC2 */
},
};
#define I2C_NUMOF ARRAY_SIZE(i2c_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* CFG_I2C_DEFAULT_H */
/** @} */

View File

@ -0,0 +1,60 @@
/*
* Copyright (C) 2014-2016 Freie Universität Berlin
* 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Common default SPI configuration for the RE-Mote board revision A
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* @author Antonio Lignan <alinan@zolertia.com>
* @author Sebastian Meiling <s@mlng.net>
*/
#ifndef CFG_SPI_DEFAULT_H
#define CFG_SPI_DEFAULT_H
#include "periph_cpu.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name SPI configuration
* @{
*/
static const spi_conf_t spi_config[] = {
{
.num = 0,
.mosi_pin = GPIO_PIN(PORT_B, 1),
.miso_pin = GPIO_PIN(PORT_B, 3),
.sck_pin = GPIO_PIN(PORT_B, 2),
.cs_pin = GPIO_PIN(PORT_B, 5)
},
{
.num = 1,
.mosi_pin = GPIO_PIN(PORT_C, 5),
.miso_pin = GPIO_PIN(PORT_C, 6),
.sck_pin = GPIO_PIN(PORT_C, 4),
.cs_pin = GPIO_PIN(PORT_A, 7)
}
};
#define SPI_NUMOF ARRAY_SIZE(spi_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* CFG_SPI_DEFAULT_H */
/** @} */

View File

@ -0,0 +1,68 @@
/*
* Copyright (C) 2014-2016 Freie Universität Berlin
* 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Common default timer configuration for the RE-Mote board revision A
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* @author Antonio Lignan <alinan@zolertia.com>
* @author Sebastian Meiling <s@mlng.net>
*/
#ifndef CFG_TIMER_DEFAULT_H
#define CFG_TIMER_DEFAULT_H
#include "periph_cpu.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name Timer configuration
*
* General purpose timers (GPT[0-3]) are configured consecutively and in order
* (without gaps) starting from GPT0, i.e. if multiple timers are enabled.
*
* @{
*/
static const timer_conf_t timer_config[] = {
{
.chn = 2,
.cfg = GPTMCFG_16_BIT_TIMER, /* required for XTIMER */
},
{
.chn = 1,
.cfg = GPTMCFG_32_BIT_TIMER,
},
{
.chn = 2,
.cfg = GPTMCFG_16_BIT_TIMER,
},
{
.chn = 1,
.cfg = GPTMCFG_32_BIT_TIMER,
},
};
#define TIMER_NUMOF ARRAY_SIZE(timer_config)
#define TIMER_IRQ_PRIO 1
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* CFG_TIMER_DEFAULT_H */
/** @} */

View File

@ -0,0 +1,66 @@
/*
* Copyright (C) 2014-2016 Freie Universität Berlin
* 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Common default UART configuration for the RE-Mote board revision A
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* @author Antonio Lignan <alinan@zolertia.com>
* @author Sebastian Meiling <s@mlng.net>
*/
#ifndef CFG_UART_DEFAULT_H
#define CFG_UART_DEFAULT_H
#include "periph_cpu.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name UART configuration
* @{
*/
static const uart_conf_t uart_config[] = {
/* UART0 is mapped to debug usb */
{
.dev = UART0_BASEADDR,
.rx_pin = GPIO_PIN(PORT_A, 0),
.tx_pin = GPIO_PIN(PORT_A, 1),
.cts_pin = GPIO_UNDEF,
.rts_pin = GPIO_UNDEF
},
{
.dev = UART1_BASEADDR,
.rx_pin = GPIO_PIN(PORT_C, 1),
.tx_pin = GPIO_PIN(PORT_C, 0),
.cts_pin = GPIO_UNDEF,
.rts_pin = GPIO_UNDEF
}
};
/* interrupt function name mapping */
#define UART_0_ISR isr_uart0
#define UART_1_ISR isr_uart1
/* macros common across all UARTs */
#define UART_NUMOF ARRAY_SIZE(uart_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* CFG_UART_DEFAULT_H */
/** @} */

View File

@ -1,112 +0,0 @@
/*
* Copyright (C) 2014 Freie Universität Berlin
* Copyright (C) 2015 Zolertia SL
*
* 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_common_remote
* @{
*
* @file
* @brief Peripheral MCU configuration for the Re-Mote boards
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
* Antonio Lignan <alinan@zolertia.com>
*/
#ifndef PERIPH_COMMON_H
#define PERIPH_COMMON_H
#include "periph_cpu.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name Clock system configuration
* @{
*/
#define CLOCK_CORECLOCK (32000000U) /* 32MHz */
/** @} */
/**
* @name Timer configuration
*
* General purpose timers (GPT[0-3]) are configured consecutively and in order
* (without gaps) starting from GPT0, i.e. if multiple timers are enabled.
*
* @{
*/
static const timer_conf_t timer_config[] = {
{
.chn = 2,
.cfg = GPTMCFG_16_BIT_TIMER, /* required for XTIMER */
},
{
.chn = 1,
.cfg = GPTMCFG_32_BIT_TIMER,
},
{
.chn = 2,
.cfg = GPTMCFG_16_BIT_TIMER,
},
{
.chn = 1,
.cfg = GPTMCFG_32_BIT_TIMER,
},
};
#define TIMER_NUMOF ARRAY_SIZE(timer_config)
#define TIMER_IRQ_PRIO 1
/** @} */
/**
* @name Radio peripheral configuration
* @{
*/
#define RADIO_IRQ_PRIO 1
/** @} */
/**
* @name UART configuration
* @{
*/
static const uart_conf_t uart_config[] = {
/* UART0 is mapped to debug usb */
{
.dev = UART0_BASEADDR,
.rx_pin = GPIO_PIN(PORT_A, 0),
.tx_pin = GPIO_PIN(PORT_A, 1),
.cts_pin = GPIO_UNDEF,
.rts_pin = GPIO_UNDEF
},
{
.dev = UART1_BASEADDR,
.rx_pin = GPIO_PIN(PORT_C, 1),
.tx_pin = GPIO_PIN(PORT_C, 0),
.cts_pin = GPIO_UNDEF,
.rts_pin = GPIO_UNDEF
}
};
/* interrupt function name mapping */
#define UART_0_ISR isr_uart0
#define UART_1_ISR isr_uart1
/* macros common across all UARTs */
#define UART_NUMOF ARRAY_SIZE(uart_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* PERIPH_COMMON_H */
/** @} */

View File

@ -1,9 +1 @@
# Put defined MCU peripherals here (in alphabetical order)
FEATURES_PROVIDED += periph_adc
FEATURES_PROVIDED += periph_gpio periph_gpio_irq
FEATURES_PROVIDED += periph_i2c
FEATURES_PROVIDED += periph_spi
FEATURES_PROVIDED += periph_timer
FEATURES_PROVIDED += periph_uart
include $(RIOTBOARD)/common/remote/Makefile.features

View File

@ -19,36 +19,16 @@
#ifndef PERIPH_CONF_H
#define PERIPH_CONF_H
#include "periph_common.h"
#include "cfg_adc_default.h"
#include "cfg_clk_default.h"
#include "cfg_i2c_default.h"
#include "cfg_timer_default.h"
#include "cfg_uart_default.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name I2C configuration
* @{
*/
#define I2C_NUMOF 1
#define I2C_0_EN 1
#define I2C_IRQ_PRIO 1
/* I2C 0 device configuration */
#define I2C_0_DEV 0
#define I2C_0_IRQ I2C_IRQn
#define I2C_0_IRQ_HANDLER isr_i2c
#define I2C_0_SCL_PIN GPIO_PIN(PORT_C, 3)
#define I2C_0_SDA_PIN GPIO_PIN(PORT_C, 2)
static const i2c_conf_t i2c_config[I2C_NUMOF] = {
{
.speed = I2C_SPEED_FAST, /**< bus speed */
.scl_pin = I2C_0_SCL_PIN,
.sda_pin = I2C_0_SDA_PIN,
},
};
/** @} */
/**
* @name SPI configuration
* @{
@ -73,23 +53,6 @@ static const spi_conf_t spi_config[] = {
#define SPI_NUMOF ARRAY_SIZE(spi_config)
/** @} */
/**
* @name ADC configuration
* @{
*/
#define SOC_ADC_ADCCON3_EREF SOC_ADC_ADCCON3_EREF_AVDD5
static const adc_conf_t adc_config[] = {
GPIO_PIN(PORT_A, 5), /**< GPIO_PA5 = ADC1_PIN */
GPIO_PIN(PORT_A, 4), /**< GPIO_PA4 = ADC2_PIN */
/* voltage divider with 5/3 relationship to allow 5V sensors */
GPIO_PIN(PORT_A, 2), /**< GPIO_PA2 = ADC3_PIN */
};
#define ADC_NUMOF ARRAY_SIZE(adc_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif

View File

@ -1,8 +1 @@
# Put defined MCU peripherals here (in alphabetical order)
FEATURES_PROVIDED += periph_adc
FEATURES_PROVIDED += periph_i2c
FEATURES_PROVIDED += periph_spi
FEATURES_PROVIDED += periph_timer
FEATURES_PROVIDED += periph_uart
include $(RIOTBOARD)/common/remote/Makefile.features

View File

@ -22,7 +22,10 @@
#ifndef PERIPH_CONF_H
#define PERIPH_CONF_H
#include "periph_common.h"
#include "periph_cpu.h"
#include "cfg_clk_default.h"
#include "cfg_timer_default.h"
#include "cfg_uart_default.h"
#ifdef __cplusplus
extern "C" {

View File

@ -1,8 +1 @@
# Put defined MCU peripherals here (in alphabetical order)
FEATURES_PROVIDED += periph_adc
FEATURES_PROVIDED += periph_i2c
FEATURES_PROVIDED += periph_spi
FEATURES_PROVIDED += periph_timer
FEATURES_PROVIDED += periph_uart
include $(RIOTBOARD)/common/remote/Makefile.features

View File

@ -22,71 +22,17 @@
#ifndef PERIPH_CONF_H
#define PERIPH_CONF_H
#include "periph_common.h"
#include "cfg_adc_default.h"
#include "cfg_clk_default.h"
#include "cfg_i2c_default.h"
#include "cfg_spi_default.h"
#include "cfg_timer_default.h"
#include "cfg_uart_default.h"
#ifdef __cplusplus
extern "C" {
extern "C" {
#endif
/**
* @name I2C configuration
* @{
*/
#define I2C_IRQ_PRIO 1
static const i2c_conf_t i2c_config[] = {
{
.speed = I2C_SPEED_FAST, /**< bus speed */
.scl_pin = GPIO_PIN(2, 3), /**< GPIO_PC3 */
.sda_pin = GPIO_PIN(2, 2) /**< GPIO_PC2 */
},
};
#define I2C_NUMOF ARRAY_SIZE(i2c_config)
/** @} */
/**
* @name SPI configuration
* @{
*/
static const spi_conf_t spi_config[] = {
{
.num = 0,
.mosi_pin = GPIO_PIN(1, 1),
.miso_pin = GPIO_PIN(1, 3),
.sck_pin = GPIO_PIN(1, 2),
.cs_pin = GPIO_PIN(1, 5)
},
{
.num = 1,
.mosi_pin = GPIO_PIN(2, 5),
.miso_pin = GPIO_PIN(2, 6),
.sck_pin = GPIO_PIN(2, 4),
.cs_pin = GPIO_PIN(0, 7)
}
};
#define SPI_NUMOF ARRAY_SIZE(spi_config)
/** @} */
/**
* @name ADC configuration
* @{
*/
#define SOC_ADC_ADCCON3_EREF SOC_ADC_ADCCON3_EREF_AVDD5
static const adc_conf_t adc_config[] = {
GPIO_PIN(0, 5), /**< GPIO_PA5 = ADC1_PIN */
GPIO_PIN(0, 4), /**< GPIO_PA4 = ADC2_PIN */
/* voltage divider with 5/3 relationship to allow 5V sensors */
GPIO_PIN(0, 2), /**< GPIO_PA2 = ADC3_PIN */
};
#define ADC_NUMOF ARRAY_SIZE(adc_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif

View File

@ -1,9 +1 @@
# Put defined MCU peripherals here (in alphabetical order)
FEATURES_PROVIDED += periph_adc
FEATURES_PROVIDED += periph_i2c
FEATURES_PROVIDED += periph_spi
FEATURES_PROVIDED += periph_timer
FEATURES_PROVIDED += periph_uart
include $(RIOTBOARD)/common/remote/Makefile.features

View File

@ -23,70 +23,17 @@
#ifndef PERIPH_CONF_H
#define PERIPH_CONF_H
#include "cc2538_gpio.h"
#include "periph_cpu.h"
#include "periph_common.h"
#include "cfg_adc_default.h"
#include "cfg_clk_default.h"
#include "cfg_i2c_default.h"
#include "cfg_spi_default.h"
#include "cfg_timer_default.h"
#include "cfg_uart_default.h"
#ifdef __cplusplus
extern "C" {
extern "C" {
#endif
/**
* @name I2C configuration
* @{
*/
#define I2C_IRQ_PRIO 1
static const i2c_conf_t i2c_config[] = {
{
.speed = I2C_SPEED_FAST, /**< bus speed */
.scl_pin = GPIO_PIN(2, 3), /**< GPIO_PC3 */
.sda_pin = GPIO_PIN(2, 2) /**< GPIO_PC2 */
},
};
#define I2C_NUMOF ARRAY_SIZE(i2c_config)
/** @} */
/**
* @name SPI configuration
* @{
*/
static const spi_conf_t spi_config[] = {
{
.num = 0,
.mosi_pin = GPIO_PIN(1, 1),
.miso_pin = GPIO_PIN(1, 3),
.sck_pin = GPIO_PIN(1, 2),
.cs_pin = GPIO_PIN(1, 5)
},
{
.num = 1,
.mosi_pin = GPIO_PIN(2, 5),
.miso_pin = GPIO_PIN(2, 6),
.sck_pin = GPIO_PIN(2, 4),
.cs_pin = GPIO_PIN(0, 7)
}
};
#define SPI_NUMOF ARRAY_SIZE(spi_config)
/** @} */
/**
* @name ADC configuration
* @{
*/
#define SOC_ADC_ADCCON3_EREF SOC_ADC_ADCCON3_EREF_AVDD5
static const adc_conf_t adc_config[] = {
GPIO_PIN(0, 5), /**< GPIO_PA5 = ADC1_PIN */
GPIO_PIN(0, 4), /**< GPIO_PA4 = ADC2_PIN */
/* voltage divider with 5/3 relationship to allow 5V sensors */
GPIO_PIN(0, 2), /**< GPIO_PA2 = ADC3_PIN */
};
#define ADC_NUMOF ARRAY_SIZE(adc_config)
/** @} */
#ifdef __cplusplus
} /* end extern "C" */
#endif

View File

@ -350,6 +350,13 @@ typedef gpio_t adc_conf_t;
#endif
/** @} */
/**
* @name Radio peripheral configuration
* @{
*/
#define RADIO_IRQ_PRIO 1
/** @} */
#ifdef __cplusplus
}
#endif