summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/spi.c
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/spi.c')
-rw-r--r--stmhal/spi.c84
1 files changed, 30 insertions, 54 deletions
diff --git a/stmhal/spi.c b/stmhal/spi.c
index 01b9665b53..f2036aadd7 100644
--- a/stmhal/spi.c
+++ b/stmhal/spi.c
@@ -37,30 +37,6 @@
#include "dma.h"
#include "spi.h"
-// The following defines are for compatability with the '405
-#if !defined(MICROPY_HW_SPI1_NSS)
-// X-skin: X5=PA4=SPI1_NSS, X6=PA5=SPI1_SCK, X7=PA6=SPI1_MISO, X8=PA7=SPI1_MOSI
-#define MICROPY_HW_SPI1_NSS (pin_A4)
-#define MICROPY_HW_SPI1_SCK (pin_A5)
-#define MICROPY_HW_SPI1_MISO (pin_A6)
-#define MICROPY_HW_SPI1_MOSI (pin_A7)
-#endif
-
-#if !defined(MICROPY_HW_SPI2_NSS)
-// Y-skin: Y5=PB12=SPI2_NSS, Y6=PB13=SPI2_SCK, Y7=PB14=SPI2_MISO, Y8=PB15=SPI2_MOSI
-#define MICROPY_HW_SPI2_NSS (pin_B12)
-#define MICROPY_HW_SPI2_SCK (pin_B13)
-#define MICROPY_HW_SPI2_MISO (pin_B14)
-#define MICROPY_HW_SPI2_MOSI (pin_B15)
-#endif
-
-#if !defined(MICROPY_HW_SPI3_NSS)
-#define MICROPY_HW_SPI3_NSS (pin_A4)
-#define MICROPY_HW_SPI3_SCK (pin_B3)
-#define MICROPY_HW_SPI3_MISO (pin_B4)
-#define MICROPY_HW_SPI3_MOSI (pin_B5)
-#endif
-
/// \moduleref pyb
/// \class SPI - a master-driven serial protocol
///
@@ -102,48 +78,48 @@ typedef struct _pyb_spi_obj_t {
uint32_t rx_dma_channel;
} pyb_spi_obj_t;
-#if MICROPY_HW_ENABLE_SPI1
+#if defined(MICROPY_HW_SPI1_SCK)
SPI_HandleTypeDef SPIHandle1 = {.Instance = NULL};
#endif
-#if MICROPY_HW_ENABLE_SPI2
+#if defined(MICROPY_HW_SPI2_SCK)
SPI_HandleTypeDef SPIHandle2 = {.Instance = NULL};
#endif
-#if MICROPY_HW_ENABLE_SPI3
+#if defined(MICROPY_HW_SPI3_SCK)
SPI_HandleTypeDef SPIHandle3 = {.Instance = NULL};
#endif
STATIC const pyb_spi_obj_t pyb_spi_obj[] = {
-#if MICROPY_HW_ENABLE_SPI1
+ #if defined(MICROPY_HW_SPI1_SCK)
{{&pyb_spi_type}, &SPIHandle1, DMA_STREAM_SPI1_TX, DMA_CHANNEL_SPI1_TX, DMA_STREAM_SPI1_RX, DMA_CHANNEL_SPI1_RX},
-#else
+ #else
{{&pyb_spi_type}, NULL, NULL, 0, NULL, 0},
-#endif
-#if MICROPY_HW_ENABLE_SPI2
+ #endif
+ #if defined(MICROPY_HW_SPI2_SCK)
{{&pyb_spi_type}, &SPIHandle2, DMA_STREAM_SPI2_TX, DMA_CHANNEL_SPI2_TX, DMA_STREAM_SPI2_RX, DMA_CHANNEL_SPI2_RX},
-#else
+ #else
{{&pyb_spi_type}, NULL, NULL, 0, NULL, 0},
-#endif
-#if MICROPY_HW_ENABLE_SPI3
+ #endif
+ #if defined(MICROPY_HW_SPI3_SCK)
{{&pyb_spi_type}, &SPIHandle3, DMA_STREAM_SPI3_TX, DMA_CHANNEL_SPI3_TX, DMA_STREAM_SPI3_RX, DMA_CHANNEL_SPI3_RX},
-#else
+ #else
{{&pyb_spi_type}, NULL, NULL, 0, NULL, 0},
-#endif
+ #endif
};
void spi_init0(void) {
// reset the SPI handles
-#if MICROPY_HW_ENABLE_SPI1
+ #if defined(MICROPY_HW_SPI1_SCK)
memset(&SPIHandle1, 0, sizeof(SPI_HandleTypeDef));
SPIHandle1.Instance = SPI1;
-#endif
-#if MICROPY_HW_ENABLE_SPI2
+ #endif
+ #if defined(MICROPY_HW_SPI2_SCK)
memset(&SPIHandle2, 0, sizeof(SPI_HandleTypeDef));
SPIHandle2.Instance = SPI2;
-#endif
-#if MICROPY_HW_ENABLE_SPI3
+ #endif
+ #if defined(MICROPY_HW_SPI3_SCK)
memset(&SPIHandle3, 0, sizeof(SPI_HandleTypeDef));
SPIHandle3.Instance = SPI3;
-#endif
+ #endif
}
// TODO allow to take a list of pins to use
@@ -158,7 +134,7 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
const pin_obj_t *pins[4];
if (0) {
-#if MICROPY_HW_ENABLE_SPI1
+ #if defined(MICROPY_HW_SPI1_SCK)
} else if (spi->Instance == SPI1) {
self = &pyb_spi_obj[0];
pins[0] = &MICROPY_HW_SPI1_NSS;
@@ -168,8 +144,8 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
GPIO_InitStructure.Alternate = GPIO_AF5_SPI1;
// enable the SPI clock
__SPI1_CLK_ENABLE();
-#endif
-#if MICROPY_HW_ENABLE_SPI2
+ #endif
+ #if defined(MICROPY_HW_SPI2_SCK)
} else if (spi->Instance == SPI2) {
self = &pyb_spi_obj[1];
pins[0] = &MICROPY_HW_SPI2_NSS;
@@ -179,8 +155,8 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
GPIO_InitStructure.Alternate = GPIO_AF5_SPI2;
// enable the SPI clock
__SPI2_CLK_ENABLE();
-#endif
-#if MICROPY_HW_ENABLE_SPI3
+ #endif
+ #if defined(MICROPY_HW_SPI3_SCK)
} else if (spi->Instance == SPI3) {
self = &pyb_spi_obj[2];
pins[0] = &MICROPY_HW_SPI3_NSS;
@@ -190,7 +166,7 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
GPIO_InitStructure.Alternate = GPIO_AF6_SPI3;
// enable the SPI clock
__SPI3_CLK_ENABLE();
-#endif
+ #endif
} else {
// SPI does not exist for this board (shouldn't get here, should be checked by caller)
return;
@@ -221,24 +197,24 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
void spi_deinit(SPI_HandleTypeDef *spi) {
HAL_SPI_DeInit(spi);
if (0) {
-#if MICROPY_HW_ENABLE_SPI1
+ #if defined(MICROPY_HW_SPI1_SCK)
} else if (spi->Instance == SPI1) {
__SPI1_FORCE_RESET();
__SPI1_RELEASE_RESET();
__SPI1_CLK_DISABLE();
-#endif
-#if MICROPY_HW_ENABLE_SPI2
+ #endif
+ #if defined(MICROPY_HW_SPI2_SCK)
} else if (spi->Instance == SPI2) {
__SPI2_FORCE_RESET();
__SPI2_RELEASE_RESET();
__SPI2_CLK_DISABLE();
-#endif
-#if MICROPY_HW_ENABLE_SPI3
+ #endif
+ #if defined(MICROPY_HW_SPI3_SCK)
} else if (spi->Instance == SPI3) {
__SPI3_FORCE_RESET();
__SPI3_RELEASE_RESET();
__SPI3_CLK_DISABLE();
-#endif
+ #endif
}
}