stm32/boards: Add NUCLEO-U5A5ZJ-Q board support.

This change adds NUCLEO-U5A5ZJ-Q support to the STM32 port.
NUCLEO-U5A5ZJ-Q: https://www.st.com/ja/evaluation-tools/nucleo-u5a5zj-q.html
This board use STM32U5A5ZJ: https://www.st.com/ja/microcontrollers-microprocessors/stm32u5a5zj.html

Signed-off-by: Yuuki NAGAO <wf.yn386@gmail.com>
This commit is contained in:
Yuuki NAGAO
2025-07-22 23:25:29 +09:00
parent d20d19783d
commit e58425a513
5 changed files with 250 additions and 0 deletions

View File

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

View File

@@ -0,0 +1,82 @@
#define MICROPY_HW_BOARD_NAME "NUCLEO_U5A5ZJ_Q"
#define MICROPY_HW_MCU_NAME "STM32U5A5ZJ"
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
#define MICROPY_HW_ENABLE_ADC (1)
#define MICROPY_HW_ENABLE_DAC (1)
#define MICROPY_HW_ENABLE_USB (1)
#define MICROPY_HW_ENABLE_RNG (1)
#define MICROPY_HW_ENABLE_RTC (1)
#define MICROPY_HW_HAS_FLASH (1)
#define MICROPY_HW_HAS_SWITCH (1)
// The board has a 16MHz oscillator, the following gives 160MHz CPU speed
#define MICROPY_HW_CLK_PLLM (1)
#define MICROPY_HW_CLK_PLLN (10)
#define MICROPY_HW_CLK_PLLP (10)
#define MICROPY_HW_CLK_PLLQ (2)
#define MICROPY_HW_CLK_PLLR (1)
#define MICROPY_HW_CLK_PLLVCI (RCC_PLLVCIRANGE_1)
#define MICROPY_HW_CLK_PLLFRAC (0)
// 5 wait states, according to Table 37, Reference Manual (RM0481 Rev 1)
#define MICROPY_HW_FLASH_LATENCY FLASH_LATENCY_4
// There is an external 32kHz oscillator
#define MICROPY_HW_RTC_USE_LSE (1)
#define MICROPY_HW_RCC_RTC_CLKSOURCE (RCC_RTCCLKSOURCE_LSE)
// UART config
#define MICROPY_HW_UART1_TX (pin_A9)
#define MICROPY_HW_UART1_RX (pin_A10)
#define MICROPY_HW_UART2_TX (pin_D5)
#define MICROPY_HW_UART2_RX (pin_D6)
#define MICROPY_HW_UART2_RTS (pin_D4)
#define MICROPY_HW_UART2_CTS (pin_D3)
// Connect REPL to UART1 which is provided on ST-Link USB interface
#define MICROPY_HW_UART_REPL PYB_UART_1
#define MICROPY_HW_UART_REPL_BAUD 115200
// I2C buses
#define MICROPY_HW_I2C1_SCL (pin_B8) // Arduino Connector CN7-Pin2 (D15)
#define MICROPY_HW_I2C1_SDA (pin_B9) // Arduino Connector CN7-Pin4 (D14)
#define MICROPY_HW_I2C2_SCL (pin_F1) // Connector CN9-Pin19
#define MICROPY_HW_I2C2_SDA (pin_F0) // Connector CN9-Pin21
// SPI buses
#define MICROPY_HW_SPI1_NSS (pin_D14) // Arduino Connector CN7-Pin16 (D10)
#define MICROPY_HW_SPI1_SCK (pin_A5) // Arduino Connector CN7-Pin10 (D13)
#define MICROPY_HW_SPI1_MISO (pin_A6) // Arduino Connector CN7-Pin12 (D12)
#define MICROPY_HW_SPI1_MOSI (pin_A7) // Arduino Connector CN7-Pin14 (D11)
#define MICROPY_HW_SPI2_NSS (pin_D0)
#define MICROPY_HW_SPI2_SCK (pin_B10)
#define MICROPY_HW_SPI2_MISO (pin_D3)
#define MICROPY_HW_SPI2_MOSI (pin_C1)
#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)
// 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_RISING)
#define MICROPY_HW_USRSW_PRESSED (1)
// LEDs
#define MICROPY_HW_LED1 (pin_C7) // Green
#define MICROPY_HW_LED2 (pin_B7) // Orange
#define MICROPY_HW_LED3 (pin_G2) // Red
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))
// USB Configuration
#define MICROPY_HW_USB_HS (1)
#define MICROPY_HW_USB_HS_IN_FS (1)
#if 0 // FDCAN bus
#define MICROPY_HW_CAN1_NAME "FDCAN1"
#define MICROPY_HW_CAN1_TX (pin_D1)
#define MICROPY_HW_CAN1_RX (pin_D0)
#endif

