Skip to content

Add STM32U5xx support #1453

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Sep 24, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
22d1948
system: U5: add STM32U5xx HAL Drivers to v1.0.0
fpistm Jul 23, 2021
9cb18b3
system: U5: add STM32U5xx CMSIS Drivers to v1.0.0
fpistm Jul 23, 2021
fbcd066
system: U5: add STM32U5xx system source files
fpistm Jul 23, 2021
3b39587
system: U5: update STM32U5xx hal default config
fpistm Jul 23, 2021
ba317ed
core: U5: add top HAL include
fpistm Jul 23, 2021
57618c1
core: U5: add wrapped files
fpistm Jul 23, 2021
7d01ee3
system: U5: update STM32U5xx system
fpistm Jul 12, 2021
5114ef5
script: stm32variant: manage multiple SYS_WKUPx pins
fpistm Aug 20, 2021
cd8b9c5
scripts: stm32variant: add PinMap_OCTOSPI_DATA[4-7] arrays
fpistm Sep 14, 2021
edecf4d
core: declare PinMap_OCTOSPI_DATA[4-7] arrays
fpistm Sep 14, 2021
5fc15ea
variants: U5: add all generated STM32U5xx generic variant files
fpistm Jul 23, 2021
3d0f2d3
variants: H7: update generated files to add PinMap_OCTOSPI_DATA[4-7]
fpistm Sep 15, 2021
7f7acc8
variants: L4: update generated files to add PinMap_OCTOSPI_DATA[4-7]
fpistm Sep 15, 2021
f43c42c
variants: L4: update specific files to add PinMap_OCTOSPI_DATA[4-7]
fpistm Sep 15, 2021
20576e0
variants: L5: update generated files to add PinMap_OCTOSPI_DATA[4-7]
fpistm Sep 15, 2021
0523360
fix: U5: HAL: add missing GPIO_AF3_TIM1
fpistm Jul 12, 2021
154e4c8
core: U5: enable HAL ICACHE
fpistm Aug 17, 2021
65377c0
core: U5: set the Vddio2 Independent I/Os supply
fpistm Jul 23, 2021
c9329fe
core: backup: add STM32U5xx guard
fpistm Jul 12, 2021
3d47bce
core: timer: add STM32U5xx Timer IRQ
fpistm Jul 12, 2021
526d548
core: interrupt: add STM32U5xx EXTI IRQ support
fpistm Jul 12, 2021
b0b0598
core: analog: add STM32U5xx support
fpistm Jul 12, 2021
cbda9d1
core: uart: add STM32U5xx support
fpistm Jul 12, 2021
4e4dfbd
core: USB: add STM32U5xx support
fpistm Aug 18, 2021
7e3f884
fix: core: STM32U5xx USB definition
fpistm Aug 20, 2021
fbf4f0f
library: eeprom: add STM32U5xx support
fpistm Aug 12, 2021
df67198
library: spi: add STM32U5xx support
fpistm Sep 24, 2021
835345b
library: spi: add STM32U5xx support
fpistm Aug 12, 2021
0121e40
variant: U5: add U575Z(G-I)TxQ and U585ZETxQ generic support
fpistm Aug 13, 2021
26277d4
variant: U5: add U575A(G-I)I and U585AII generic support
fpistm Jul 12, 2021
5bef174
variant: U5: add NUCLEO-U575ZI-Q
fpistm Aug 16, 2021
ef31204
chore: change Disco menu order
fpistm Sep 10, 2021
63e0796
variant: U5: add B-U585I-IOT02A
fpistm Sep 8, 2021
19496d9
core: uart: lowpower config when LPUART is available
fpistm Sep 24, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
87 changes: 62 additions & 25 deletions CI/utils/stm32variant.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@
quadspidata1_list = [] # ['PIN','name','QUADSPIDATA1', ['af']]
quadspidata2_list = [] # ['PIN','name','QUADSPIDATA2', ['af']]
quadspidata3_list = [] # ['PIN','name','QUADSPIDATA3', ['af']]
quadspidata4_list = [] # ['PIN','name','QUADSPIDATA4', ['af']]
quadspidata5_list = [] # ['PIN','name','QUADSPIDATA5', ['af']]
quadspidata6_list = [] # ['PIN','name','QUADSPIDATA6', ['af']]
quadspidata7_list = [] # ['PIN','name','QUADSPIDATA7', ['af']]
quadspisclk_list = [] # ['PIN','name','QUADSPISCLK', ['af']]
quadspissel_list = [] # ['PIN','name','QUADSPISSEL', ['af']]
syswkup_list = [] # ['PIN','name','SYSWKUP']
Expand Down Expand Up @@ -480,7 +484,7 @@ def store_eth(pin, name, signal):
eth_list.append([pin, name, signal])


