stm32: Support pins with multiple AFs for the same peripheral.
For example, on WB55, pin PD3 can be SPI2_SCK on AF3 and SPI2_MISO on AF5.
PortD,PD3,,,,SPI2_SCK,,SPI2_MISO,,,,,QUADSPI_BK1_NCS,,,,,EVENTOUT,
When we configure a default pin in mpconfigboard.h, it is unable (via pin_find_af and the generated code from make-pins.py) to resolve this because the AF_FN_SPI enum assumes that a given peripheral will always use the same AF number on all pins.
// This will fail, and make D3 be SPI2_SCK instead.
#define MICROPY_HW_SPI2_MISO (pin_D3)
Here are some other AF CSV files and peripherals where different AFs share the same peripheral. Other than the WB55 SPI2 example I didn't see any that are accessible from Python. (i.e. the I2C4 are conflicting with I2C_SMBA).
boards/stm32f091_af.csv
TIM15, USART7
boards/stm32f405_af.csv
OTG
boards/stm32f429_af.csv
LCD, OTG
boards/stm32f439_af.csv
LCD, OTG
boards/stm32f722_af.csv
OTG
boards/stm32f746_af.csv
LCD, OTG
boards/stm32f767_af.csv
OTG, DFSDM1, LCD, I2C4
boards/stm32h743_af.csv
DFSDM, TIM8, SDMMC1, LCD, SAI1, TIM1, I2C4, OTG, SAI4
boards/stm32h7b3_af.csv
OCTOSPIM, DFSDM1, PSSI, FMC, TIM8, LTDC, SDMMC1, SAI1, TIM1, I2C4
boards/stm32l072_af.csv
TIM2, LPUART1
boards/stm32l432_af.csv
TIM1, TIM2, COMP2, COMP1
boards/stm32l452_af.csv
TIM1, TIM2, COMP2, COMP1
boards/stm32l476_af.csv
TIM5, TIM2, TIM1, TIM8
boards/stm32l496_af.csv
TIM2, SPI2, TIM8, TIM5, TIM1, QUADSPI
boards/stm32wb55_af.csv
TIM2, TIM1, SAI1, SPI2
stm32: Support 'FDCAN' in board pin CSVs.
Summary
This PR has been split out from #15989.
Previously micros with the 'FDCAN' peripheral (as opposed to the older 'CAN' peripheral) needed to rename these pins in the CSVs for the CAN driver to work.
The following CSVs in MicroPython still had FDCAN in them:
❯ rg -t csv -l FDCAN boards
boards/stm32h7b3_af.csv
boards/stm32h743_af.csv
boards/stm32h573_af.csv
boards/stm32h723_af.csv
boards/stm32g0b1_af.csv
Confirmed that this allows CAN to work on NUCLEO_H723ZG board, and that at least one board based on each of the other chips can still compile. Some of these boards could possibly have MICROPY_HW_ENABLE_CAN set and work, now.
Testing
- Tested CAN peripheral 1 now works on the NUCLEO_H723ZG board. Additional testing was also done as part of #15989.
Trade-offs and Alternatives
- Could manually rename FDCAN in the mentioned CSV files, but given it's been missed in the past it seems safer for future SoCs if we apply the fix during processing.