Skip to content

Commit 295cec2

Browse files
fpistmmatthijskooijman
authored andcommitted
ci(stm32variant): add SUBGHZSPI support
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 618610d commit 295cec2

File tree

2 files changed

+69
-15
lines changed

2 files changed

+69
-15
lines changed

CI/update/stm32variant.py

+60-15
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
uartrx_list = [] # ['PIN','name','UARTrx', ['af']]
3131
uartcts_list = [] # ['PIN','name','UARTcts', ['af']]
3232
uartrts_list = [] # ['PIN','name','UARTrts', ['af']]
33-
spimosi_list = [] # ['PIN','name','SPIMOSI', ['af']]
34-
spimiso_list = [] # ['PIN','name','SPIMISO', ['af']]
35-
spissel_list = [] # ['PIN','name','SPISSEL', ['af']]
36-
spisclk_list = [] # ['PIN','name','SPISCLK', ['af']]
33+
spimosi_list = [] # ['PIN','name','SPIMOSI', 'sort name', ['af']]
34+
spimiso_list = [] # ['PIN','name','SPIMISO', 'sort name', ['af']]
35+
spissel_list = [] # ['PIN','name','SPISSEL', 'sort name', ['af']]
36+
spisclk_list = [] # ['PIN','name','SPISCLK', 'sort name', ['af']]
3737
cantd_list = [] # ['PIN','name','CANTD', ['af']]
3838
canrd_list = [] # ['PIN','name','CANRD', ['af']]
3939
eth_list = [] # ['PIN','name','ETH', ['af']]
@@ -464,14 +464,14 @@ def store_uart(pin, name, signal):
464464

465465
# Store SPI pins
466466
def store_spi(pin, name, signal):
467-
if "_MISO" in signal:
468-
spimiso_list.append([pin, name, signal])
469-
if "_MOSI" in signal:
470-
spimosi_list.append([pin, name, signal])
471-
if "_SCK" in signal:
472-
spisclk_list.append([pin, name, signal])
473-
if "_NSS" in signal:
474-
spissel_list.append([pin, name, signal])
467+
if re.search("[-_]MISO", signal):
468+
spimiso_list.append([pin, name, signal, signal.removeprefix("DEBUG_")])
469+
if re.search("[-_]MOSI", signal):
470+
spimosi_list.append([pin, name, signal, signal.removeprefix("DEBUG_")])
471+
if re.search("[-_]SCK", signal):
472+
spisclk_list.append([pin, name, signal, signal.removeprefix("DEBUG_")])
473+
if re.search("[-_]NSS", signal):
474+
spissel_list.append([pin, name, signal, signal.removeprefix("DEBUG_")])
475475

476476

