summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobert-hh <robert@hammelrath.com>2022-08-10 11:04:09 +0200
committerDamien George <damien@micropython.org>2022-08-23 14:59:48 +1000
commit54eaa8c8a6c854e13f3c1b646ef44d0888628353 (patch)
tree3c157e7f146be021e97c3b098883674e4e1cce93
parentc3305c49e422369119ab211dc8fb2366aa6d7d53 (diff)
stm32/mphalport: Add mp_hal_get_spi_obj() helper function.
The function spi_from_mp_obj() is kept since it is used by the cc3k driver.
-rw-r--r--ports/stm32/mphalport.h2
-rw-r--r--ports/stm32/spi.c15
2 files changed, 17 insertions, 0 deletions
diff --git a/ports/stm32/mphalport.h b/ports/stm32/mphalport.h
index 8028782a9..358d9cd25 100644
--- a/ports/stm32/mphalport.h
+++ b/ports/stm32/mphalport.h
@@ -110,6 +110,8 @@ bool mp_hal_pin_config_alt(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, u
void mp_hal_pin_config_speed(mp_hal_pin_obj_t pin_obj, uint32_t speed);
void extint_register_pin(const pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj);
+mp_obj_base_t *mp_hal_get_spi_obj(mp_obj_t spi_in);
+
enum {
MP_HAL_MAC_WLAN0 = 0,
MP_HAL_MAC_WLAN1,
diff --git a/ports/stm32/spi.c b/ports/stm32/spi.c
index 188376ec0..9c031cad2 100644
--- a/ports/stm32/spi.c
+++ b/ports/stm32/spi.c
@@ -30,6 +30,7 @@
#include "py/runtime.h"
#include "py/mphal.h"
#include "spi.h"
+#include "extmod/machine_spi.h"
// Possible DMA configurations for SPI buses:
// SPI1_TX: DMA2_Stream3.CHANNEL_3 or DMA2_Stream5.CHANNEL_3
@@ -685,6 +686,20 @@ const spi_t *spi_from_mp_obj(mp_obj_t o) {
}
}
+mp_obj_base_t *mp_hal_get_spi_obj(mp_obj_t o) {
+ if (mp_obj_is_type(o, &machine_hard_spi_type)) {
+ return MP_OBJ_TO_PTR(o);
+ }
+ #if MICROPY_PY_MACHINE_SOFTSPI
+ else if (mp_obj_is_type(o, &mp_machine_soft_spi_type)) {
+ return MP_OBJ_TO_PTR(o);
+ }
+ #endif
+ else {
+ mp_raise_TypeError(MP_ERROR_TEXT("expecting an SPI object"));
+ }
+}
+
/******************************************************************************/
// Implementation of low-level SPI C protocol