mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
9d2647ec8b
The spi bus for the stk3200 doesn't actually work. Other efm32 based boards do work. After some guessing and some checking it turns out that the .loc is wrong. The original was USART_ROUTE_LOCATION_LOC1, which appears in other periph_conf. After changing it to USART_ROUTE_LOCATION_LOC2 the spi bus actually outputs data.
179 lines
3.5 KiB
C
179 lines
3.5 KiB
C
/*
|
|
* Copyright (C) 2015-2020 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_stk3200
|
|
* @{
|
|
*
|
|
* @file
|
|
* @brief Configuration of CPU peripherals for the STK3200 starter kit
|
|
*
|
|
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
|
* @author Bas Stottelaar <basstottelaar@gmail.com>
|
|
*/
|
|
|
|
#ifndef PERIPH_CONF_H
|
|
#define PERIPH_CONF_H
|
|
|
|
#include "cpu.h"
|
|
#include "periph_cpu.h"
|
|
#include "em_cmu.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @name Clock configuration
|
|
* @{
|
|
*/
|
|
#ifndef CLOCK_HF
|
|
#define CLOCK_HF cmuSelect_HFXO
|
|
#endif
|
|
#ifndef CLOCK_CORE_DIV
|
|
#define CLOCK_CORE_DIV cmuClkDiv_1
|
|
#endif
|
|
#ifndef CLOCK_LFA
|
|
#define CLOCK_LFA cmuSelect_LFXO
|
|
#endif
|
|
#ifndef CLOCK_LFB
|
|
#define CLOCK_LFB cmuSelect_CORELEDIV2
|
|
#endif
|
|
/** @} */
|
|
|
|
/**
|
|
* @name ADC configuration
|
|
* @{
|
|
*/
|
|
static const adc_conf_t adc_config[] = {
|
|
{
|
|
.dev = ADC0,
|
|
.cmu = cmuClock_ADC0,
|
|
}
|
|
};
|
|
|
|
static const adc_chan_conf_t adc_channel_config[] = {
|
|
{
|
|
.dev = 0,
|
|
.input = adcSingleInputTemp,
|
|
.reference = adcRef1V25,
|
|
.acq_time = adcAcqTime8
|
|
},
|
|
{
|
|
.dev = 0,
|
|
.input = adcSingleInputVDDDiv3,
|
|
.reference = adcRef1V25,
|
|
.acq_time = adcAcqTime8
|
|
}
|
|
};
|
|
|
|
#define ADC_DEV_NUMOF ARRAY_SIZE(adc_config)
|
|
#define ADC_NUMOF ARRAY_SIZE(adc_channel_config)
|
|
/** @} */
|
|
|
|
/**
|
|
* @name I2C configuration
|
|
* @{
|
|
*/
|
|
static const i2c_conf_t i2c_config[] = {
|
|
{
|
|
.dev = I2C0,
|
|
.sda_pin = GPIO_PIN(PE, 12),
|
|
.scl_pin = GPIO_PIN(PE, 13),
|
|
.loc = I2C_ROUTE_LOCATION_LOC6,
|
|
.cmu = cmuClock_I2C0,
|
|
.irq = I2C0_IRQn,
|
|
.speed = I2C_SPEED_NORMAL
|
|
}
|
|
};
|
|
|
|
#define I2C_NUMOF ARRAY_SIZE(i2c_config)
|
|
#define I2C_0_ISR isr_i2c0
|
|
/** @} */
|
|
|
|
/**
|
|
* @name RTT configuration
|
|
* @{
|
|
*/
|
|
#ifndef RTT_FREQUENCY
|
|
#define RTT_FREQUENCY (1U) /* in Hz */
|
|
#endif
|
|
/** @} */
|
|
|
|
/**
|
|
* @name SPI configuration
|
|
*
|
|
* @{
|
|
*/
|
|
static const spi_dev_t spi_config[] = {
|
|
{
|
|
.dev = USART1,
|
|
.mosi_pin = GPIO_PIN(PD, 7),
|
|
.miso_pin = GPIO_PIN(PD, 6),
|
|
.clk_pin = GPIO_PIN(PC, 15),
|
|
/* page 81 https://www.silabs.com/documents/public/data-sheets/efm32zg-datasheet.pdf */
|
|
.loc = USART_ROUTE_LOCATION_LOC3,
|
|
.cmu = cmuClock_USART1,
|
|
.irq = USART1_RX_IRQn
|
|
}
|
|
};
|
|
|
|
#define SPI_NUMOF ARRAY_SIZE(spi_config)
|
|
/** @} */
|
|
|
|
/**
|
|
* @name Timer configuration
|
|
*
|
|
* The implementation uses two timers in cascade mode.
|
|
* @{
|
|
*/
|
|
static const timer_conf_t timer_config[] = {
|
|
{
|
|
.prescaler = {
|
|
.dev = TIMER0,
|
|
.cmu = cmuClock_TIMER0
|
|
},
|
|
.timer = {
|
|
.dev = TIMER1,
|
|
.cmu = cmuClock_TIMER1
|
|
},
|
|
.irq = TIMER1_IRQn,
|
|
.channel_numof = 3
|
|
}
|
|
};
|
|
|
|
#define TIMER_NUMOF ARRAY_SIZE(timer_config)
|
|
#define TIMER_0_ISR isr_timer1
|
|
/** @} */
|
|
|
|
/**
|
|
* @name UART configuration
|
|
* @{
|
|
*/
|
|
static const uart_conf_t uart_config[] = {
|
|
{
|
|
.dev = LEUART0,
|
|
.rx_pin = GPIO_PIN(PD, 5),
|
|
.tx_pin = GPIO_PIN(PD, 4),
|
|
.loc = LEUART_ROUTE_LOCATION_LOC0,
|
|
.cmu = cmuClock_LEUART0,
|
|
.irq = LEUART0_IRQn
|
|
}
|
|
};
|
|
|
|
#define UART_NUMOF ARRAY_SIZE(uart_config)
|
|
#define UART_0_ISR_RX isr_leuart0
|
|
/** @} */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PERIPH_CONF_H */
|
|
/** @} */
|