477477
# Store CAN pins
@@ -749,6 +749,7 @@ def spi_pinmap(lst):
749749
spi_pins_list = []
750750
winst = []
751751
wpin = []
752+
sp = re.compile(r"-|_")
752753
if lst == spimosi_list:
753754
aname = "SPI_MOSI"
754755
elif lst == spimiso_list:
@@ -759,16 +760,18 @@ def spi_pinmap(lst):
759760
aname = "SPI_SSEL"
760761
for p in lst:
761762
# 2nd element is the SPI_XXXX signal
762-
inst = p[2].split("_")[0]
763+
# but using 3rd which contains the stripped one
764+
# used to properly sort them
765+
inst = sp.split(p[3])[0]
763766
winst.append(len(inst))
764767
wpin.append(len(p[0]))
765768
spi_pins_list.append(
766769
{
767770
"pin": p[0],
768771
"inst": inst,
769772
"mode": "STM_MODE_AF_PP",
770-
"pull": "GPIO_PULLUP",
771-
"af": p[3],
773+
"pull": "GPIO_PULLUP" if inst != "SUBGHZSPI" else "GPIO_NOPULL",
774+
"af": p[4],
772775
}
773776
)
774777
return dict(
@@ -1278,6 +1281,36 @@ def timer_variant():
12781281
return dict(tone=tone, servo=servo)
12791282

12801283

1284+
def alias_definition():
1285+
# alias for STM32WL
1286+
alias_list = []
1287+
if mcu_family == "STM32WL":
1288+
mosi = [
1289+
mosi[0].replace("_", "", 1)
1290+
for mosi in spimosi_list
1291+
if "SUBGHZSPI" in mosi[2]
1292+
]
1293+
miso = [
1294+
miso[0].replace("_", "", 1)
1295+
for miso in spimiso_list
1296+
if "SUBGHZSPI" in miso[2]
1297+
]
1298+
sck = [
1299+
sck[0].replace("_", "", 1) for sck in spisclk_list if "SUBGHZSPI" in sck[2]
1300+
]
1301+
ssel = [
1302+
ssel[0].replace("_", "", 1)
1303+
for ssel in spissel_list
1304+
if "SUBGHZSPI" in ssel[2]
1305+
]
1306+
if mosi and miso and sck and ssel:
1307+
alias_list.append(("DEBUG_SUBGHZSPI_MOSI", mosi[0]))
1308+
alias_list.append(("DEBUG_SUBGHZSPI_MISO", miso[0]))
1309+
alias_list.append(("DEBUG_SUBGHZSPI_SCLK", sck[0]))
1310+
alias_list.append(("DEBUG_SUBGHZSPI_SS", ssel[0]))
1311+
return alias_list
1312+
1313+
12811314
def print_variant(generic_list, alt_syswkup_list):
12821315
variant_h_template = j2_env.get_template(variant_h_filename)
12831316
variant_cpp_template = j2_env.get_template(variant_cpp_filename)
@@ -1299,6 +1332,9 @@ def print_variant(generic_list, alt_syswkup_list):
12991332
# Timers definition
13001333
timer = timer_variant()
13011334

1335+
# Alias to ease some usage
1336+
alias_list = alias_definition()
1337+
13021338
# Manage all pins number, PinName and analog pins
13031339
analog_index = 0
13041340
pins_number_list = []
@@ -1379,6 +1415,7 @@ def print_variant(generic_list, alt_syswkup_list):
13791415
timer=timer,
13801416
serial=serial,
13811417
hal_modules_list=hal_modules_list,
1418+
alias_list=alias_list,
13821419
)
13831420
)
13841421

@@ -1536,6 +1573,10 @@ def natural_sortkey2(list_2_elem):
15361573
return tuple(int(num) if num else alpha for num, alpha in tokenize(list_2_elem[2]))
15371574

15381575

1576+
def natural_sortkey3(list_2_elem):
1577+
return tuple(int(num) if num else alpha for num, alpha in tokenize(list_2_elem[3]))
1578+
1579+
15391580
def sort_my_lists():
15401581
io_list.sort(key=natural_sortkey)
15411582
dualpad_list.sort(key=natural_sortkey)
@@ -1550,9 +1591,13 @@ def sort_my_lists():
15501591
uartrx_list.sort(key=natural_sortkey)
15511592
uartcts_list.sort(key=natural_sortkey)
15521593
uartrts_list.sort(key=natural_sortkey)
1594+
spimosi_list.sort(key=natural_sortkey3)
15531595
spimosi_list.sort(key=natural_sortkey)
1596+
spimiso_list.sort(key=natural_sortkey3)
15541597
spimiso_list.sort(key=natural_sortkey)
1598+
spissel_list.sort(key=natural_sortkey3)
15551599
spissel_list.sort(key=natural_sortkey)
1600+
spisclk_list.sort(key=natural_sortkey3)
15561601
spisclk_list.sort(key=natural_sortkey)
15571602
cantd_list.sort(key=natural_sortkey)
15581603
canrd_list.sort(key=natural_sortkey)

CI/update/templates/variant_generic.h

+9
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@
9999
#define PIN_SERIAL_TX {{serial.tx}}
100100
#endif
101101

102+
{% if alias_list %}
103+
// Alias
104+
{% for alias in alias_list %}
105+
#ifndef {{alias[0]}}
106+
#define {{"%-21s %s"|format(alias[0], alias[1])}}
107+
#endif
108+
{% endfor %}
109+
110+
{% endif %}
102111
{% if hal_modules_list %}
103112
// Extra HAL modules
104113
{% for hal_module in hal_modules_list %}

0 commit comments

Comments
 (0)