Browse Source

stm32/boards/NUCLEO_L152RE: Add NUCLEO-L152RE board support.

This change adds NUCLEO-L152RE support to the STM32 port.
NUCLEO-L152RE: https://www.st.com/en/evaluation-tools/nucleo-l152re.html
This board use STM32L152RE:
https://www.st.com/en/microcontrollers-microprocessors/stm32l152re.html
pull/9412/head
yn386 2 years ago
committed by Damien George
parent
commit
e6d3513187
  1. 15
      ports/stm32/boards/NUCLEO_L152RE/board.json
  2. 31
      ports/stm32/boards/NUCLEO_L152RE/deploy.md
  3. 74
      ports/stm32/boards/NUCLEO_L152RE/mpconfigboard.h
  4. 4
      ports/stm32/boards/NUCLEO_L152RE/mpconfigboard.mk
  5. 76
      ports/stm32/boards/NUCLEO_L152RE/pins.csv
  6. 10
      ports/stm32/boards/NUCLEO_L152RE/stm32l1xx_hal_conf.h

15
ports/stm32/boards/NUCLEO_L152RE/board.json

@ -0,0 +1,15 @@
{
"deploy": [
"./deploy.md"
],
"docs": "",
"features": [],
"images": [
"nucleo_l152re.jpg"
],
"mcu": "stm32l1",
"product": "Nucleo L152RE",
"thumbnail": "",
"url": "",
"vendor": "ST Microelectronics"
}

31
ports/stm32/boards/NUCLEO_L152RE/deploy.md

