summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h74
-rw-r--r--ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.mk5
-rw-r--r--ports/stm32/boards/NUCLEO_L452RE/pins.csv86
-rw-r--r--ports/stm32/boards/NUCLEO_L452RE/stm32l4xx_hal_conf.h20
4 files changed, 185 insertions, 0 deletions
diff --git a/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h b/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h
new file mode 100644
index 000000000..9823ae9b9
--- /dev/null
+++ b/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h
@@ -0,0 +1,74 @@
+#define MICROPY_HW_BOARD_NAME "NUCLEO-L452RE"
+#define MICROPY_HW_MCU_NAME "STM32L452RE"
+
+#define MICROPY_PY_USOCKET (0)
+#define MICROPY_PY_NETWORK (0)
+
+#define MICROPY_HW_ENABLE_RTC (1)
+#define MICROPY_HW_ENABLE_RNG (1)
+#define MICROPY_HW_ENABLE_DAC (1)
+#define MICROPY_HW_ENABLE_SERVO (0) // SERVO requires TIM5 (not on L452).
+#define MICROPY_HW_HAS_SWITCH (1)
+
+// MSI is used and is 4MHz
+#define MICROPY_HW_CLK_PLLM (1)
+#define MICROPY_HW_CLK_PLLN (40)
+#define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV7)
+#define MICROPY_HW_CLK_PLLQ (RCC_PLLQ_DIV2)
+#define MICROPY_HW_CLK_PLLR (RCC_PLLR_DIV2)
+#define MICROPY_HW_FLASH_LATENCY FLASH_LATENCY_4
+
+// The board has an external 32kHz crystal
+#define MICROPY_HW_RTC_USE_LSE (1)
+
+// UART config
+#define MICROPY_HW_UART1_TX (pin_B6)
+#define MICROPY_HW_UART1_RX (pin_B7)
+#define MICROPY_HW_UART2_TX (pin_A2) // VCP TX
+#define MICROPY_HW_UART2_RX (pin_A3) // VCP RX
+#define MICROPY_HW_UART3_TX (pin_C10)
+#define MICROPY_HW_UART3_RX (pin_C11)
+#define MICROPY_HW_UART4_TX (pin_A0)
+#define MICROPY_HW_UART4_RX (pin_A1)
+// USART2 is connected to the ST-LINK USB VCP
+#define MICROPY_HW_UART_REPL PYB_UART_2
+#define MICROPY_HW_UART_REPL_BAUD 115200
+
+// I2C busses
+#define MICROPY_HW_I2C1_SCL (pin_B8) // Arduino D15, pin 3 on CN10
+#define MICROPY_HW_I2C1_SDA (pin_B9) // Arduino D14, pin 5 on CN10
+#define MICROPY_HW_I2C2_SCL (pin_B10) // Arduino D6, pin 25 on CN10
+#define MICROPY_HW_I2C2_SDA (pin_B11) // pin 18 on CN10
+#define MICROPY_HW_I2C3_SCL (pin_A7) // pin 15 on CN10
+#define MICROPY_HW_I2C3_SDA (pin_B4) // pin 27 on CN10
+#define MICROPY_HW_I2C4_SCL (pin_C0) // pin 38 on CN7
+#define MICROPY_HW_I2C4_SDA (pin_C1) // pin 36 on CN7
+
+// SPI busses
+#define MICROPY_HW_SPI1_NSS (pin_A15) // pin 17 on CN7
+#define MICROPY_HW_SPI1_SCK (pin_A5) // Arduino D13, pin 11 on CN10
+#define MICROPY_HW_SPI1_MISO (pin_A6) // Arduino D12, pin 13 on CN10
+#define MICROPY_HW_SPI1_MOSI (pin_A7) // Arduino D11, pin 15 on CN10
+#define MICROPY_HW_SPI2_NSS (pin_B12) // pin 16 on CN10
+#define MICROPY_HW_SPI2_SCK (pin_B13) // pin 30 on CN10
+#define MICROPY_HW_SPI2_MISO (pin_B14) // pin 28 on CN10
+#define MICROPY_HW_SPI2_MOSI (pin_B15) // pin 26 on CN10
+#define MICROPY_HW_SPI3_NSS (pin_A4) // pin 32 on CN7
+#define MICROPY_HW_SPI3_SCK (pin_C10) // pin 1 on CN7
+#define MICROPY_HW_SPI3_MISO (pin_C11) // pin 2 on CN7
+#define MICROPY_HW_SPI3_MOSI (pin_C12) // pin 3 on CN7
+
+// CAN busses
+#define MICROPY_HW_CAN1_TX (pin_B9)
+#define MICROPY_HW_CAN1_RX (pin_B8)
+
+// USER B1 has a pull-up and is active low
+#define MICROPY_HW_USRSW_PIN (pin_C13)
+#define MICROPY_HW_USRSW_PULL (0)
+#define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_FALLING)
+#define MICROPY_HW_USRSW_PRESSED (0)
+
+// NUCLEO-64 has one user LED
+#define MICROPY_HW_LED1 (pin_A5) // green
+#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
+#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))
diff --git a/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.mk b/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.mk
new file mode 100644
index 000000000..25ccb45a9
--- /dev/null
+++ b/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.mk
@@ -0,0 +1,5 @@
+MCU_SERIES = l4
+CMSIS_MCU = STM32L452xx
+AF_FILE = boards/stm32l452_af.csv
+LD_FILES = boards/stm32l452xe.ld boards/common_basic.ld
+OPENOCD_CONFIG = boards/openocd_stm32l4.cfg
diff --git a/ports/stm32/boards/NUCLEO_L452RE/pins.csv b/ports/stm32/boards/NUCLEO_L452RE/pins.csv
new file mode 100644
index 000000000..adc319575
--- /dev/null
+++ b/ports/stm32/boards/NUCLEO_L452RE/pins.csv
@@ -0,0 +1,86 @@
+CN9_D0,PA3
+CN9_D1,PA2
+CN9_D2,PA10
+CN9_D3,PB3
+CN9_D4,PB5
+CN9_D5,PB4
+CN9_D6,PB10
+CN9_D7,PA8
+CN5_D8,PA9
+CN5_D9,PC7
+CN5_D10,PB6
+CN5_D11,PA7
+CN5_D12,PA6
+CN5_D13,PA5
+CN5_D14,PB9
+CN5_D15,PB8
+CN8_A0,PA0
+CN8_A1,PA1
+CN8_A2,PA4
+CN8_A3,PB0
+CN8_A4,PC1
+CN8_A5,PC0
+CN9_RX,PA3
+CN9_TX,PA2
+CN5_SCL,PB8
+CN5_SDA,PB9
+CN5_SCK,PA5
+CN5_MISO,PA6
+CN5_MOSI,PA7
+CN5_CS,PB6
+CN7_28,PA0
+CN7_30,PA1
+CN10_35,PA2
+CN10_37,PA3
+CN7_32,PA4
+CN10_11,PA5
+CN10_13,PA6
+CN10_15,PA7
+CN10_23,PA8
+CN10_21,PA9
+CN10_33,PA10
+CN10_14,PA11
+CN10_12,PA12
+CN7_13,PA13
+CN7_15,PA14
+CN7_17,PA15
+CN7_34,PB0
+CN10_24,PB1
+CN10_22,PB2
+CN10_31,PB3
+CN10_27,PB4
+CN10_29,PB5
+CN10_17,PB6
+CN7_21,PB7
+CN10_3,PB8
+CN10_5,PB9
+CN10_25,PB10
+CN10_18,PB11
+CN10_16,PB12
+CN10_30,PB13
+CN10_28,PB14
+CN10_26,PB15
+CN7_38,PC0
+CN7_36,PC1
+CN7_35,PC2
+CN7_37,PC3
+CN10_34,PC4
+CN10_6,PC5
+CN10_4,PC6
+CN10_19,PC7
+CN10_2,PC8
+CN10_1,PC9
+CN7_1,PC10
+CN7_2,PC11
+CN7_3,PC12
+CN7_23,PC13
+CN7_25,PC14
+CN7_27,PC15
+CN7_4,PD2
+CN7_29,PH0
+CN7_31,PH1
+BOOT0,PH3
+SWDIO,PA13
+SWCLK,PA14
+USER_B1,PC13
+LED_GREEN,PA5
diff --git a/ports/stm32/boards/NUCLEO_L452RE/stm32l4xx_hal_conf.h b/ports/stm32/boards/NUCLEO_L452RE/stm32l4xx_hal_conf.h
new file mode 100644
index 000000000..fd380ab73
--- /dev/null
+++ b/ports/stm32/boards/NUCLEO_L452RE/stm32l4xx_hal_conf.h
@@ -0,0 +1,20 @@
+/* This file is part of the MicroPython project, http://micropython.org/
+ * The MIT License (MIT)
+ * Copyright (c) 2019 Damien P. George
+ */
+#ifndef MICROPY_INCLUDED_STM32L4XX_HAL_CONF_H
+#define MICROPY_INCLUDED_STM32L4XX_HAL_CONF_H
+
+#include "boards/stm32l4xx_hal_conf_base.h"
+
+// Oscillator values in Hz
+#define HSE_VALUE (8000000)
+#define LSE_VALUE (32768)
+#define EXTERNAL_SAI1_CLOCK_VALUE (48000)
+#define EXTERNAL_SAI2_CLOCK_VALUE (48000)
+
+// Oscillator timeouts in ms
+#define HSE_STARTUP_TIMEOUT (100)
+#define LSE_STARTUP_TIMEOUT (5000)
+
+#endif // MICROPY_INCLUDED_STM32L4XX_HAL_CONF_H