From c24d81119c4e34936e2c8be1e7c7aa79a71e0d14 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Sat, 29 Jun 2019 20:55:19 +1000 Subject: [PATCH] stm32/boards/NUCLEO_L452RE: Add definition files for new board. --- .../boards/NUCLEO_L452RE/mpconfigboard.h | 74 ++++++++++++++++ .../boards/NUCLEO_L452RE/mpconfigboard.mk | 5 ++ ports/stm32/boards/NUCLEO_L452RE/pins.csv | 86 +++++++++++++++++++ .../boards/NUCLEO_L452RE/stm32l4xx_hal_conf.h | 20 +++++ 4 files changed, 185 insertions(+) create mode 100644 ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h create mode 100644 ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.mk create mode 100644 ports/stm32/boards/NUCLEO_L452RE/pins.csv create mode 100644 ports/stm32/boards/NUCLEO_L452RE/stm32l4xx_hal_conf.h diff --git a/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h b/ports/stm32/boards/NUCLEO_L452RE/mpconfigboard.h new file mode 100644 index 0000000000..9823ae9b9b --- /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 0000000000..25ccb45a94 --- /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 0000000000..adc319575a --- /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 0000000000..fd380ab735 --- /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