@ -0,0 +1,31 @@
### STM32 via ST-Link
Nucleo and Discovery boards typically include a built-in ST-Link programmer.
A `.bin` or `.hex` file can be flashed using [st-flash](https://github.com/stlink-org/stlink).
```bash
# Optional erase to clear existing filesystem.
st-flash erase
# Flash .bin
st-flash write firmware.bin 0x08000000
# or, flash .hex
st-flash --format ihex write firmware.hex
```
A `.hex` file can be flashed using [STM32 Cube Programmer](https://www.st.com/en/development-tools/stm32cubeprog.html).
```bash
STM32_Programmer.sh -c port=SWD mode=UR dLPM -d firmware.hex -v -hardRst
```
### STM32 via DFU
Boards with USB support can also be programmed via the ST DFU bootloader, using e.g. [dfu-util](http://dfu-util.sourceforge.net/) or [pydfu.py](https://github.com/micropython/micropython/blob/master/tools/pydfu.py).
To enter the bootloader the `BOOT0` pin can be connected to `VCC` during reset, or you can use `machine.bootloader()` from the MicroPython REPL.
```bash
dfu-util --alt 0 -D firmware.dfu
```

74
ports/stm32/boards/NUCLEO_L152RE/mpconfigboard.h

@ -0,0 +1,74 @@
#define MICROPY_HW_BOARD_NAME "NUCLEO-L152RE"
#define MICROPY_HW_MCU_NAME "STM32L152xE"
#define MICROPY_HW_HAS_SWITCH (1)
#define MICROPY_HW_ENABLE_RTC (1)
// This board has an external 32kHz crystal
#define MICROPY_HW_RTC_USE_LSE (1)
#define MICROPY_HW_ENABLE_SERVO (1)
#define MICROPY_HW_ENABLE_DAC (1)
// HSE is 8MHz, HSI is 16MHz CPU freq set to 32MHz
// Default source for the clock is HSI.
// For revisions of the board greater than C-01, HSE can be used as a
// clock source by removing the #define MICROPY_HW_CLK_USE_HSE line
#define MICROPY_HW_CLK_USE_HSI (1)
#if MICROPY_HW_CLK_USE_HSI
#define MICROPY_HW_CLK_PLLMUL (RCC_CFGR_PLLMUL6)
#define MICROPY_HW_CLK_PLLDIV (RCC_CFGR_PLLDIV3)
#else
#define MICROPY_HW_CLK_PLLMUL (RCC_CFGR_PLLMUL12)
#define MICROPY_HW_CLK_PLLDIV (RCC_CFGR_PLLDIV3)
#endif
// UART config
#define MICROPY_HW_UART1_TX (pin_A9)
#define MICROPY_HW_UART1_RX (pin_A10)
#define MICROPY_HW_UART2_TX (pin_A2)
#define MICROPY_HW_UART2_RX (pin_A3)
#define MICROPY_HW_UART3_TX (pin_B10)
#define MICROPY_HW_UART3_RX (pin_B11)
#define MICROPY_HW_UART4_TX (pin_C10)
#define MICROPY_HW_UART4_RX (pin_C11)
#define MICROPY_HW_UART5_TX (pin_C12)
#define MICROPY_HW_UART5_RX (pin_D2)
// UART 2 connects to the STM32F103 (STLINK) on the Nucleo board
// and this is exposed as a USB Serial port.
#define MICROPY_HW_UART_REPL PYB_UART_2
#define MICROPY_HW_UART_REPL_BAUD 115200
// I2C buses
#define MICROPY_HW_I2C1_SCL (pin_B8) // Arduino D15, pin 3 on CN10
#define MICROPY_HW_I2C1_SDA (pin_B9) // 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) // Arduino D3, pin 31 on CN10
// SPI buses
#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) // Arduino A2, pin 32 on CN7
#define MICROPY_HW_SPI3_SCK (pin_C10) // Arduino D3, pin 31 on CN10
#define MICROPY_HW_SPI3_MISO (pin_C11) // Arduino D5, pin 27 on CN10
#define MICROPY_HW_SPI3_MOSI (pin_C12) // Arduino D4, pin 29 on CN10
// USRSW is pulled low. Pressing the button makes the input go high.
#define MICROPY_HW_USRSW_PIN (pin_C13)
#define MICROPY_HW_USRSW_PULL (GPIO_NOPULL)
#define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_FALLING)
#define MICROPY_HW_USRSW_PRESSED (0)
// LEDs
#define MICROPY_HW_LED1 (pin_A5) // Green LD2 LED on Nucleo
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))
#define MICROPY_HW_FLASH_LATENCY FLASH_LATENCY_1

4
ports/stm32/boards/NUCLEO_L152RE/mpconfigboard.mk

@ -0,0 +1,4 @@
MCU_SERIES = l1
CMSIS_MCU = STM32L152xE
AF_FILE = boards/stm32l152_af.csv
LD_FILES = boards/stm32l152xe.ld boards/common_basic.ld

76
ports/stm32/boards/NUCLEO_L152RE/pins.csv

@ -0,0 +1,76 @@
D0,PA3
D1,PA2
D2,PA10
D3,PB3
D4,PB5
D5,PB4
D6,PB10
D7,PA8
D8,PA9
D9,PC7
D10,PB6
D11,PA7
D12,PA6
D13,PA5
D14,PB9
D15,PB8
A0,PA0
A1,PA1
A2,PA4
A3,PB0
A4,PC1
A5,PC0
PA0,PA0
PA1,PA1
PA2,PA2
PA3,PA3
PA4,PA4
PA5,PA5
PA6,PA6
PA7,PA7
PA8,PA8
PA9,PA9
PA10,PA10
PA11,PA11
PA12,PA12
PA15,PA15
PB0,PB0
PB1,PB1
PB2,PB2
PB3,PB3
PB4,PB4
PB5,PB5
PB6,PB6
PB7,PB7
PB8,PB8
PB9,PB9
PB10,PB10
PB11,PB11
PB12,PB12
PB13,PB13
PB14,PB14
PB15,PB15
PC0,PC0
PC1,PC1
PC2,PC2
PC3,PC3
PC4,PC4
PC5,PC5
PC6,PC6
PC7,PC7
PC8,PC8
PC9,PC9
PC10,PC10
PC11,PC11
PC12,PC12
PC13,PC13
PC14,PC14
PC15,PC15
PD2,PD2
PH0,PH0
PH1,PH1
LED_GREEN,PA5
LED_ORANGE,PA5
LED_RED,PA5
LED_BLUE,PA4
SW,PC13
1 D0 PA3
2 D1 PA2
3 D2 PA10
4 D3 PB3
5 D4 PB5
6 D5 PB4
7 D6 PB10
8 D7 PA8
9 D8 PA9
10 D9 PC7
11 D10 PB6
12 D11 PA7
13 D12 PA6
14 D13 PA5
15 D14 PB9
16 D15 PB8
17 A0 PA0
18 A1 PA1
19 A2 PA4
20 A3 PB0
21 A4 PC1
22 A5 PC0
23 PA0 PA0
24 PA1 PA1
25 PA2 PA2
26 PA3 PA3
27 PA4 PA4
28 PA5 PA5
29 PA6 PA6
30 PA7 PA7
31 PA8 PA8
32 PA9 PA9
33 PA10 PA10
34 PA11 PA11
35 PA12 PA12
36 PA15 PA15
37 PB0 PB0
38 PB1 PB1
39 PB2 PB2
40 PB3 PB3
41 PB4 PB4
42 PB5 PB5
43 PB6 PB6
44 PB7 PB7
45 PB8 PB8
46 PB9 PB9
47 PB10 PB10
48 PB11 PB11
49 PB12 PB12
50 PB13 PB13
51 PB14 PB14
52 PB15 PB15
53 PC0 PC0
54 PC1 PC1
55 PC2 PC2
56 PC3 PC3
57 PC4 PC4
58 PC5 PC5
59 PC6 PC6
60 PC7 PC7
61 PC8 PC8
62 PC9 PC9
63 PC10 PC10
64 PC11 PC11
65 PC12 PC12
66 PC13 PC13
67 PC14 PC14
68 PC15 PC15
69 PD2 PD2
70 PH0 PH0
71 PH1 PH1
72 LED_GREEN PA5
73 LED_ORANGE PA5
74 LED_RED PA5
75 LED_BLUE PA4
76 SW PC13

10
ports/stm32/boards/NUCLEO_L152RE/stm32l1xx_hal_conf.h

@ -0,0 +1,10 @@
/* This file is part of the MicroPython project, http://micropython.org/
* The MIT License (MIT)
* Copyright (c) 2019 Damien P. George
*/
#ifndef MICROPY_INCLUDED_STM32L1XX_HAL_CONF_H
#define MICROPY_INCLUDED_STM32L1XX_HAL_CONF_H
#include "boards/stm32l1xx_hal_conf_base.h"
#endif // MICROPY_INCLUDED_STM32L1XX_HAL_CONF_H
Loading…
Cancel
Save