|
|
|
@ -216,147 +216,81 @@ static const pwm_conf_t pwm_config[] = {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name SPI configuration
|
|
|
|
|
*
|
|
|
|
|
* Clock configuration values based on the configured 47988736Hz module clock.
|
|
|
|
|
*
|
|
|
|
|
* Auto-generated by:
|
|
|
|
|
* cpu/kinetis_common/dist/calc_spi_scalers/calc_spi_scalers.c
|
|
|
|
|
*
|
|
|
|
|
* @{
|
|
|
|
|
*/
|
|
|
|
|
#define SPI_NUMOF 3
|
|
|
|
|
#define SPI_0_EN 1
|
|
|
|
|
#define SPI_1_EN 1
|
|
|
|
|
#define SPI_2_EN 1
|
|
|
|
|
#define SPI_3_EN 0
|
|
|
|
|
#define SPI_4_EN 0
|
|
|
|
|
#define SPI_5_EN 0
|
|
|
|
|
#define SPI_6_EN 0
|
|
|
|
|
#define SPI_7_EN 0
|
|
|
|
|
|
|
|
|
|
#define MULLE_PASTE_PARTS(left, index, right) MULLE_PASTE_PARTS2(left, index, right)
|
|
|
|
|
#define MULLE_PASTE_PARTS2(left, index, right) left##index##right
|
|
|
|
|
|
|
|
|
|
/* SPI 0 device config */
|
|
|
|
|
/* SPI_0 (in RIOT) is mapped to SPI0, CTAS=0 in hardware */
|
|
|
|
|
#define SPI_0_INDEX 0
|
|
|
|
|
#define SPI_0_CTAS 0
|
|
|
|
|
#define SPI_0_DEV MULLE_PASTE_PARTS(SPI, SPI_0_INDEX, )
|
|
|
|
|
#define SPI_0_CLKEN() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_SPI0_SHIFT) = 1)
|
|
|
|
|
#define SPI_0_CLKDIS() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_SPI0_SHIFT) = 0)
|
|
|
|
|
#define SPI_0_IRQ MULLE_PASTE_PARTS(SPI, SPI_0_INDEX, _IRQn)
|
|
|
|
|
#define SPI_0_IRQ_HANDLER MULLE_PASTE_PARTS(isr_spi, SPI_0_INDEX, )
|
|
|
|
|
#define SPI_0_IRQ_PRIO CPU_DEFAULT_IRQ_PRIO
|
|
|
|
|
#define SPI_0_FREQ SystemBusClock
|
|
|
|
|
/* SPI 0 pin configuration */
|
|
|
|
|
#define SPI_0_SCK_PORT PORTD
|
|
|
|
|
#define SPI_0_SCK_PIN 1
|
|
|
|
|
#define SPI_0_SCK_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_0_SCK_AF 2
|
|
|
|
|
#define SPI_0_SIN_PORT PORTD
|
|
|
|
|
#define SPI_0_SIN_PIN 3
|
|
|
|
|
#define SPI_0_SIN_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_0_SIN_AF 2
|
|
|
|
|
#define SPI_0_SOUT_PORT PORTD
|
|
|
|
|
#define SPI_0_SOUT_PIN 2
|
|
|
|
|
#define SPI_0_SOUT_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_0_SOUT_AF 2
|
|
|
|
|
#define SPI_0_PCS0_PORT PORTD
|
|
|
|
|
#define SPI_0_PCS0_PIN 0
|
|
|
|
|
#define SPI_0_PCS0_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_0_PCS0_AF 2
|
|
|
|
|
/* SPI chip select polarity */
|
|
|
|
|
#define SPI_0_PCS0_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_0_PCS1_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_0_PCS2_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_0_PCS3_ACTIVE_LOW 1
|
|
|
|
|
|
|
|
|
|
/* SPI 1 device config */
|
|
|
|
|
/* SPI_1 (in RIOT) is mapped to SPI1, CTAS=0 in hardware */
|
|
|
|
|
#define SPI_1_INDEX 1
|
|
|
|
|
#define SPI_1_CTAS 0
|
|
|
|
|
#define SPI_1_DEV MULLE_PASTE_PARTS(SPI, SPI_1_INDEX, )
|
|
|
|
|
#define SPI_1_CLKEN() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_SPI1_SHIFT) = 1)
|
|
|
|
|
#define SPI_1_CLKDIS() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_SPI1_SHIFT) = 0)
|
|
|
|
|
#define SPI_1_IRQ MULLE_PASTE_PARTS(SPI, SPI_1_INDEX, _IRQn)
|
|
|
|
|
#define SPI_1_IRQ_HANDLER MULLE_PASTE_PARTS(isr_spi, SPI_1_INDEX, )
|
|
|
|
|
#define SPI_1_IRQ_PRIO CPU_DEFAULT_IRQ_PRIO
|
|
|
|
|
#define SPI_1_FREQ SystemBusClock
|
|
|
|
|
/* SPI 0 pin configuration */
|
|
|
|
|
#define SPI_1_SCK_PORT PORTE
|
|
|
|
|
#define SPI_1_SCK_PIN 2
|
|
|
|
|
#define SPI_1_SCK_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTE_SHIFT) = 1)
|
|
|
|
|
#define SPI_1_SCK_AF 2
|
|
|
|
|
#define SPI_1_SIN_PORT PORTE
|
|
|
|
|
#define SPI_1_SIN_PIN 3
|
|
|
|
|
#define SPI_1_SIN_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTE_SHIFT) = 1)
|
|
|
|
|
#define SPI_1_SIN_AF 2
|
|
|
|
|
#define SPI_1_SOUT_PORT PORTE
|
|
|
|
|
#define SPI_1_SOUT_PIN 1
|
|
|
|
|
#define SPI_1_SOUT_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTE_SHIFT) = 1)
|
|
|
|
|
#define SPI_1_SOUT_AF 2
|
|
|
|
|
#define SPI_1_PCS0_PORT PORTE
|
|
|
|
|
#define SPI_1_PCS0_PIN 4
|
|
|
|
|
#define SPI_1_PCS0_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTE_SHIFT) = 1)
|
|
|
|
|
#define SPI_1_PCS0_AF 2
|
|
|
|
|
/* SPI chip select polarity */
|
|
|
|
|
#define SPI_1_PCS0_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_1_PCS1_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_1_PCS2_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_1_PCS3_ACTIVE_LOW 1
|
|
|
|
|
|
|
|
|
|
/* SPI 2 device config */
|
|
|
|
|
/* SPI_2 (in RIOT) is mapped to SPI0, CTAS=1 in hardware */
|
|
|
|
|
#define SPI_2_INDEX 0
|
|
|
|
|
#define SPI_2_CTAS 1
|
|
|
|
|
#define SPI_2_DEV MULLE_PASTE_PARTS(SPI, SPI_2_INDEX, )
|
|
|
|
|
#define SPI_2_CLKEN() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_SPI0_SHIFT) = 1)
|
|
|
|
|
#define SPI_2_CLKDIS() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_SPI0_SHIFT) = 0)
|
|
|
|
|
#define SPI_2_IRQ MULLE_PASTE_PARTS(SPI, SPI_2_INDEX, _IRQn)
|
|
|
|
|
/* #define SPI_2_IRQ_HANDLER MULLE_PASTE_PARTS(isr_spi, SPI_2_INDEX, ) */
|
|
|
|
|
#define SPI_2_IRQ_PRIO CPU_DEFAULT_IRQ_PRIO
|
|
|
|
|
#define SPI_2_FREQ SystemBusClock
|
|
|
|
|
/* SPI 2 pin configuration, must be the same as the other RIOT device using this
|
|
|
|
|
* hardware module */
|
|
|
|
|
#define SPI_2_SCK_PORT PORTD
|
|
|
|
|
#define SPI_2_SCK_PIN 1
|
|
|
|
|
#define SPI_2_SCK_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_2_SCK_AF 2
|
|
|
|
|
#define SPI_2_SIN_PORT PORTD
|
|
|
|
|
#define SPI_2_SIN_PIN 3
|
|
|
|
|
#define SPI_2_SIN_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_2_SIN_AF 2
|
|
|
|
|
#define SPI_2_SOUT_PORT PORTD
|
|
|
|
|
#define SPI_2_SOUT_PIN 2
|
|
|
|
|
#define SPI_2_SOUT_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_2_SOUT_AF 2
|
|
|
|
|
#define SPI_2_PCS0_PORT PORTD
|
|
|
|
|
#define SPI_2_PCS0_PIN 0
|
|
|
|
|
#define SPI_2_PCS0_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTD_SHIFT) = 1)
|
|
|
|
|
#define SPI_2_PCS0_AF 2
|
|
|
|
|
/* SPI chip select polarity */
|
|
|
|
|
#define SPI_2_PCS0_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_2_PCS1_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_2_PCS2_ACTIVE_LOW 1
|
|
|
|
|
#define SPI_2_PCS3_ACTIVE_LOW 1
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name SPI delay timing configuration
|
|
|
|
|
* @{ */
|
|
|
|
|
/* These values are necessary for communicating with the AT86RF212B when running
|
|
|
|
|
* the MCU core at high clock frequencies. */
|
|
|
|
|
/* NB: The given values are the reciprocals of the time, in order to compute the
|
|
|
|
|
* scalers using only integer math. */
|
|
|
|
|
#define SPI_0_TCSC_FREQ (5555555) /* It looks silly, but this is correct. 1/180e-9 */
|
|
|
|
|
#define SPI_0_TASC_FREQ (5454545) /* It looks silly, but this is correct. 1/183e-9 */
|
|
|
|
|
#define SPI_0_TDT_FREQ (4000000) /* 1/250e-9 */
|
|
|
|
|
|
|
|
|
|
/* SPI_1 timings */
|
|
|
|
|
#define SPI_1_TCSC_FREQ (0)
|
|
|
|
|
#define SPI_1_TASC_FREQ (0)
|
|
|
|
|
#define SPI_1_TDT_FREQ (0)
|
|
|
|
|
|
|
|
|
|
/* SPI_2 timings */
|
|
|
|
|
#define SPI_2_TCSC_FREQ (0)
|
|
|
|
|
#define SPI_2_TASC_FREQ (0)
|
|
|
|
|
#define SPI_2_TDT_FREQ (0)
|
|
|
|
|
static const uint32_t spi_clk_config[] = {
|
|
|
|
|
(
|
|
|
|
|
SPI_CTAR_PBR(0) | SPI_CTAR_BR(8) | /* -> 93728Hz */
|
|
|
|
|
SPI_CTAR_PCSSCK(0) | SPI_CTAR_CSSCK(8) |
|
|
|
|
|
SPI_CTAR_PASC(0) | SPI_CTAR_ASC(8) |
|
|
|
|
|
SPI_CTAR_PDT(0) | SPI_CTAR_DT(8)
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
SPI_CTAR_PBR(0) | SPI_CTAR_BR(6) | /* -> 374912Hz */
|
|
|
|
|
SPI_CTAR_PCSSCK(0) | SPI_CTAR_CSSCK(6) |
|
|
|
|
|
SPI_CTAR_PASC(0) | SPI_CTAR_ASC(6) |
|
|
|
|
|
SPI_CTAR_PDT(0) | SPI_CTAR_DT(6)
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
SPI_CTAR_PBR(1) | SPI_CTAR_BR(4) | /* -> 999765Hz */
|
|
|
|
|
SPI_CTAR_PCSSCK(1) | SPI_CTAR_CSSCK(3) |
|
|
|
|
|
SPI_CTAR_PASC(1) | SPI_CTAR_ASC(3) |
|
|
|
|
|
SPI_CTAR_PDT(1) | SPI_CTAR_DT(3)
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
SPI_CTAR_PBR(2) | SPI_CTAR_BR(0) | /* -> 4798873Hz */
|
|
|
|
|
SPI_CTAR_PCSSCK(2) | SPI_CTAR_CSSCK(0) |
|
|
|
|
|
SPI_CTAR_PASC(2) | SPI_CTAR_ASC(0) |
|
|
|
|
|
SPI_CTAR_PDT(2) | SPI_CTAR_DT(0)
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
SPI_CTAR_PBR(1) | SPI_CTAR_BR(0) | /* -> 7998122Hz */
|
|
|
|
|
SPI_CTAR_PCSSCK(1) | SPI_CTAR_CSSCK(0) |
|
|
|
|
|
SPI_CTAR_PASC(1) | SPI_CTAR_ASC(0) |
|
|
|
|
|
SPI_CTAR_PDT(1) | SPI_CTAR_DT(0)
|
|
|
|
|
)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/** @} */
|
|
|
|
|
static const spi_conf_t spi_config[] = {
|
|
|
|
|
{
|
|
|
|
|
.dev = SPI0,
|
|
|
|
|
.pin_miso = GPIO_PIN(PORT_D, 3),
|
|
|
|
|
.pin_mosi = GPIO_PIN(PORT_D, 2),
|
|
|
|
|
.pin_clk = GPIO_PIN(PORT_D, 1),
|
|
|
|
|
.pin_cs = {
|
|
|
|
|
GPIO_PIN(PORT_D, 0),
|
|
|
|
|
GPIO_UNDEF,
|
|
|
|
|
GPIO_UNDEF,
|
|
|
|
|
GPIO_UNDEF,
|
|
|
|
|
GPIO_UNDEF
|
|
|
|
|
},
|
|
|
|
|
.pcr = GPIO_AF_2,
|
|
|
|
|
.simmask = SIM_SCGC6_SPI0_MASK
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
.dev = SPI1,
|
|
|
|
|
.pin_miso = GPIO_PIN(PORT_E, 3),
|
|
|
|
|
.pin_mosi = GPIO_PIN(PORT_E, 1),
|
|
|
|
|
.pin_clk = GPIO_PIN(PORT_E, 2),
|
|
|
|
|
.pin_cs = {
|
|
|
|
|
GPIO_PIN(PORT_E, 4),
|
|
|
|
|
GPIO_UNDEF,
|
|
|
|
|
GPIO_UNDEF,
|
|
|
|
|
GPIO_UNDEF,
|
|
|
|
|
GPIO_UNDEF
|
|
|
|
|
},
|
|
|
|
|
.pcr = GPIO_AF_2,
|
|
|
|
|
.simmask = SIM_SCGC6_SPI1_MASK
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#define SPI_NUMOF (sizeof(spi_config) / sizeof(spi_config[0]))
|
|
|
|
|
/** @} */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|