# Store QSPI pins
# Store O/QSPI pins
def store_qspi(pin, name, signal):
if "_IO0" in signal:
quadspidata0_list.append([pin, name, signal])
Expand All @@ -490,6 +494,14 @@ def store_qspi(pin, name, signal):
quadspidata2_list.append([pin, name, signal])
if "_IO3" in signal:
quadspidata3_list.append([pin, name, signal])
if "_IO4" in signal:
quadspidata4_list.append([pin, name, signal])
if "_IO5" in signal:
quadspidata5_list.append([pin, name, signal])
if "_IO6" in signal:
quadspidata6_list.append([pin, name, signal])
if "_IO7" in signal:
quadspidata7_list.append([pin, name, signal])
if "_CLK" in signal:
quadspisclk_list.append([pin, name, signal])
if "_NCS" in signal:
Expand Down Expand Up @@ -858,6 +870,14 @@ def qspi_pinmap(lst):
aname = name + "_DATA2"
elif lst == quadspidata3_list:
aname = name + "_DATA3"
elif lst == quadspidata4_list:
aname = name + "_DATA4"
elif lst == quadspidata5_list:
aname = name + "_DATA5"
elif lst == quadspidata6_list:
aname = name + "_DATA6"
elif lst == quadspidata7_list:
aname = name + "_DATA7"
elif lst == quadspisclk_list:
aname = name + "_SCLK"
else:
Expand Down Expand Up @@ -1044,6 +1064,10 @@ def print_peripheral():
qspi_pinmap(quadspidata1_list),
qspi_pinmap(quadspidata2_list),
qspi_pinmap(quadspidata3_list),
qspi_pinmap(quadspidata4_list),
qspi_pinmap(quadspidata5_list),
qspi_pinmap(quadspidata6_list),
qspi_pinmap(quadspidata7_list),
qspi_pinmap(quadspisclk_list),
qspi_pinmap(quadspissel_list),
),
Expand All @@ -1056,32 +1080,21 @@ def print_peripheral():

# PinNamesVar.h generation
def manage_syswkup():
syswkup_pins_list = []
syswkup_pins_list = [[] for _ in range(8)]
if len(syswkup_list) != 0:
# H7xx and F446 start from 0, inc by 1
inc = 0
# H7xx and F446 start from 0
base_index = 1
if syswkup_list[0][2].replace("SYS_WKUP", "") == "0":
inc = 1
# Fill list with missing SYS_WKUPx set to NC
i = 0
while i < 8:
num = 0
if len(syswkup_list) > i:
n = syswkup_list[i][2].replace("SYS_WKUP", "")
if len(n) != 0:
num = int(n) if inc == 1 else int(n) - 1
x = i if inc == 1 else i + 1
if num != i:
syswkup_list.insert(i, ["NC", "NC_" + str(x), "SYS_WKUP" + str(x)])
i += 1
base_index = 0
for p in syswkup_list:
num = p[2].replace("SYS_WKUP", "")
if (inc == 1) and (p[0] != "NC"):
cmt = " /* " + p[2] + " */"
else:
num = int(num) if num else 1
if base_index == 1:
num -= 1
cmt = ""
syswkup_pins_list.append([p[0], cmt])

else:
cmt = " /* " + p[2] + " */"
syswkup_pins_list[num].append([p[0], cmt])
return syswkup_pins_list


