SPIv2 support added to L4 and L4+ families. Made GPIOv2 and GPIOv3 definitions more compatible (L4 affected).
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14955 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
205c3ab699
commit
b73feac604
|
@ -61,10 +61,10 @@
|
||||||
#define PAL_STM32_OTYPE_OPENDRAIN (1U << 2U)
|
#define PAL_STM32_OTYPE_OPENDRAIN (1U << 2U)
|
||||||
|
|
||||||
#define PAL_STM32_OSPEED_MASK (3U << 3U)
|
#define PAL_STM32_OSPEED_MASK (3U << 3U)
|
||||||
#define PAL_STM32_OSPEED_LOW (0U << 3U)
|
#define PAL_STM32_OSPEED_LOWEST (0U << 3U)
|
||||||
#define PAL_STM32_OSPEED_MEDIUM (1U << 3U)
|
#define PAL_STM32_OSPEED_MID1 (1U << 3U)
|
||||||
#define PAL_STM32_OSPEED_FAST (2U << 3U)
|
#define PAL_STM32_OSPEED_MID2 (2U << 3U)
|
||||||
#define PAL_STM32_OSPEED_HIGH (3U << 3U)
|
#define PAL_STM32_OSPEED_HIGHEST (3U << 3U)
|
||||||
|
|
||||||
#define PAL_STM32_PUPDR_MASK (3U << 5U)
|
#define PAL_STM32_PUPDR_MASK (3U << 5U)
|
||||||
#define PAL_STM32_PUPDR_FLOATING (0U << 5U)
|
#define PAL_STM32_PUPDR_FLOATING (0U << 5U)
|
||||||
|
|
|
@ -44,6 +44,11 @@
|
||||||
/* Driver constants. */
|
/* Driver constants. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Requires use of SPIv2 driver model.
|
||||||
|
*/
|
||||||
|
#define HAL_LLD_SELECT_SPI_V2 TRUE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name Platform identification
|
* @name Platform identification
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -39,7 +39,7 @@ include $(CHIBIOS)/os/hal/ports/STM32/LLD/RCCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver_v2.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv3/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv3/driver.mk
|
||||||
|
|
|
@ -39,7 +39,7 @@ include $(CHIBIOS)/os/hal/ports/STM32/LLD/RCCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv3/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv3/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver_v2.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv3/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv3/driver.mk
|
||||||
|
|
|
@ -44,6 +44,11 @@
|
||||||
/* Driver constants. */
|
/* Driver constants. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Requires use of SPIv2 driver model.
|
||||||
|
*/
|
||||||
|
#define HAL_LLD_SELECT_SPI_V2 TRUE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name Platform identification
|
* @name Platform identification
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -40,7 +40,7 @@ include $(CHIBIOS)/os/hal/ports/STM32/LLD/RCCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver_v2.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv2/driver.mk
|
||||||
|
|
|
@ -36,7 +36,7 @@ include $(CHIBIOS)/os/hal/ports/STM32/LLD/RCCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RNGv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv3/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv3/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver_v2.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv2/driver.mk
|
||||||
|
|
|
@ -40,7 +40,7 @@ include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDMMCv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver_v2.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv2/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv2/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USBv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USBv1/driver.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/LLD/xWDGv1/driver.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/LLD/xWDGv1/driver.mk
|
||||||
|
|
|
@ -35,41 +35,48 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
void spi_circular_cb(SPIDriver *spip);
|
void spi_circular_cb(SPIDriver *spip);
|
||||||
|
void spi_error_cb(SPIDriver *spip);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Circular SPI configuration (21MHz, CPHA=0, CPOL=0, MSb first).
|
* Circular SPI configuration (20MHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig c_spicfg = {
|
const SPIConfig c_spicfg = {
|
||||||
true,
|
.circular = true,
|
||||||
spi_circular_cb,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = spi_circular_cb,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
0,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_0,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Maximum speed SPI configuration (21MHz, CPHA=0, CPOL=0, MSb first).
|
* Maximum speed SPI configuration (20MHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig hs_spicfg = {
|
const SPIConfig hs_spicfg = {
|
||||||
false,
|
.circular = false,
|
||||||
NULL,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = NULL,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
0,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_0,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Low speed SPI configuration (328.125kHz, CPHA=0, CPOL=0, MSb first).
|
* Low speed SPI configuration (625kHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig ls_spicfg = {
|
const SPIConfig ls_spicfg = {
|
||||||
false,
|
.circular = false,
|
||||||
NULL,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = NULL,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
SPI_CR1_BR_2 | SPI_CR1_BR_1,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_2 | SPI_CR1_BR_1,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -94,13 +101,13 @@ void portab_setup(void) {
|
||||||
* SPI2 I/O pins setup.
|
* SPI2 I/O pins setup.
|
||||||
*/
|
*/
|
||||||
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New SCK. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 SCK. */
|
||||||
palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New MISO. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 MISO. */
|
||||||
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New MOSI. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 MOSI. */
|
||||||
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
|
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New CS. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 CS. */
|
||||||
palSetPad(GPIOB, 12);
|
palSetPad(GPIOB, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -312,7 +312,7 @@
|
||||||
*/
|
*/
|
||||||
#define STM32_SPI_USE_SPI1 FALSE
|
#define STM32_SPI_USE_SPI1 FALSE
|
||||||
#define STM32_SPI_USE_SPI2 TRUE
|
#define STM32_SPI_USE_SPI2 TRUE
|
||||||
#define STM32_SPI_USE_SPI3 FALSE
|
#define STM32_SPI_USE_SPI3 TRUE
|
||||||
#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
|
#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
|
||||||
#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
|
#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
|
||||||
#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
|
#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
|
||||||
|
|
|
@ -35,41 +35,60 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
void spi_circular_cb(SPIDriver *spip);
|
void spi_circular_cb(SPIDriver *spip);
|
||||||
|
void spi_error_cb(SPIDriver *spip);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Circular SPI configuration (21MHz, CPHA=0, CPOL=0, MSb first).
|
* Circular SPI configuration (30MHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig c_spicfg = {
|
const SPIConfig c_spicfg = {
|
||||||
true,
|
.circular = true,
|
||||||
spi_circular_cb,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = spi_circular_cb,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
0,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_0,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Maximum speed SPI configuration (21MHz, CPHA=0, CPOL=0, MSb first).
|
* Maximum speed SPI configuration (30MHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig hs_spicfg = {
|
const SPIConfig hs_spicfg = {
|
||||||
false,
|
.circular = false,
|
||||||
NULL,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = NULL,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
0,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_0,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Low speed SPI configuration (328.125kHz, CPHA=0, CPOL=0, MSb first).
|
* Low speed SPI configuration (937.5kHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig ls_spicfg = {
|
const SPIConfig ls_spicfg = {
|
||||||
false,
|
.circular = false,
|
||||||
NULL,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = NULL,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
SPI_CR1_BR_2 | SPI_CR1_BR_1,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_2 | SPI_CR1_BR_1,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Slave SPI configuration (CPHA=0, CPOL=0, MSb first).
|
||||||
|
*/
|
||||||
|
const SPIConfig sl_spicfg = {
|
||||||
|
.circular = false,
|
||||||
|
.slave = true,
|
||||||
|
.data_cb = NULL,
|
||||||
|
.error_cb = spi_error_cb,
|
||||||
|
.cr1 = 0U,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -94,14 +113,26 @@ void portab_setup(void) {
|
||||||
* SPI2 I/O pins setup.
|
* SPI2 I/O pins setup.
|
||||||
*/
|
*/
|
||||||
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New SCK. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 SCK. */
|
||||||
palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New MISO. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 MISO. */
|
||||||
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New MOSI. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 MOSI. */
|
||||||
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
|
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New CS. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 CS. */
|
||||||
palSetPad(GPIOB, 12);
|
palSetPad(GPIOB, 12);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SPI3 I/O pins setup.
|
||||||
|
*/
|
||||||
|
palSetPadMode(GPIOB, 3, PAL_MODE_ALTERNATE(6) |
|
||||||
|
PAL_STM32_OSPEED_HIGHEST); /* SPI3 SCK. */
|
||||||
|
palSetPadMode(GPIOB, 4, PAL_MODE_ALTERNATE(6) |
|
||||||
|
PAL_STM32_OSPEED_HIGHEST); /* SPI3 MISO. */
|
||||||
|
palSetPadMode(GPIOB, 5, PAL_MODE_ALTERNATE(6) |
|
||||||
|
PAL_STM32_OSPEED_HIGHEST); /* SPI3 MOSI. */
|
||||||
|
palSetPadMode(GPIOA, 4, PAL_MODE_ALTERNATE(6) |
|
||||||
|
PAL_STM32_OSPEED_HIGHEST); /* SPI3 NSSS. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#define PORTAB_BUTTON_PRESSED PAL_HIGH
|
#define PORTAB_BUTTON_PRESSED PAL_HIGH
|
||||||
|
|
||||||
#define PORTAB_SPI1 SPID2
|
#define PORTAB_SPI1 SPID2
|
||||||
|
#define PORTAB_SPI2 SPID3
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Module pre-compile time settings. */
|
/* Module pre-compile time settings. */
|
||||||
|
@ -62,6 +63,7 @@
|
||||||
extern const SPIConfig c_spicfg;
|
extern const SPIConfig c_spicfg;
|
||||||
extern const SPIConfig hs_spicfg;
|
extern const SPIConfig hs_spicfg;
|
||||||
extern const SPIConfig ls_spicfg;
|
extern const SPIConfig ls_spicfg;
|
||||||
|
extern const SPIConfig sl_spicfg;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -35,41 +35,48 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
void spi_circular_cb(SPIDriver *spip);
|
void spi_circular_cb(SPIDriver *spip);
|
||||||
|
void spi_error_cb(SPIDriver *spip);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Circular SPI configuration (30MHz, CPHA=0, CPOL=0, MSb first).
|
* Circular SPI configuration (30MHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig c_spicfg = {
|
const SPIConfig c_spicfg = {
|
||||||
true,
|
.circular = true,
|
||||||
spi_circular_cb,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = spi_circular_cb,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
0,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_0,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Maximum speed SPI configuration (30MHz, CPHA=0, CPOL=0, MSb first).
|
* Maximum speed SPI configuration (30MHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig hs_spicfg = {
|
const SPIConfig hs_spicfg = {
|
||||||
false,
|
.circular = false,
|
||||||
NULL,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = NULL,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
0,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_0,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Low speed SPI configuration (468.75kHz, CPHA=0, CPOL=0, MSb first).
|
* Low speed SPI configuration (937.5kHz, CPHA=0, CPOL=0, MSb first).
|
||||||
*/
|
*/
|
||||||
const SPIConfig ls_spicfg = {
|
const SPIConfig ls_spicfg = {
|
||||||
false,
|
.circular = false,
|
||||||
NULL,
|
.slave = false,
|
||||||
GPIOB,
|
.data_cb = NULL,
|
||||||
12,
|
.error_cb = spi_error_cb,
|
||||||
SPI_CR1_BR_2 | SPI_CR1_BR_1,
|
.ssport = GPIOB,
|
||||||
0
|
.sspad = 12U,
|
||||||
|
.cr1 = SPI_CR1_BR_2 | SPI_CR1_BR_1,
|
||||||
|
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -94,13 +101,13 @@ void portab_setup(void) {
|
||||||
* SPI2 I/O pins setup.
|
* SPI2 I/O pins setup.
|
||||||
*/
|
*/
|
||||||
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New SCK. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 SCK. */
|
||||||
palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New MISO. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 MISO. */
|
||||||
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
|
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New MOSI. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 MOSI. */
|
||||||
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
|
palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
|
||||||
PAL_STM32_OSPEED_HIGH); /* New CS. */
|
PAL_STM32_OSPEED_HIGHEST); /* SPI2 CS. */
|
||||||
palSetPad(GPIOB, 12);
|
palSetPad(GPIOB, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ int main(void) {
|
||||||
txbuf[i] = (uint8_t)i;
|
txbuf[i] = (uint8_t)i;
|
||||||
cacheBufferFlush(&txbuf[0], sizeof txbuf);
|
cacheBufferFlush(&txbuf[0], sizeof txbuf);
|
||||||
|
|
||||||
#if SPI_SUPPORTS_SLAVE_MODE == TRUE
|
#if (SPI_SUPPORTS_SLAVE_MODE == TRUE) && defined(PORTAB_SPI2)
|
||||||
spiStart(&PORTAB_SPI1, &hs_spicfg); /* Master transfer parameters. */
|
spiStart(&PORTAB_SPI1, &hs_spicfg); /* Master transfer parameters. */
|
||||||
spiStart(&PORTAB_SPI2, &sl_spicfg); /* Slave transfer parameters. */
|
spiStart(&PORTAB_SPI2, &sl_spicfg); /* Slave transfer parameters. */
|
||||||
do {
|
do {
|
||||||
|
|
Loading…
Reference in New Issue