View File

@@ -0,0 +1,11 @@
# MCU settings
MCU_SERIES = u5
CMSIS_MCU = STM32U5A5xx
MICROPY_FLOAT_IMPL = single
AF_FILE = boards/stm32u5a5_af.csv
LD_FILES = boards/stm32u5a5xj.ld boards/common_basic.ld
TEXT0_ADDR = 0x08000000
# MicroPython settings
MICROPY_HW_ENABLE_ISR_UART_FLASH_FUNCS_IN_RAM = 1

View File

@@ -0,0 +1,123 @@
A0,PA3
A1,PA2
A2,PC3
A3,PB0
A4,PC1
A5,PC0
A6,PB1
A7,PC2
A8,PA1
D0,PG8
D1,PG7
D2,PF15
D3,PE13
D4,PF14
D5,PE11
D6,PE9
D7,PF13
D8,PF12
D9,PD15
D10,PD14
D11,PA7
D12,PA6
D13,PA5
D14,PB9
D15,PB8
D16,PC6
D17,PD11
D18,PB13
D19,PD12
D20,PA4
D21,PB4
D22,PB5
D23,PB3
D24,PA4
D25,PB4
D26,PA2
D27,PB10
D28,PE15
D29,PB0
D30,PE12
D31,PE14
D32,PA0
D33,PA8
D34,PE0
D35,PB11
D36,PB10
D37,PE15
D38,PE14
D39,PE12
D40,PE10
D41,PE7
D42,PE8
D43,PC8
D44,PC9
D45,PC10
D46,PC11
D47,PC12
D48,PD2
D49,PF3
D50,PF5
D51,PD7
D52,PD6
D53,PD5
D54,PD4
D55,PD3
D56,PE2
D57,PE4
D58,PE5
D59,PE6
D60,PE3
D61,PF8
D62,PF7
D63,PF9
D64,PG1
D65,PG0
D66,PD1
D67,PD0
D68,PF0
D69,PF1
D70,PF2
D71,PB6
D72,PB2
DAC1,PA4
DAC2,PA5
LED1,PC7
LED2,PB7
LED3,PG2
SW,PC13
I2C1_SDA,PB9
I2C1_SCL,PB8
I2C2_SDA,PF0
I2C2_SCL,PF1
I2C4_SCL,PF14
I2C4_SDA,PF15
SD_D0,PC8
SD_D1,PC9
SD_D2,PC10
SD_D3,PC11
SD_CMD,PD2
SD_CK,PC12
SD_SW,PG2
OTG_FS_POWER,PD10
OTG_FS_OVER_CURRENT,PG7
USB_VBUS,PA9
USB_ID,PA10
USB_DM,PA11
USB_DP,PA12
UART1_TX,PA9
UART1_RX,PA10
UART2_TX,PD5
UART2_RX,PD6
UART2_RTS,PD4
UART2_CTS,PD3
UART3_TX,PD8
UART3_RX,PD9
UART5_TX,PB6
UART5_RX,PB12
UART6_TX,PC6
UART6_RX,PC7
UART7_TX,PF7
UART7_RX,PF6
UART8_TX,PE1
UART8_RX,PE0
1 A0 PA3
2 A1 PA2
3 A2 PC3
4 A3 PB0
5 A4 PC1
6 A5 PC0
7 A6 PB1
8 A7 PC2
9 A8 PA1
10 D0 PG8
11 D1 PG7
12 D2 PF15
13 D3 PE13
14 D4 PF14
15 D5 PE11
16 D6 PE9
17 D7 PF13
18 D8 PF12
19 D9 PD15
20 D10 PD14
21 D11 PA7
22 D12 PA6
23 D13 PA5
24 D14 PB9
25 D15 PB8
26 D16 PC6
27 D17 PD11
28 D18 PB13
29 D19 PD12
30 D20 PA4
31 D21 PB4
32 D22 PB5
33 D23 PB3
34 D24 PA4
35 D25 PB4
36 D26 PA2
37 D27 PB10
38 D28 PE15
39 D29 PB0
40 D30 PE12
41 D31 PE14
42 D32 PA0
43 D33 PA8
44 D34 PE0
45 D35 PB11
46 D36 PB10
47 D37 PE15
48 D38 PE14
49 D39 PE12
50 D40 PE10
51 D41 PE7
52 D42 PE8
53 D43 PC8
54 D44 PC9
55 D45 PC10
56 D46 PC11
57 D47 PC12
58 D48 PD2
59 D49 PF3
60 D50 PF5
61 D51 PD7
62 D52 PD6
63 D53 PD5
64 D54 PD4
65 D55 PD3
66 D56 PE2
67 D57 PE4
68 D58 PE5
69 D59 PE6
70 D60 PE3
71 D61 PF8
72 D62 PF7
73 D63 PF9
74 D64 PG1
75 D65 PG0
76 D66 PD1
77 D67 PD0
78 D68 PF0
79 D69 PF1
80 D70 PF2
81 D71 PB6
82 D72 PB2
83 DAC1 PA4
84 DAC2 PA5
85 LED1 PC7
86 LED2 PB7
87 LED3 PG2
88 SW PC13
89 I2C1_SDA PB9
90 I2C1_SCL PB8
91 I2C2_SDA PF0
92 I2C2_SCL PF1
93 I2C4_SCL PF14
94 I2C4_SDA PF15
95 SD_D0 PC8
96 SD_D1 PC9
97 SD_D2 PC10
98 SD_D3 PC11
99 SD_CMD PD2
100 SD_CK PC12
101 SD_SW PG2
102 OTG_FS_POWER PD10
103 OTG_FS_OVER_CURRENT PG7
104 USB_VBUS PA9
105 USB_ID PA10
106 USB_DM PA11
107 USB_DP PA12
108 UART1_TX PA9
109 UART1_RX PA10
110 UART2_TX PD5
111 UART2_RX PD6
112 UART2_RTS PD4
113 UART2_CTS PD3
114 UART3_TX PD8
115 UART3_RX PD9
116 UART5_TX PB6
117 UART5_RX PB12
118 UART6_TX PC6
119 UART6_RX PC7
120 UART7_TX PF7
121 UART7_RX PF6
122 UART8_TX PE1
123 UART8_RX PE0

View File

@@ -0,0 +1,19 @@
/* This file is part of the MicroPython project, http://micropython.org/
* The MIT License (MIT)
* Copyright (c) 2023 Damien P. George
*/
#ifndef MICROPY_INCLUDED_STM32U5XX_HAL_CONF_H
#define MICROPY_INCLUDED_STM32U5XX_HAL_CONF_H
// Oscillator values in Hz
#define HSE_VALUE (16000000)
#define LSE_VALUE (32768)
#define EXTERNAL_CLOCK_VALUE (12288000)
// Oscillator timeouts in ms
#define HSE_STARTUP_TIMEOUT (100)
#define LSE_STARTUP_TIMEOUT (5000)
#include "boards/stm32u5xx_hal_conf_base.h"
#endif // MICROPY_INCLUDED_STM32U5XX_HAL_CONF_H