Expand Down Expand Up @@ -1127,6 +1140,12 @@ def print_pinamevar():
usb_pins_list=sorted_usb_pins_list,
)
)
alt_syswkup_list = []
for idx, syswkup_list in enumerate(syswkup_pins_list, start=1):
if len(syswkup_list) > 1:
for idx2, lst in enumerate(syswkup_list[1:], start=1):
alt_syswkup_list.append("{}_{}".format(idx, idx2))
return alt_syswkup_list


# Variant files generation
Expand Down Expand Up @@ -1253,7 +1272,7 @@ def timer_variant():
return dict(tone=tone, servo=servo)


def print_variant(generic_list):
def print_variant(generic_list, alt_syswkup_list):
variant_h_template = j2_env.get_template(variant_h_filename)
variant_cpp_template = j2_env.get_template(variant_cpp_filename)

Expand Down Expand Up @@ -1344,6 +1363,7 @@ def print_variant(generic_list):
year=datetime.datetime.now().year,
pins_number_list=pins_number_list,
alt_pins_list=alt_pins_list,
alt_syswkup_list=alt_syswkup_list,
waltpin=max(waltpin),
num_digital_pins=num_digital_pins,
num_dualpad_pins=num_dualpad_pins,
Expand Down Expand Up @@ -1538,6 +1558,10 @@ def sort_my_lists():
quadspidata1_list.sort(key=natural_sortkey)
quadspidata2_list.sort(key=natural_sortkey)
quadspidata3_list.sort(key=natural_sortkey)
quadspidata4_list.sort(key=natural_sortkey)
quadspidata5_list.sort(key=natural_sortkey)
quadspidata6_list.sort(key=natural_sortkey)
quadspidata7_list.sort(key=natural_sortkey)
quadspisclk_list.sort(key=natural_sortkey)
quadspissel_list.sort(key=natural_sortkey)
syswkup_list.sort(key=natural_sortkey2)
Expand Down Expand Up @@ -1572,6 +1596,10 @@ def clean_all_lists():
del quadspidata1_list[:]
del quadspidata2_list[:]
del quadspidata3_list[:]
del quadspidata4_list[:]
del quadspidata5_list[:]
del quadspidata6_list[:]
del quadspidata7_list[:]
del quadspisclk_list[:]
del quadspissel_list[:]
del syswkup_list[:]
Expand Down Expand Up @@ -1602,6 +1630,10 @@ def manage_af_and_alternate():
add_af(quadspidata1_list)
add_af(quadspidata2_list)
add_af(quadspidata3_list)
add_af(quadspidata4_list)
add_af(quadspidata5_list)
add_af(quadspidata6_list)
add_af(quadspidata7_list)
add_af(quadspisclk_list)
add_af(quadspissel_list)
add_af(usb_list)
Expand Down Expand Up @@ -1631,6 +1663,10 @@ def manage_af_and_alternate():
update_alternate(quadspidata1_list)
update_alternate(quadspidata2_list)
update_alternate(quadspidata3_list)
update_alternate(quadspidata4_list)
update_alternate(quadspidata5_list)
update_alternate(quadspidata6_list)
update_alternate(quadspidata7_list)
update_alternate(quadspisclk_list)
update_alternate(quadspissel_list)
update_alternate(syswkup_list)
Expand Down Expand Up @@ -2375,8 +2411,9 @@ def manage_repo():
generic_list = print_boards_entry()
print_general_clock(generic_list)
print_peripheral()
print_pinamevar()
print_variant(generic_list)
alt_syswkup_list = print_pinamevar()
print_variant(generic_list, alt_syswkup_list)
del alt_syswkup_list[:]
del generic_list[:]
print(
"* Total I/O pins found: {}".format(
Expand Down
27 changes: 18 additions & 9 deletions CI/utils/templates/PinNamesVar.h
Original file line number Diff line number Diff line change
@@ -1,33 +1,42 @@
{% if dualpad_pins_list %}
/* Dual pad pin name */
{% for dp in dualpad_pins_list %}
{% for dp in dualpad_pins_list %}
{{"%s = %s | PDUAL,"|format(dp.name.ljust(waltpin), dp.base.ljust(waltpin-5))}}
{% endfor %}
{% endfor %}

{% endif %}
{% if remap_pins_list %}
/* Remap pin name */
{% for dp in remap_pins_list %}
{% for dp in remap_pins_list %}
{{"%s = %s | PREMAP,"|format(dp.name.ljust(waltpin), dp.base.ljust(waltpin-5))}}
{% endfor %}
{% endfor %}

{% endif %}
{% if alt_pins_list %}
/* Alternate pin name */
{% for alt in alt_pins_list %}
{% for alt in alt_pins_list %}
{{"%s = %s | %s,"|format(alt.name.ljust(waltpin), alt.base.ljust(waltpin-5), alt.num)}}
{% endfor %}
{% endfor %}
{% else %}
/* No alternate */
{% endif %}

{% if syswkup_pins_list %}
/* SYS_WKUP */
{% for syswkup in syswkup_pins_list %}
{% for syswkup_list in syswkup_pins_list %}
{% set outer_loop = loop %}
{% if syswkup_list %}
{% for syswkup in syswkup_list %}
#ifdef PWR_WAKEUP_PIN{{outer_loop.index}}
SYS_WKUP{{outer_loop.index}}{{"_{}".format(loop.index - 1) if loop.index > 1}} = {{syswkup[0]}},{{syswkup[1]}}
#endif
{% endfor %}
{% else %}
#ifdef PWR_WAKEUP_PIN{{loop.index}}
SYS_WKUP{{loop.index}} = {{syswkup[0]}},{{syswkup[1]}}
SYS_WKUP{{loop.index}} = NC,
#endif
{% endfor %}
{% endif %}
{% endfor %}
{% else %}
/* No SYS_WKUP */
{% endif %}
Expand Down
15 changes: 11 additions & 4 deletions CI/utils/templates/variant_generic.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
{% if alt_pins_list %}

// Alternate pins number
{% for alt in alt_pins_list %}
{% for alt in alt_pins_list %}
#define {{"%-23s (%s | %s)"|format(alt.name, alt.base.ljust(waltpin-5), alt.num)}}
{% endfor %}
{% endfor %}
{% endif %}

#define NUM_DIGITAL_PINS {{num_digital_pins}}
Expand Down Expand Up @@ -101,11 +101,18 @@

{% if hal_modules_list %}
// Extra HAL modules
{% for hal_module in hal_modules_list %}
{% for hal_module in hal_modules_list %}
#if !defined(HAL_{{hal_module}}_MODULE_DISABLED)
#define HAL_{{hal_module}}_MODULE_ENABLED
#endif
{% endfor %}
{% endfor %}

{% endif %}
{% if alt_syswkup_list %}
// Alternate SYS_WKUP definition
{% for def in alt_syswkup_list %}
#define PWR_WAKEUP_PIN{{def}}
{% endfor %}

{% endif %}
/*----------------------------------------------------------------------------
Expand Down
21 changes: 15 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,9 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
- [Generic STM32L1 boards](#generic-stm32l1-boards)
- [Generic STM32L4 boards](#generic-stm32l4-boards)
- [Generic STM32L5 boards](#generic-stm32l5-boards)
- [Generic STM32U5 boards](#generic-stm32u5-boards)
- [Generic STM32WB boards](#generic-stm32wb-boards)
- [Generic STM32WL boards](#generic-stm32wb-boards)
- [3D printer boards](#3d-printer-boards)
- [LoRa boards](#lora-boards)
- [Electronic Speed Controller boards](#electronic-speed-controller-boards)
Expand All @@ -90,6 +92,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
| :green_heart: | STM32L4R5ZI-P | [Nucleo L4R5ZI-P](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi-p.html) | *1.4.0* | |
| :green_heart: | STM32L552ZE-Q | [Nucleo L552ZE-Q](https://www.st.com/en/evaluation-tools/nucleo-l552ze-q.html) | *2.0.0* | |
| :green_heart: | STM32H743ZI | [Nucleo H743ZI(2)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | *1.5.0* | Nucleo H743ZI2 since 1.6.0 |
| :yellow_heart: | STM32U575ZI-Q | [NUCLEO-U575ZI-Q](https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html) | **2.1.0** | |

### [Nucleo 64](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards

Expand Down Expand Up @@ -141,15 +144,14 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
| :green_heart: | STM32F030R8 | [32F0308DISCOVERY](http://www.st.com/en/evaluation-tools/32f0308discovery.html) | *1.3.0* | |
| :green_heart: | STM32F072RB | [32F072BDISCOVERY](https://www.st.com/en/evaluation-tools/32f072bdiscovery.html) | *1.5.0* | |
| :green_heart: | STM32F100RB | [STM32VLDISCOVERY](https://www.st.com/en/evaluation-tools/stm32vldiscovery.html) | 0.2.1 | |
| :green_heart: | STM32F303VC | [STM32F3DISCOVERY](https://www.st.com/en/evaluation-tools/stm32f3discovery.html) | *2.0.0* | |
| :green_heart: | STM32F303VC | [STM32F3DISCOVERY](https://www.st.com/en/evaluation-tools/stm32f3discovery.html) | *2.0.0* | |
| :green_heart: | STM32F407VG | [STM32F407G-DISC1](http://www.st.com/en/evaluation-tools/stm32f4discovery.html) | *0.1.0* | |
| :green_heart: | STM32F413ZH | [32F413HDISCOVERY](https://www.st.com/en/evaluation-tools/32f413hdiscovery.html) | *1.9.0* | |
| :green_heart: | STM32F746NG | [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | *0.1.0* | |
| :green_heart: | STM32G031J6 | [STM32G0316-DISCO](https://www.st.com/en/evaluation-tools/stm32g0316-disco.html) | *1.9.0* | |
| :green_heart: | STM32G431CB | [B-G431B-ESC1](https://www.st.com/en/evaluation-tools/b-g431b-esc1.html) | *2.0.0* | |
| :green_heart: | STM32L072CZ | [B-L072Z-LRWAN1](http://www.st.com/en/evaluation-tools/b-l072z-lrwan1.html) | *1.1.0* | |
| :green_heart: | STM32L475VG | [B-L475E-IOT01A](http://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) | *1.0.1* | |
| :green_heart: | STM32F413ZH | [32F413HDISCOVERY](https://www.st.com/en/evaluation-tools/32f413hdiscovery.html) | *1.9.0* | |
| :green_heart: | STM32L4S5VI | [B-L4S5I-IOT01A](https://www.st.com/en/evaluation-tools/b-l4s5i-iot01a.html) | *2.0.0* | |
| :green_heart: | STM32G431CB | [B-G431B-ESC1](https://www.st.com/en/evaluation-tools/b-g431b-esc1.html) | *2.0.0* | |
| :green_heart: | STM32L4S5VI | [B-L4S5I-IOT01A](https://www.st.com/en/evaluation-tools/b-l4s5i-iot01a.html) | *2.0.0* | |
| :yellow_heart: | STM32U585AIIxQ | [B-U585I-IOT02A](https://www.st.com/en/evaluation-tools/b-u585i-iot02a.html) | **2.1.0** | |
| :yellow_heart: | STM32WB5MMG | [STM32WB5MM-DK](https://www.st.com/en/evaluation-tools/stm32wb5mm-dk.html) | **2.1.0** | |

### [Eval](https://www.st.com/en/evaluation-tools/stm32-eval-boards.html) boards
Expand Down Expand Up @@ -414,6 +416,13 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
| :green_heart: | STM32L552ZC-Q<br>STM32L552ZE-Q | Generic Board | *2.0.0* | |
| :green_heart: | STM32L562ZE-Q | Generic Board | *2.0.0* | |

### Generic STM32U5 boards

| Status | Device(s) | Name | Release | Notes |
| :----: | :-------: | ---- | :-----: | :---- |
| :yellow_heart: | STM32U575AGIxQ<br>STM32U575AIIxQ<br>STM32U585AIIxQ | Generic Board | *2.1.0* | |
| :yellow_heart: | STM32U575ZGTxQ<br>STM32U575ZITxQ<br>STM32U585ZETxQ | Generic Board | **2.1.0** | |

### Generic STM32WB boards

| Status | Device(s) | Name | Release | Notes |
Expand Down
Loading