diff --git a/examples/pins.py b/examples/pins.py deleted file mode 100644 index 3a8472e8a6849..0000000000000 --- a/examples/pins.py +++ /dev/null @@ -1,60 +0,0 @@ -# Print a nice list of pins, their current settings, and available afs. -# Requires pins_af.py from ports/stm32/build-PYBV10/ directory. - -import pyb -import pins_af - - -def af(): - max_name_width = 0 - max_af_width = 0 - for pin_entry in pins_af.PINS_AF: - max_name_width = max(max_name_width, len(pin_entry[0])) - for af_entry in pin_entry[1:]: - max_af_width = max(max_af_width, len(af_entry[1])) - for pin_entry in pins_af.PINS_AF: - pin_name = pin_entry[0] - print("%-*s " % (max_name_width, pin_name), end="") - for af_entry in pin_entry[1:]: - print("%2d: %-*s " % (af_entry[0], max_af_width, af_entry[1]), end="") - print("") - - -def pins(): - mode_str = { - pyb.Pin.IN: "IN", - pyb.Pin.OUT_PP: "OUT_PP", - pyb.Pin.OUT_OD: "OUT_OD", - pyb.Pin.AF_PP: "AF_PP", - pyb.Pin.AF_OD: "AF_OD", - pyb.Pin.ANALOG: "ANALOG", - } - pull_str = {pyb.Pin.PULL_NONE: "", pyb.Pin.PULL_UP: "PULL_UP", pyb.Pin.PULL_DOWN: "PULL_DOWN"} - width = [0, 0, 0, 0] - rows = [] - for pin_entry in pins_af.PINS_AF: - row = [] - pin_name = pin_entry[0] - pin = pyb.Pin(pin_name) - pin_mode = pin.mode() - row.append(pin_name) - row.append(mode_str[pin_mode]) - row.append(pull_str[pin.pull()]) - if pin_mode == pyb.Pin.AF_PP or pin_mode == pyb.Pin.AF_OD: - pin_af = pin.af() - for af_entry in pin_entry[1:]: - if pin_af == af_entry[0]: - af_str = "%d: %s" % (pin_af, af_entry[1]) - break - else: - af_str = "%d" % pin_af - else: - af_str = "" - row.append(af_str) - for col in range(len(width)): - width[col] = max(width[col], len(row[col])) - rows.append(row) - for row in rows: - for col in range(len(width)): - print("%-*s " % (width[col], row[col]), end="") - print("") diff --git a/ports/cc3200/Makefile b/ports/cc3200/Makefile index f89a927c0e43e..099fa295c5906 100644 --- a/ports/cc3200/Makefile +++ b/ports/cc3200/Makefile @@ -36,7 +36,7 @@ FLASH_SIZE_LAUNCHXL = 1M ifeq ($(BTARGET), application) # qstr definitions (must come before including py.mk) -QSTR_DEFS = qstrdefsport.h $(BUILD)/pins_qstr.h +QSTR_DEFS = qstrdefsport.h # MicroPython feature configurations MICROPY_ROM_TEXT_COMPRESSION ?= 1 diff --git a/ports/cc3200/application.mk b/ports/cc3200/application.mk index deee201eefaba..6959c64b666e8 100644 --- a/ports/cc3200/application.mk +++ b/ports/cc3200/application.mk @@ -164,10 +164,7 @@ OBJ += $(BUILD)/shared/runtime/gchelper_thumb2.o OBJ += $(BUILD)/pins.o # List of sources for qstr extraction -SRC_QSTR += $(APP_MODS_SRC_C) $(APP_MISC_SRC_C) $(APP_STM_SRC_C) $(APP_SHARED_SRC_C) $(APP_HAL_SRC_C) -# Append any auto-generated sources that are needed by sources listed in -# SRC_QSTR -SRC_QSTR_AUTO_DEPS += +SRC_QSTR += $(APP_MODS_SRC_C) $(APP_MISC_SRC_C) $(APP_STM_SRC_C) $(APP_SHARED_SRC_C) $(APP_HAL_SRC_C) $(GEN_PINS_SRC) # Add the linker script LINKER_SCRIPT = application.lds @@ -228,7 +225,6 @@ AF_FILE = boards/cc3200_af.csv PREFIX_FILE = boards/cc3200_prefix.c GEN_PINS_SRC = $(BUILD)/pins.c GEN_PINS_HDR = $(HEADER_BUILD)/pins.h -GEN_PINS_QSTR = $(BUILD)/pins_qstr.h # Making OBJ use an order-only dependency on the generated pins.h file # has the side effect of making the pins.h file before we actually compile @@ -238,9 +234,7 @@ GEN_PINS_QSTR = $(BUILD)/pins_qstr.h $(OBJ): | $(GEN_PINS_HDR) # Call make-pins.py to generate both pins_gen.c and pins.h -$(GEN_PINS_SRC) $(GEN_PINS_HDR) $(GEN_PINS_QSTR): $(BOARD_PINS) $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) +$(GEN_PINS_SRC) $(GEN_PINS_HDR): $(BOARD_PINS) $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) $(ECHO) "Create $@" - $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE) --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) --qstr $(GEN_PINS_QSTR) > $(GEN_PINS_SRC) - -$(BUILD)/pins.o: $(BUILD)/pins.c - $(call compile_c) + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv $(AF_FILE) --prefix $(PREFIX_FILE) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) diff --git a/ports/cc3200/boards/make-pins.py b/ports/cc3200/boards/make-pins.py index 6608be438a218..f1bdf15a301a0 100644 --- a/ports/cc3200/boards/make-pins.py +++ b/ports/cc3200/boards/make-pins.py @@ -1,6 +1,9 @@ #!/usr/bin/env python """Generates the pins file for the CC3200.""" +# Do not use this as a reference for new ports. See tools/boardgen.py and e.g. +# ports/stm32/boards/make-pins.py. + from __future__ import print_function import argparse @@ -44,11 +47,12 @@ def __init__(self, name, idx, fn, unit, type): self.unit = unit self.type = type - def print(self): + def print(self, out_source): print( " AF({:16s}, {:4d}, {:8s}, {:4d}, {:8s}), // {}".format( self.name, self.idx, self.fn, self.unit, self.type, self.name - ) + ), + file=out_source, ) @@ -66,13 +70,13 @@ def __init__(self, name, port, gpio_bit, pin_num): def add_af(self, af): self.afs.append(af) - def print(self): - print("// {}".format(self.name)) + def print(self, out_source): + print("// {}".format(self.name), file=out_source) if len(self.afs): - print("const pin_af_t pin_{}_af[] = {{".format(self.name)) + print("const pin_af_t pin_{}_af[] = {{".format(self.name), file=out_source) for af in self.afs: - af.print() - print("};") + af.print(out_source) + print("};", file=out_source) print( "pin_obj_t pin_{:4s} = PIN({:6s}, {:1d}, {:3d}, {:2d}, pin_{}_af, {});\n".format( self.name, @@ -82,17 +86,19 @@ def print(self): self.pin_num, self.name, len(self.afs), - ) + ), + file=out_source, ) else: print( "pin_obj_t pin_{:4s} = PIN({:6s}, {:1d}, {:3d}, {:2d}, NULL, 0);\n".format( self.name, self.name, self.port, self.gpio_bit, self.pin_num - ) + ), + file=out_source, ) - def print_header(self, hdr_file): - hdr_file.write("extern pin_obj_t pin_{:s};\n".format(self.name)) + def print_header(self, out_header): + print("extern pin_obj_t pin_{:s};".format(self.name), file=out_header) class Pins: @@ -153,117 +159,72 @@ def parse_board_file(self, filename, cpu_pin_col): if pin: pin.board_pin = True - def print_named(self, label, pins): - print("") + def print_named(self, label, pins, out_source): + print("", file=out_source) print( - "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label) + "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label), + file=out_source, ) for pin in pins: if pin.board_pin: print( " {{ MP_ROM_QSTR(MP_QSTR_{:6s}), MP_ROM_PTR(&pin_{:6s}) }},".format( pin.name, pin.name - ) + ), + file=out_source, ) - print("};") + print("};", file=out_source) print( "MP_DEFINE_CONST_DICT(pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format( label, label - ) + ), + file=out_source, ) - def print(self): + def print(self, out_source): + for pin in self.board_pins: + if pin.board_pin: + pin.print(out_source) + self.print_named("board", self.board_pins, out_source) + print("", file=out_source) + + def print_header(self, out_header): for pin in self.board_pins: if pin.board_pin: - pin.print() - self.print_named("board", self.board_pins) - print("") - - def print_header(self, hdr_filename): - with open(hdr_filename, "wt") as hdr_file: - for pin in self.board_pins: - if pin.board_pin: - pin.print_header(hdr_file) - - def print_qstr(self, qstr_filename): - with open(qstr_filename, "wt") as qstr_file: - pin_qstr_set = set([]) - af_qstr_set = set([]) - for pin in self.board_pins: - if pin.board_pin: - pin_qstr_set |= set([pin.name]) - for af in pin.afs: - af_qstr_set |= set([af.name]) - print("// Board pins", file=qstr_file) - for qstr in sorted(pin_qstr_set): - print("Q({})".format(qstr), file=qstr_file) - print("\n// Pin AFs", file=qstr_file) - for qstr in sorted(af_qstr_set): - print("Q({})".format(qstr), file=qstr_file) + pin.print_header(out_header) def main(): - parser = argparse.ArgumentParser( - prog="make-pins.py", - usage="%(prog)s [options] [command]", - description="Generate board specific pin file", - ) - parser.add_argument( - "-a", - "--af", - dest="af_filename", - help="Specifies the alternate function file for the chip", - default="cc3200_af.csv", - ) - parser.add_argument( - "-b", - "--board", - dest="board_filename", - help="Specifies the board file", - ) - parser.add_argument( - "-p", - "--prefix", - dest="prefix_filename", - help="Specifies beginning portion of generated pins file", - default="cc3200_prefix.c", - ) - parser.add_argument( - "-q", - "--qstr", - dest="qstr_filename", - help="Specifies name of generated qstr header file", - default="build/pins_qstr.h", - ) - parser.add_argument( - "-r", - "--hdr", - dest="hdr_filename", - help="Specifies name of generated pin header file", - default="build/pins.h", - ) - args = parser.parse_args(sys.argv[1:]) + parser = argparse.ArgumentParser(description="Generate board specific pin file") + parser.add_argument("--board-csv") + parser.add_argument("--af-csv") + parser.add_argument("--prefix") + parser.add_argument("--output-source") + parser.add_argument("--output-header") + args = parser.parse_args() pins = Pins() - print("// This file was automatically generated by make-pins.py") - print("//") - if args.af_filename: - print("// --af {:s}".format(args.af_filename)) - pins.parse_af_file(args.af_filename, 0, 1, 3) - - if args.board_filename: - print("// --board {:s}".format(args.board_filename)) - pins.parse_board_file(args.board_filename, 1) - - if args.prefix_filename: - print("// --prefix {:s}".format(args.prefix_filename)) - print("") - with open(args.prefix_filename, "r") as prefix_file: - print(prefix_file.read()) - pins.print() - pins.print_qstr(args.qstr_filename) - pins.print_header(args.hdr_filename) + with open(args.output_source, "w") as out_source: + print("// This file was automatically generated by make-pins.py", file=out_source) + print("//", file=out_source) + if args.af_csv: + print("// --af {:s}".format(args.af_csv), file=out_source) + pins.parse_af_file(args.af_csv, 0, 1, 3) + + if args.board_csv: + print("// --board {:s}".format(args.board_csv), file=out_source) + pins.parse_board_file(args.board_csv, 1) + + if args.prefix: + print("// --prefix {:s}".format(args.prefix), file=out_source) + print("", file=out_source) + with open(args.prefix, "r") as prefix_file: + print(prefix_file.read(), file=out_source) + pins.print(out_source) + + with open(args.output_header, "w") as out_header: + pins.print_header(out_header) if __name__ == "__main__": diff --git a/ports/esp32/boards/make-pins.py b/ports/esp32/boards/make-pins.py index e0f988549b7f3..49b10f0ce15c9 100755 --- a/ports/esp32/boards/make-pins.py +++ b/ports/esp32/boards/make-pins.py @@ -1,185 +1,67 @@ #!/usr/bin/env python -import argparse +import os import sys -import csv -import re -MAX_CPU_PINS = 49 +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools")) +import boardgen -def parse_pin(name_str): - """Parses a string and returns a pin number.""" - if len(name_str) < 2: - raise ValueError("Expecting pin name to be at least 2 characters.") - if not name_str.startswith("GPIO"): - raise ValueError("Expecting pin name to start with GPIO") - return int(re.findall(r"\d+$", name_str)[0]) +# Pins start at zero, and the highest pin index on any ESP32* chip is 48. +NUM_GPIOS = 49 -class Pin: - def __init__(self, pin): - self.pin = pin - self.is_board = False +class Esp32Pin(boardgen.Pin): + # Required by NumericPinGenerator. + def index(self): + return int(self._cpu_pin_name[4:]) - def cpu_pin_name(self): - return "GPIO{:d}".format(self.pin) + # The IDF provides `GPIO_NUM_x = x` as an enum. + def index_name(self): + return "GPIO_NUM_{:d}".format(self.index()) - def is_board_pin(self): - return self.is_board + # Emit the combined struct which contains both the pin and irq instances. + def definition(self): + return "{ .base = { .type = &machine_pin_type }, .irq = { .base = { .type = &machine_pin_irq_type } } }" - def set_is_board_pin(self): - self.is_board = True + # This script isn't family-aware, so we always emit the maximum number of + # pins and rely on the `MICROPY_HW_ENABLE_GPIOn` macros defined in + # machine_pin.h to figure out which ones are actually available. + def enable_macro(self): + return "MICROPY_HW_ENABLE_{}".format(self._cpu_pin_name) + # ESP32 cpu names must be "GPIOn". + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + boardgen.Pin.validate_cpu_pin_name(cpu_pin_name) -class NamedPin: - def __init__(self, name, pin): - self._name = name - self._pin = pin - - def pin(self): - return self._pin - - def name(self): - return self._name - - -class Pins: - def __init__(self): - self.cpu_pins = [] # list of NamedPin objects - self.board_pins = [] # list of NamedPin objects - - def find_pin(self, pin_name): - for pin in self.cpu_pins: - if pin.name() == pin_name: - return pin.pin() - - def create_pins(self): - for pin_num in range(MAX_CPU_PINS): - pin = Pin(pin_num) - self.cpu_pins.append(NamedPin(pin.cpu_pin_name(), pin)) - - def parse_board_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - if len(row) == 0 or row[0].startswith("#"): - # Skip empty lines, and lines starting with "#" - continue - if len(row) != 2: - raise ValueError("Expecting two entries in a row") - - cpu_pin_name = row[1] - parse_pin(cpu_pin_name) - pin = self.find_pin(cpu_pin_name) - if not pin: - raise ValueError("Unknown pin {}".format(cpu_pin_name)) - pin.set_is_board_pin() - if row[0]: # Only add board pins that have a name - self.board_pins.append(NamedPin(row[0], pin)) - - def print_table(self, label, named_pins, out_source): - print("", file=out_source) - print( - "const machine_{}_obj_t machine_{}_obj_table[GPIO_NUM_MAX] = {{".format(label, label), - file=out_source, - ) - for pin in named_pins: - print(" #if MICROPY_HW_ENABLE_{}".format(pin.name()), file=out_source) - print( - " [GPIO_NUM_{}] = {{ .base = {{ .type = &machine_{}_type }} }},".format( - pin.pin().pin, label - ), - file=out_source, - ) - print(" #endif", file=out_source) - print("};", file=out_source) - - def print_named(self, label, named_pins, out_source): - print("", file=out_source) - print( - "STATIC const mp_rom_map_elem_t machine_pin_{:s}_pins_locals_dict_table[] = {{".format( - label - ), - file=out_source, - ) - for named_pin in named_pins: - pin = named_pin.pin() - print( - " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(&pin_{:s}) }},".format( - named_pin.name(), pin.cpu_pin_name() - ), - file=out_source, + if not cpu_pin_name.startswith("GPIO") or not cpu_pin_name[4:].isnumeric(): + raise boardgen.PinGeneratorError( + "Invalid cpu pin name '{}', must be 'GPIOn'".format(cpu_pin_name) ) - print("};", file=out_source) - print( - "MP_DEFINE_CONST_DICT(machine_pin_{:s}_pins_locals_dict, machine_pin_{:s}_pins_locals_dict_table);".format( - label, label - ), - file=out_source, - ) - - def print_tables(self, out_source): - self.print_table("pin", self.cpu_pins, out_source) - self.print_table("pin_irq", self.cpu_pins, out_source) - self.print_named("board", self.board_pins, out_source) - - def print_header(self, out_header): - # Provide #defines for each cpu pin. - for named_pin in self.cpu_pins: - pin = named_pin.pin() - n = pin.cpu_pin_name() - print("#if MICROPY_HW_ENABLE_{}".format(n), file=out_header) - print( - "#define pin_{:s} (machine_pin_obj_table[{}])".format(n, pin.pin), - file=out_header, - ) - print("#endif", file=out_header) + if not (0 <= int(cpu_pin_name[4:]) < NUM_GPIOS): + raise boardgen.PinGeneratorError("Unknown cpu pin '{}'".format(cpu_pin_name)) - # Provide #define's mapping board to cpu name. - for named_pin in self.board_pins: - if named_pin.pin().is_board_pin(): - print( - "#define pin_{:s} pin_{:s}".format( - named_pin.name(), named_pin.pin().cpu_pin_name() - ), - file=out_header, - ) +class Esp32PinGenerator(boardgen.NumericPinGenerator): + def __init__(self): + # Use custom pin type above. + super().__init__(pin_type=Esp32Pin) -def main(): - parser = argparse.ArgumentParser(description="Generate board specific pin file") - parser.add_argument("--board-csv") - parser.add_argument("--prefix") - parser.add_argument("--output-source") - parser.add_argument("--output-header") - args = parser.parse_args(sys.argv[1:]) - - pins = Pins() - pins.create_pins() - - if args.board_csv: - pins.parse_board_file(args.board_csv) - - with open(args.output_source, "w") as out_source: - print("// This file was automatically generated by make-pins.py", file=out_source) - print("//", file=out_source) - - if args.board_csv: - print("// --board-csv {:s}".format(args.board_csv), file=out_source) - - if args.prefix: - print("// --prefix {:s}".format(args.prefix), file=out_source) - print("", file=out_source) - with open(args.prefix, "r") as prefix_file: - print(prefix_file.read(), end="", file=out_source) + # Pre-define the pins (i.e. don't require them to be listed in pins.csv). + for i in range(NUM_GPIOS): + self.add_cpu_pin("GPIO{}".format(i)) - pins.print_tables(out_source) + # Only use pre-defined cpu pins (do not let board.csv create them). + def find_pin_by_cpu_pin_name(self, cpu_pin_name, create=True): + return super().find_pin_by_cpu_pin_name(cpu_pin_name, create=False) - with open(args.output_header, "w") as out_header: - pins.print_header(out_header) + # This is provided by the IDF and is one more than the highest available + # GPIO num. + def cpu_table_size(self): + return "GPIO_NUM_MAX" if __name__ == "__main__": - main() + Esp32PinGenerator().main() diff --git a/ports/esp32/machine_pin.c b/ports/esp32/machine_pin.c index d521e08e5141d..34c6512c8da79 100644 --- a/ports/esp32/machine_pin.c +++ b/ports/esp32/machine_pin.c @@ -58,9 +58,10 @@ #define GPIO_FIRST_NON_OUTPUT (46) #endif -// Return the gpio_num_t index for a given pin or pin-irq object. -#define PIN_OBJ_INDEX(self) ((self) - &machine_pin_obj_table[0]) -#define PIN_IRQ_OBJ_INDEX(self) ((self) - &machine_pin_irq_obj_table[0]) +// Return the gpio_num_t index for a given machine_pin_obj_t pointer. +#define PIN_OBJ_PTR_INDEX(self) ((self) - &machine_pin_obj_table[0]) +// Return the machine_pin_obj_t pointer corresponding to a machine_pin_irq_obj_t pointer. +#define PIN_OBJ_PTR_FROM_IRQ_OBJ_PTR(self) ((machine_pin_obj_t *)((uintptr_t)(self) - offsetof(machine_pin_obj_t, irq))) STATIC const machine_pin_obj_t *machine_pin_find_named(const mp_obj_dict_t *named_pins, mp_obj_t name) { const mp_map_t *named_map = &named_pins->map; @@ -90,7 +91,7 @@ void machine_pins_deinit(void) { STATIC void machine_pin_isr_handler(void *arg) { machine_pin_obj_t *self = arg; - mp_obj_t handler = MP_STATE_PORT(machine_pin_irq_handler)[PIN_OBJ_INDEX(self)]; + mp_obj_t handler = MP_STATE_PORT(machine_pin_irq_handler)[PIN_OBJ_PTR_INDEX(self)]; mp_sched_schedule(handler, MP_OBJ_FROM_PTR(self)); mp_hal_wake_main_task_from_isr(); } @@ -124,12 +125,12 @@ STATIC const machine_pin_obj_t *machine_pin_find(mp_obj_t pin_in) { gpio_num_t machine_pin_get_id(mp_obj_t pin_in) { const machine_pin_obj_t *self = machine_pin_find(pin_in); - return PIN_OBJ_INDEX(self); + return PIN_OBJ_PTR_INDEX(self); } STATIC void machine_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { machine_pin_obj_t *self = self_in; - mp_printf(print, "Pin(%u)", PIN_OBJ_INDEX(self)); + mp_printf(print, "Pin(%u)", PIN_OBJ_PTR_INDEX(self)); } // pin.init(mode=None, pull=-1, *, value, drive, hold) @@ -147,34 +148,36 @@ STATIC mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + gpio_num_t index = PIN_OBJ_PTR_INDEX(self); + // reset the pin to digital if this is a mode-setting init (grab it back from ADC) if (args[ARG_mode].u_obj != mp_const_none) { - if (rtc_gpio_is_valid_gpio(PIN_OBJ_INDEX(self))) { + if (rtc_gpio_is_valid_gpio(index)) { #if !CONFIG_IDF_TARGET_ESP32C3 - rtc_gpio_deinit(PIN_OBJ_INDEX(self)); + rtc_gpio_deinit(index); #endif } } #if CONFIG_IDF_TARGET_ESP32C3 - if (PIN_OBJ_INDEX(self) == 18 || PIN_OBJ_INDEX(self) == 19) { + if (index == 18 || index == 19) { CLEAR_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_USB_PAD_ENABLE); } #endif // configure the pin for gpio - esp_rom_gpio_pad_select_gpio(PIN_OBJ_INDEX(self)); + esp_rom_gpio_pad_select_gpio(index); // set initial value (do this before configuring mode/pull) if (args[ARG_value].u_obj != MP_OBJ_NULL) { - gpio_set_level(PIN_OBJ_INDEX(self), mp_obj_is_true(args[ARG_value].u_obj)); + gpio_set_level(index, mp_obj_is_true(args[ARG_value].u_obj)); } // set drive capability (do this before configuring mode) - if (args[ARG_drive].u_obj != MP_OBJ_NULL && GPIO_IS_VALID_OUTPUT_GPIO(PIN_OBJ_INDEX(self))) { + if (args[ARG_drive].u_obj != MP_OBJ_NULL && GPIO_IS_VALID_OUTPUT_GPIO(index)) { mp_int_t strength = mp_obj_get_int(args[ARG_drive].u_obj); if (0 <= strength && strength < GPIO_DRIVE_CAP_MAX) { - gpio_set_drive_capability(PIN_OBJ_INDEX(self), strength); + gpio_set_drive_capability(index, strength); } } @@ -182,11 +185,11 @@ STATIC mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_ if (args[ARG_mode].u_obj != mp_const_none) { mp_int_t pin_io_mode = mp_obj_get_int(args[ARG_mode].u_obj); #ifdef GPIO_FIRST_NON_OUTPUT - if (PIN_OBJ_INDEX(self) >= GPIO_FIRST_NON_OUTPUT && (pin_io_mode & GPIO_MODE_DEF_OUTPUT)) { + if (index >= GPIO_FIRST_NON_OUTPUT && (pin_io_mode & GPIO_MODE_DEF_OUTPUT)) { mp_raise_ValueError(MP_ERROR_TEXT("pin can only be input")); } #endif - gpio_set_direction(PIN_OBJ_INDEX(self), pin_io_mode); + gpio_set_direction(index, pin_io_mode); } // configure pull @@ -196,24 +199,24 @@ STATIC mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_ mode = mp_obj_get_int(args[ARG_pull].u_obj); } if (mode & GPIO_PULL_DOWN) { - gpio_pulldown_en(PIN_OBJ_INDEX(self)); + gpio_pulldown_en(index); } else { - gpio_pulldown_dis(PIN_OBJ_INDEX(self)); + gpio_pulldown_dis(index); } if (mode & GPIO_PULL_UP) { - gpio_pullup_en(PIN_OBJ_INDEX(self)); + gpio_pullup_en(index); } else { - gpio_pullup_dis(PIN_OBJ_INDEX(self)); + gpio_pullup_dis(index); } } // configure pad hold - if (args[ARG_hold].u_obj != MP_OBJ_NULL && GPIO_IS_VALID_OUTPUT_GPIO(PIN_OBJ_INDEX(self))) { + if (args[ARG_hold].u_obj != MP_OBJ_NULL && GPIO_IS_VALID_OUTPUT_GPIO(index)) { // always disable pad hold to apply outstanding config changes - gpio_hold_dis(PIN_OBJ_INDEX(self)); + gpio_hold_dis(index); // (re-)enable pad hold if requested if (mp_obj_is_true(args[ARG_hold].u_obj)) { - gpio_hold_en(PIN_OBJ_INDEX(self)); + gpio_hold_en(index); } } @@ -241,12 +244,13 @@ mp_obj_t mp_pin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, STATIC mp_obj_t machine_pin_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 0, 1, false); machine_pin_obj_t *self = self_in; + gpio_num_t index = PIN_OBJ_PTR_INDEX(self); if (n_args == 0) { // get pin - return MP_OBJ_NEW_SMALL_INT(gpio_get_level(PIN_OBJ_INDEX(self))); + return MP_OBJ_NEW_SMALL_INT(gpio_get_level(index)); } else { // set pin - gpio_set_level(PIN_OBJ_INDEX(self), mp_obj_is_true(args[0])); + gpio_set_level(index, mp_obj_is_true(args[0])); return mp_const_none; } } @@ -266,7 +270,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_pin_value_obj, 1, 2, machine_ // pin.off() STATIC mp_obj_t machine_pin_off(mp_obj_t self_in) { machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); - gpio_set_level(PIN_OBJ_INDEX(self), 0); + gpio_set_level(PIN_OBJ_PTR_INDEX(self), 0); return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_off_obj, machine_pin_off); @@ -274,7 +278,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_off_obj, machine_pin_off); // pin.on() STATIC mp_obj_t machine_pin_on(mp_obj_t self_in) { machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); - gpio_set_level(PIN_OBJ_INDEX(self), 1); + gpio_set_level(PIN_OBJ_PTR_INDEX(self), 1); return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_on_obj, machine_pin_on); @@ -293,6 +297,7 @@ STATIC mp_obj_t machine_pin_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_ if (n_args > 1 || kw_args->used != 0) { // configure irq + gpio_num_t index = PIN_OBJ_PTR_INDEX(self); mp_obj_t handler = args[ARG_handler].u_obj; uint32_t trigger = args[ARG_trigger].u_int; mp_obj_t wake_obj = args[ARG_wake].u_obj; @@ -311,20 +316,20 @@ STATIC mp_obj_t machine_pin_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_ mp_raise_ValueError(MP_ERROR_TEXT("no resources")); } - if (!RTC_IS_VALID_EXT_PIN(PIN_OBJ_INDEX(self))) { + if (!RTC_IS_VALID_EXT_PIN(index)) { mp_raise_ValueError(MP_ERROR_TEXT("invalid pin for wake")); } if (machine_rtc_config.ext0_pin == -1) { - machine_rtc_config.ext0_pin = PIN_OBJ_INDEX(self); - } else if (machine_rtc_config.ext0_pin != PIN_OBJ_INDEX(self)) { + machine_rtc_config.ext0_pin = index; + } else if (machine_rtc_config.ext0_pin != index) { mp_raise_ValueError(MP_ERROR_TEXT("no resources")); } machine_rtc_config.ext0_level = trigger == GPIO_INTR_LOW_LEVEL ? 0 : 1; machine_rtc_config.ext0_wake_types = wake; } else { - if (machine_rtc_config.ext0_pin == PIN_OBJ_INDEX(self)) { + if (machine_rtc_config.ext0_pin == index) { machine_rtc_config.ext0_pin = -1; } @@ -332,15 +337,15 @@ STATIC mp_obj_t machine_pin_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_ handler = MP_OBJ_NULL; trigger = 0; } - gpio_isr_handler_remove(PIN_OBJ_INDEX(self)); - MP_STATE_PORT(machine_pin_irq_handler)[PIN_OBJ_INDEX(self)] = handler; - gpio_set_intr_type(PIN_OBJ_INDEX(self), trigger); - gpio_isr_handler_add(PIN_OBJ_INDEX(self), machine_pin_isr_handler, (void *)self); + gpio_isr_handler_remove(index); + MP_STATE_PORT(machine_pin_irq_handler)[index] = handler; + gpio_set_intr_type(index, trigger); + gpio_isr_handler_add(index, machine_pin_isr_handler, (void *)self); } } // return the irq object - return MP_OBJ_FROM_PTR(&machine_pin_irq_obj_table[PIN_OBJ_INDEX(self)]); + return MP_OBJ_FROM_PTR(&self->irq); } STATIC MP_DEFINE_CONST_FUN_OBJ_KW(machine_pin_irq_obj, 1, machine_pin_irq); @@ -381,13 +386,14 @@ STATIC const mp_rom_map_elem_t machine_pin_locals_dict_table[] = { STATIC mp_uint_t pin_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { (void)errcode; machine_pin_obj_t *self = self_in; + gpio_num_t index = PIN_OBJ_PTR_INDEX(self); switch (request) { case MP_PIN_READ: { - return gpio_get_level(PIN_OBJ_INDEX(self)); + return gpio_get_level(index); } case MP_PIN_WRITE: { - gpio_set_level(PIN_OBJ_INDEX(self), arg); + gpio_set_level(index, arg); return 0; } } @@ -417,16 +423,17 @@ MP_DEFINE_CONST_OBJ_TYPE( STATIC mp_obj_t machine_pin_irq_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const mp_obj_t *args) { machine_pin_irq_obj_t *self = self_in; mp_arg_check_num(n_args, n_kw, 0, 0, false); - machine_pin_isr_handler((void *)&machine_pin_obj_table[PIN_IRQ_OBJ_INDEX(self)]); + machine_pin_isr_handler((void *)PIN_OBJ_PTR_FROM_IRQ_OBJ_PTR(self)); return mp_const_none; } STATIC mp_obj_t machine_pin_irq_trigger(size_t n_args, const mp_obj_t *args) { machine_pin_irq_obj_t *self = args[0]; - uint32_t orig_trig = GPIO.pin[PIN_IRQ_OBJ_INDEX(self)].int_type; + gpio_num_t index = PIN_OBJ_PTR_INDEX(PIN_OBJ_PTR_FROM_IRQ_OBJ_PTR(self)); + uint32_t orig_trig = GPIO.pin[index].int_type; if (n_args == 2) { // set trigger - gpio_set_intr_type(PIN_IRQ_OBJ_INDEX(self), mp_obj_get_int(args[1])); + gpio_set_intr_type(index, mp_obj_get_int(args[1])); } // return original trigger value return MP_OBJ_NEW_SMALL_INT(orig_trig); diff --git a/ports/esp32/machine_pin.h b/ports/esp32/machine_pin.h index dbbaac2219be9..53f9c6bdad7cd 100644 --- a/ports/esp32/machine_pin.h +++ b/ports/esp32/machine_pin.h @@ -146,18 +146,18 @@ #endif -typedef struct _machine_pin_obj_t { - mp_obj_base_t base; -} machine_pin_obj_t; - typedef struct _machine_pin_irq_obj_t { mp_obj_base_t base; } machine_pin_irq_obj_t; +typedef struct _machine_pin_obj_t { + mp_obj_base_t base; + machine_pin_irq_obj_t irq; +} machine_pin_obj_t; + extern const mp_obj_type_t machine_pin_irq_type; extern const machine_pin_obj_t machine_pin_obj_table[GPIO_NUM_MAX]; -extern const machine_pin_irq_obj_t machine_pin_irq_obj_table[GPIO_NUM_MAX]; extern const mp_obj_dict_t machine_pin_board_pins_locals_dict; diff --git a/ports/esp8266/Makefile b/ports/esp8266/Makefile index b29df9fd2223c..cea0e789c63f8 100644 --- a/ports/esp8266/Makefile +++ b/ports/esp8266/Makefile @@ -187,8 +187,6 @@ OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o)) # List of sources for qstr extraction SRC_QSTR += $(SRC_C) $(SHARED_SRC_C) -# Append any auto-generated sources that are needed by sources listed in SRC_QSTR -SRC_QSTR_AUTO_DEPS += all: $(FWBIN) diff --git a/ports/mimxrt/Makefile b/ports/mimxrt/Makefile index 6131a509d8944..bdf66926b60fb 100644 --- a/ports/mimxrt/Makefile +++ b/ports/mimxrt/Makefile @@ -61,8 +61,6 @@ AF_FILE = boards/$(MCU_SERIES)_af.csv BOARD_PINS = $(BOARD_DIR)/pins.csv PREFIX_FILE = boards/mimxrt_prefix.c GEN_FLEXRAM_CONFIG_SRC = $(BUILD)/flexram_config.s -GEN_PINS_AF_CONST = $(HEADER_BUILD)/pins_af_const.h -GEN_PINS_AF_PY = $(BUILD)/pins_af.py GEN_PINS_HDR = $(HEADER_BUILD)/pins.h GEN_PINS_SRC = $(BUILD)/pins_gen.c @@ -506,11 +504,8 @@ $(GEN_FLEXRAM_CONFIG_SRC): # both pins_gen.c and pins.h $(BUILD)/%_gen.c $(HEADER_BUILD)/%.h: $(BOARD_PINS) $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) $(ECHO) "Create $@" - $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE)\ - --iomux $(abspath $(TOP)/$(MCU_DIR)/drivers/fsl_iomuxc.h) \ - --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) > $(GEN_PINS_SRC) - -$(GEN_PINS_SRC:.c=.o): $(GEN_PINS_SRC) - $(call compile_c) + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv $(AF_FILE) \ + --prefix $(PREFIX_FILE) --iomux $(abspath $(TOP)/$(MCU_DIR)/drivers/fsl_iomuxc.h) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) include $(TOP)/py/mkrules.mk diff --git a/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h index 8b7316c8dabfc..b4f777cf93b00 100644 --- a/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h +++ b/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h @@ -170,10 +170,6 @@ #define ENET_PHY_ADDRESS (2) #define ENET_PHY_OPS phyksz8081_ops -// Etherner PIN definitions -#define ENET_RESET_PIN &pin_GPIO_AD_B0_04 -#define ENET_INT_PIN &pin_GPIO_AD_B1_06 - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_AD_B0_08_ENET_REF_CLK1, 1, 0xB0E9u }, \ { IOMUXC_GPIO_AD_B0_09_ENET_RDATA01, 0, 0xB0E9u }, \ diff --git a/ports/mimxrt/boards/MIMXRT1020_EVK/pins.csv b/ports/mimxrt/boards/MIMXRT1020_EVK/pins.csv index e1f2669b08ece..e524958dc803b 100644 --- a/ports/mimxrt/boards/MIMXRT1020_EVK/pins.csv +++ b/ports/mimxrt/boards/MIMXRT1020_EVK/pins.csv @@ -38,3 +38,12 @@ SD_RX,GPIO_AD_B1_05 SCK_TX,GPIO_AD_B1_01 WS_TX,GPIO_AD_B1_02 SD_TX,GPIO_AD_B1_03 +-ENET_RESET,-GPIO_AD_B0_04 +-ENET_INT,-GPIO_AD_B1_06 +-SD_CMD,-GPIO_SD_B0_02 +-SD_CLK,-GPIO_SD_B0_03 +-SD_CD,-GPIO_SD_B0_06 +-SD_DATA0,-GPIO_SD_B0_04 +-SD_DATA1,-GPIO_SD_B0_05 +-SD_DATA2,-GPIO_SD_B0_00 +-SD_DATA3,-GPIO_SD_B0_01 diff --git a/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h index 74666562a81d5..59a5c4fa69f84 100644 --- a/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h +++ b/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h @@ -160,10 +160,6 @@ #define ENET_PHY_ADDRESS (2) #define ENET_PHY_OPS phyksz8081_ops -// Etherner PIN definitions -#define ENET_RESET_PIN &pin_GPIO_AD_B0_09 -#define ENET_INT_PIN &pin_GPIO_AD_B0_10 - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_B1_04_ENET_RX_DATA00, 0, 0xB0E9u }, \ { IOMUXC_GPIO_B1_05_ENET_RX_DATA01, 0, 0xB0E9u }, \ diff --git a/ports/mimxrt/boards/MIMXRT1050_EVK/pins.csv b/ports/mimxrt/boards/MIMXRT1050_EVK/pins.csv index 4bdd9e4f033cf..dc624b6d28aa6 100644 --- a/ports/mimxrt/boards/MIMXRT1050_EVK/pins.csv +++ b/ports/mimxrt/boards/MIMXRT1050_EVK/pins.csv @@ -36,3 +36,13 @@ SD_RX,GPIO_AD_B1_12 SCK_TX,GPIO_AD_B1_14 WS_TX,GPIO_AD_B1_15 SD_TX,GPIO_AD_B1_13 + +-ENET_RESET,-GPIO_AD_B0_09 +-ENET_INT,-GPIO_AD_B0_10 +-SD_CMD,-GPIO_SD_B0_00 +-SD_CLK,-GPIO_SD_B0_01 +-SD_CD_B,-GPIO_B1_12 +-SD_DATA0,-GPIO_SD_B0_02 +-SD_DATA1,-GPIO_SD_B0_03 +-SD_DATA2,-GPIO_SD_B0_04 +-SD_DATA3,-GPIO_SD_B0_05 diff --git a/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h index 824f9977c2710..58ecd74e3b516 100644 --- a/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h +++ b/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h @@ -158,10 +158,6 @@ #define ENET_PHY_ADDRESS (2) #define ENET_PHY_OPS phyksz8081_ops -// Etherner PIN definitions -#define ENET_RESET_PIN &pin_GPIO_AD_B0_09 -#define ENET_INT_PIN &pin_GPIO_AD_B0_10 - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_B1_04_ENET_RX_DATA00, 0, 0xB0E9u }, \ { IOMUXC_GPIO_B1_05_ENET_RX_DATA01, 0, 0xB0E9u }, \ diff --git a/ports/mimxrt/boards/MIMXRT1060_EVK/pins.csv b/ports/mimxrt/boards/MIMXRT1060_EVK/pins.csv index 4bdd9e4f033cf..dc624b6d28aa6 100644 --- a/ports/mimxrt/boards/MIMXRT1060_EVK/pins.csv +++ b/ports/mimxrt/boards/MIMXRT1060_EVK/pins.csv @@ -36,3 +36,13 @@ SD_RX,GPIO_AD_B1_12 SCK_TX,GPIO_AD_B1_14 WS_TX,GPIO_AD_B1_15 SD_TX,GPIO_AD_B1_13 + +-ENET_RESET,-GPIO_AD_B0_09 +-ENET_INT,-GPIO_AD_B0_10 +-SD_CMD,-GPIO_SD_B0_00 +-SD_CLK,-GPIO_SD_B0_01 +-SD_CD_B,-GPIO_B1_12 +-SD_DATA0,-GPIO_SD_B0_02 +-SD_DATA1,-GPIO_SD_B0_03 +-SD_DATA2,-GPIO_SD_B0_04 +-SD_DATA3,-GPIO_SD_B0_05 diff --git a/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h index cb64d2b9d24f8..3170849fe7093 100644 --- a/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h +++ b/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h @@ -158,10 +158,6 @@ #define ENET_PHY_ADDRESS (2) #define ENET_PHY_OPS phyksz8081_ops -// Etherner PIN definitions -#define ENET_RESET_PIN &pin_GPIO_AD_B0_09 -#define ENET_INT_PIN &pin_GPIO_AD_B0_10 - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_B1_04_ENET_RX_DATA00, 0, 0xB0E9u }, \ { IOMUXC_GPIO_B1_05_ENET_RX_DATA01, 0, 0xB0E9u }, \ diff --git a/ports/mimxrt/boards/MIMXRT1064_EVK/pins.csv b/ports/mimxrt/boards/MIMXRT1064_EVK/pins.csv index 4bdd9e4f033cf..dc624b6d28aa6 100644 --- a/ports/mimxrt/boards/MIMXRT1064_EVK/pins.csv +++ b/ports/mimxrt/boards/MIMXRT1064_EVK/pins.csv @@ -36,3 +36,13 @@ SD_RX,GPIO_AD_B1_12 SCK_TX,GPIO_AD_B1_14 WS_TX,GPIO_AD_B1_15 SD_TX,GPIO_AD_B1_13 + +-ENET_RESET,-GPIO_AD_B0_09 +-ENET_INT,-GPIO_AD_B0_10 +-SD_CMD,-GPIO_SD_B0_00 +-SD_CLK,-GPIO_SD_B0_01 +-SD_CD_B,-GPIO_B1_12 +-SD_DATA0,-GPIO_SD_B0_02 +-SD_DATA1,-GPIO_SD_B0_03 +-SD_DATA2,-GPIO_SD_B0_04 +-SD_DATA3,-GPIO_SD_B0_05 diff --git a/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h index 8ce91adbaf23e..131c5e1725477 100644 --- a/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h +++ b/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h @@ -155,10 +155,6 @@ #define ENET_PHY KSZ8081 #define ENET_PHY_OPS phyksz8081_ops -// 10/100 Ethernet PIN definitions -#define ENET_RESET_PIN &pin_GPIO_LPSR_12 -#define ENET_INT_PIN &pin_GPIO_AD_12 - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_DISP_B2_06_ENET_RX_DATA00, 0, 0x06u }, \ { IOMUXC_GPIO_DISP_B2_07_ENET_RX_DATA01, 0, 0x06u }, \ diff --git a/ports/mimxrt/boards/MIMXRT1170_EVK/pins.csv b/ports/mimxrt/boards/MIMXRT1170_EVK/pins.csv index 77f87e8ba15c7..30062fe3445ff 100644 --- a/ports/mimxrt/boards/MIMXRT1170_EVK/pins.csv +++ b/ports/mimxrt/boards/MIMXRT1170_EVK/pins.csv @@ -57,3 +57,13 @@ SD_RX,GPIO_AD_20 SCK_TX,GPIO_AD_22 WS_TX,GPIO_AD_23 SD_TX,GPIO_AD_21 + +-ENET_RESET,-GPIO_LPSR_12 +-ENET_INT,-GPIO_AD_12 +-ENET_1_RESET,-GPIO_DISP_B2_13 +-SD_CMD,-GPIO_SD_B1_00 +-SD_CLK,-GPIO_SD_B1_01 +-SD_DATA0,-GPIO_SD_B1_02 +-SD_DATA1,-GPIO_SD_B1_03 +-SD_DATA2,-GPIO_SD_B1_04 +-SD_DATA3,-GPIO_SD_B1_05 diff --git a/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h b/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h index edda72f2660d1..627b1aa3b1311 100644 --- a/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h +++ b/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h @@ -127,11 +127,6 @@ #define ENET_PHY_OPS phylan8720_ops #define ENET_TX_CLK_OUTPUT false -// Etherner PIN definitions -// No reset and interrupt pin by intention -#define ENET_RESET_PIN NULL -#define ENET_INT_PIN NULL - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_B1_04_ENET_RX_DATA00, 0, 0xB0E9u }, \ { IOMUXC_GPIO_B1_05_ENET_RX_DATA01, 0, 0xB0E9u }, \ diff --git a/ports/mimxrt/boards/SEEED_ARCH_MIX/pins.csv b/ports/mimxrt/boards/SEEED_ARCH_MIX/pins.csv index 6b757fae4b07c..785a442dbca18 100644 --- a/ports/mimxrt/boards/SEEED_ARCH_MIX/pins.csv +++ b/ports/mimxrt/boards/SEEED_ARCH_MIX/pins.csv @@ -9,7 +9,7 @@ J3_11,GPIO_B1_07 J3_12,GPIO_B1_09 J3_13,GPIO_B1_10 J3_14,GPIO_AD_B0_14 -J3_15,GPO_AD_B0_15 +J3_15,GPIO_AD_B0_15 J3_16,GPIO_AD_B1_00 J3_17,GPIO_AD_B1_01 J3_19,GPIO_AD_B0_13 @@ -67,3 +67,13 @@ SD_RX,GPIO_AD_B1_12 SCK_TX,GPIO_AD_B1_14 WS_TX,GPIO_AD_B1_15 SD_TX,GPIO_AD_B1_13 + +# No ethernet reset and interrupt pin by intention + +-SD_CMD,-GPIO_SD_B0_00 +-SD_CLK,-GPIO_SD_B0_01 +-SD_CD_B,-GPIO_B1_12 +-SD_DATA0,-GPIO_SD_B0_02 +-SD_DATA1,-GPIO_SD_B0_03 +-SD_DATA2,-GPIO_SD_B0_04 +-SD_DATA3,-GPIO_SD_B0_05 diff --git a/ports/mimxrt/boards/TEENSY41/mpconfigboard.h b/ports/mimxrt/boards/TEENSY41/mpconfigboard.h index 09addbe52c219..bff319c6d1576 100644 --- a/ports/mimxrt/boards/TEENSY41/mpconfigboard.h +++ b/ports/mimxrt/boards/TEENSY41/mpconfigboard.h @@ -125,10 +125,6 @@ #define ENET_PHY_ADDRESS (0) #define ENET_PHY_OPS phydp83825_ops -// Ethernet PIN definitions -#define ENET_RESET_PIN &pin_GPIO_B0_14 -#define ENET_INT_PIN &pin_GPIO_B0_15 - #define IOMUX_TABLE_ENET \ { IOMUXC_GPIO_B1_04_ENET_RX_DATA00, 0, 0xB0E9u }, \ { IOMUXC_GPIO_B1_05_ENET_RX_DATA01, 0, 0xB0E9u }, \ diff --git a/ports/mimxrt/boards/TEENSY41/pins.csv b/ports/mimxrt/boards/TEENSY41/pins.csv index b28a22312c707..e09c979620a23 100755 --- a/ports/mimxrt/boards/TEENSY41/pins.csv +++ b/ports/mimxrt/boards/TEENSY41/pins.csv @@ -88,3 +88,12 @@ SD_RX,GPIO_B1_00 SCK_TX,GPIO_EMC_06 WS_TX,GPIO_EMC_05 SD_TX,GPIO_EMC_04 + +-ENET_RESET,-GPIO_B0_14 +-ENET_INT,-GPIO_B0_15 +-SD_CMD,-GPIO_SD_B0_00 +-SD_CLK,-GPIO_SD_B0_01 +-SD_DATA0,-GPIO_SD_B0_02 +-SD_DATA1,-GPIO_SD_B0_03 +-SD_DATA2,-GPIO_SD_B0_04 +-SD_DATA3,-GPIO_SD_B0_05 diff --git a/ports/mimxrt/boards/make-pins.py b/ports/mimxrt/boards/make-pins.py index 5795e2f0421c1..55c7f5bd02738 100644 --- a/ports/mimxrt/boards/make-pins.py +++ b/ports/mimxrt/boards/make-pins.py @@ -1,19 +1,15 @@ #!/usr/bin/env python -"""Creates the pin file for the MIMXRT10xx.""" -from __future__ import print_function - -import argparse -import sys -import csv +from collections import defaultdict +import os import re +import sys -SUPPORTED_AFS = {"GPIO", "USDHC", "FLEXPWM", "TMR"} -MAX_AF = 10 # AF0 .. AF9 -ADC_COL = 11 +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools")) +import boardgen -regexes = [ +IOMUX_REGEXS = [ r"IOMUXC_(?PGPIO_SD_B\d_\d\d)_(?P\w+) (?P\w+), (?P\w+), (?P\w+), (?P\w+), (?P\w+)", r"IOMUXC_(?PGPIO_AD_B\d_\d\d)_(?P\w+) (?P\w+), (?P\w+), (?P\w+), (?P\w+), (?P\w+)", r"IOMUXC_(?PGPIO_EMC_\d\d)_(?P\w+) (?P\w+), (?P\w+), (?P\w+), (?P\w+), (?P\w+)", @@ -30,408 +26,197 @@ r"IOMUXC_(?PGPIO_SNVS_\d\d_DIG)_(?P\w+) (?P\w+), (?P\w+), (?P\w+), (?P\w+), (?P\w+)", ] - -def parse_pad(pad_str): - """Parses a string and returns a (port, gpio_bit) tuple.""" - if len(pad_str) < 4: - raise ValueError("Expecting pad name to be at least 4 characters") - if pad_str[:4] != "GPIO": - raise ValueError("Expecting pad name to start with GPIO") - return pad_str - - -def af_supported(af_str): - for supported_af in SUPPORTED_AFS: - if af_str.startswith(supported_af): - return True - else: - return False - - -class Pin(object): - """Holds the information associated with a pin.""" - - def __init__(self, pad, gpio, pin, idx=0): - self.idx = idx - self.name = pad - self.pad = pad - self.gpio = gpio - self.pin = pin - self.alt_fn = [] - self.adc_fns = [] - self.board_pin = False - - def set_is_board_pin(self): - self.board_pin = True - - def is_board_pin(self): - return self.board_pin - - def parse_adc(self, adc_str): - adc_regex = r"ADC(?P\d*)_IN(?P\d*)" - lpadc_regex = r"ADC(?P\d*)_CH(?P\d*)" # LPADC for MIMXRT11xx chips - - matches = re.finditer(adc_regex, adc_str, re.MULTILINE) - for match in matches: - self.adc_fns.append( - AdcFunction(instance=match.group("instance"), channel=match.group("channel")) - ) - - matches = re.finditer(lpadc_regex, adc_str, re.MULTILINE) - for match in matches: - self.adc_fns.append( - AdcFunction( - peripheral="LPADC", - instance=match.group("instance"), - channel=match.group("channel"), +SUPPORTED_AF_FNS = {"GPIO", "USDHC", "FLEXPWM", "TMR"} + + +class MimxrtPin(boardgen.Pin): + def __init__(self, cpu_pin_name): + super().__init__(cpu_pin_name) + + self._afs = [] + self._adc_fns = [] + + # Called for each AF defined in the csv file for this pin. + def add_af(self, af_idx, af_name, af): + # mimxrt-specific: Any pin in the af.csv is implicitly part of the board + # pins.csv and will therefore be in the Pin.cpu dict. This is + # equivalent to adding `,CPUNAME` to the board.csv for every pin in the + # af.csv. + self._available = True + + if af_name == "ALT5": + m = re.match("GPIO([0-9]+)_IO([0-9]+)", af) + self._port = int(m.group(1)) + self._pin = int(m.group(2)) + + if af_name.startswith("ALT"): + instance = af.split("_")[0] + fn = re.match("^([A-Z][A-Z0-9]+[A-Z])[0-9]*$", instance).group(1) + if fn not in SUPPORTED_AF_FNS: + return + iomux_config = self._generator._iomux_pin_config[self.name()] + input_reg = iomux_config[af_idx]["inputRegister"].strip("U") + input_daisy = int(iomux_config[af_idx]["inputDaisy"].strip("U"), 16) + self._afs.append((af_idx, input_reg, input_daisy, instance, fn, af)) + + elif af_name == "ADC": + adc_regex = r"ADC(?P\d*)_IN(?P\d*)" + lpadc_regex = r"ADC(?P\d*)_CH(?P\d*)" # LPADC for MIMXRT11xx chips + + matches = re.finditer(adc_regex, af, re.MULTILINE) + for match in matches: + self._adc_fns.append( + (int(match.group("instance")), int(match.group("channel")), "ADC") ) - ) - def parse_af(self, af_idx, af_strs_in): - pass - - def add_af(self, af): - self.alt_fn.append(af) - - def print_pin_af(self): - if self.alt_fn: - print( - "static const machine_pin_af_obj_t pin_{0}_af[{1}] = {{".format( - self.name, len(self.alt_fn) + matches = re.finditer(lpadc_regex, af, re.MULTILINE) + for match in matches: + self._adc_fns.append( + (int(match.group("instance")), int(match.group("channel")), "LPADC") ) - ) - for af in self.alt_fn: - af.print() - print("};") + + # Use the PIN() macro defined in samd_prefix.c for defining the pin + # objects. + def definition(self): + if "_LPSR_" in self.name(): + macro = "PIN_LPSR" + elif ( + "_SNVS_" in self.name() + or self.name().startswith("PMIC_") + or self.name().startswith("WAKEUP") + ): + macro = "PIN_SNVS" else: - raise ValueError("Pin '{}' has no alternative functions".format(self.name)) + macro = "PIN" + + # PIN(_name, _gpio, _pin, _af_list, _adc_list_len, _adc_list) + return "{:s}({:s}, GPIO{:d}, {:d}, pin_{:s}_af, {:d}, {:s})".format( + macro, + self.name(), + self._port, + self._pin, + self.name(), + len(self._adc_fns), + "pin_{:s}_adc".format(self.name()) if self._adc_fns else "NULL", + ) - def print_pin_adc(self): - if self.adc_fns: + # This will be called at the start of the output (after the prefix) for + # each pin. Use it to emit the af and adc objects. + def print_source(self, out_source): + print( + "static const machine_pin_af_obj_t pin_{:s}_af[] = {{".format(self.name()), + file=out_source, + ) + for af_idx, input_reg, input_daisy, instance, _fn, af in self._afs: print( - "static const machine_pin_adc_obj_t pin_{0}_adc[{1}] = {{".format( - self.name, len(self.adc_fns) - ) + " PIN_AF({:s}, PIN_AF_MODE_ALT{:d}, {:d}, {:s}, {:s}, {:s}),".format( + af, af_idx, input_daisy, instance, input_reg, "0x10B0U" + ), + file=out_source, ) - for adc_fn in self.adc_fns: - adc_fn.print() - print("};") - - def print(self): - if self.alt_fn: - self.print_pin_af() - self.print_pin_adc() - - options = { - "GPIO_LPSR_00": "PIN_LPSR", - "GPIO_LPSR_01": "PIN_LPSR", - "GPIO_LPSR_02": "PIN_LPSR", - "GPIO_LPSR_03": "PIN_LPSR", - "GPIO_LPSR_04": "PIN_LPSR", - "GPIO_LPSR_05": "PIN_LPSR", - "GPIO_LPSR_06": "PIN_LPSR", - "GPIO_LPSR_07": "PIN_LPSR", - "GPIO_LPSR_08": "PIN_LPSR", - "GPIO_LPSR_09": "PIN_LPSR", - "GPIO_LPSR_10": "PIN_LPSR", - "GPIO_LPSR_11": "PIN_LPSR", - "GPIO_LPSR_12": "PIN_LPSR", - "GPIO_LPSR_13": "PIN_LPSR", - "GPIO_LPSR_14": "PIN_LPSR", - "GPIO_LPSR_15": "PIN_LPSR", - "GPIO_SNVS_00_DIG": "PIN_SNVS", - "GPIO_SNVS_01_DIG": "PIN_SNVS", - "GPIO_SNVS_02_DIG": "PIN_SNVS", - "GPIO_SNVS_03_DIG": "PIN_SNVS", - "GPIO_SNVS_04_DIG": "PIN_SNVS", - "GPIO_SNVS_05_DIG": "PIN_SNVS", - "GPIO_SNVS_06_DIG": "PIN_SNVS", - "GPIO_SNVS_07_DIG": "PIN_SNVS", - "GPIO_SNVS_08_DIG": "PIN_SNVS", - "GPIO_SNVS_09_DIG": "PIN_SNVS", - "WAKEUP": "PIN_SNVS", - "WAKEUP_DIG": "PIN_SNVS", - "PMIC_ON_REQ": "PIN_SNVS", - "PMIC_ON_REQ_DIG": "PIN_SNVS", - "PMIC_STBY_REQ": "PIN_SNVS", - "PMIC_STBY_REQ_DIG": "PIN_SNVS", - } + print("};", file=out_source) + print(file=out_source) + if self._adc_fns: print( - "const machine_pin_obj_t pin_{0} = {1}({0}, {2}, {3}, pin_{0}_af, {4}, {5});\n".format( - self.name, - options.get(self.name, "PIN"), - self.gpio, - int(self.pin), - len(self.adc_fns), - "pin_{}_adc".format(self.name) if self.adc_fns else "NULL", - ) + "static const machine_pin_adc_obj_t pin_{:s}_adc[] = {{".format(self.name()), + file=out_source, ) - else: - raise ValueError("Pin '{}' has no alternative functions".format(self.name)) - - def print_header(self, hdr_file): - pass - - -class AdcFunction(object): - """Holds the information associated with a pins ADC function.""" - - def __init__(self, instance, channel, peripheral="ADC"): - self.peripheral = peripheral - self.instance = instance - self.channel = channel - - def print(self): - """Prints the C representation of this AF.""" - print(f" PIN_ADC({self.peripheral}{self.instance}, {self.channel}),") + for instance, channel, peripheral in self._adc_fns: + print( + " PIN_ADC({:s}{:d}, {:d}),".format(peripheral, instance, channel), + file=out_source, + ) + print("};", file=out_source) + # mimxrt cpu names must be "GPIO__", with zero-prefixed two-digit . + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + boardgen.Pin.validate_cpu_pin_name(cpu_pin_name) -class AlternateFunction(object): - """Holds the information associated with a pins alternate function.""" + if not re.match( + "^((GPIO_((SNVS|EMC|LPSR|DISP)_)?([AS]D_)?(B[012]_)?[0-9][0-9])|WAKEUP|PMIC_(ON|STBY)_REQ)(_DIG)?$", + cpu_pin_name, + ): + raise boardgen.PinGeneratorError("Invalid cpu pin name '{}'".format(cpu_pin_name)) - def __init__(self, idx, input_reg, input_daisy, af_str): - self.idx = idx - self.af_str = af_str - self.input_reg = input_reg - self.input_daisy = input_daisy - self.instance = self.af_str.split("_")[0] - def print(self): - """Prints the C representation of this AF.""" - print( - " PIN_AF({0}, PIN_AF_MODE_ALT{1}, {2}, {3}, {4}, {5}),".format( - self.af_str, self.idx, self.input_daisy, self.instance, self.input_reg, "0x10B0U" - ) +class MimxrtPinGenerator(boardgen.PinGenerator): + def __init__(self): + # Use custom pin type above, and also enable the --af-csv argument so + # that add_af gets called on each pin. + super().__init__( + pin_type=MimxrtPin, + enable_af=True, ) + self._iomux_pin_config = {} - -class NamedPin(object): - def __init__(self, name, pad, idx): - self.name = name - self.pad = pad - self.idx = idx - - -class Pins(object): - def __init__(self): - self.cpu_pins = [] - self.board_pins = [] - - def find_pin_by_num(self, pin_num): - for pin in self.cpu_pins: - if pin.pin_num == pin_num: - return pin - - def find_pin_by_name(self, pad): - for pin in self.cpu_pins: - if pin.pad == pad: - return pin - - def parse_board_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - if len(row) == 0 or row[0].startswith("#"): - # Skip empty lines, and lines starting with "#" - continue - if len(row) != 2: - raise ValueError("Expecting two entries in a row") - - pin = self.find_pin_by_name(row[1]) - if pin and row[0]: # Only add board pins that have a name - self.board_pins.append(NamedPin(row[0], pin.pad, pin.idx)) - - def parse_af_file(self, filename, iomux_filename): - iomux_pin_config = dict() + # Load the iomux configuration from fsl_iomuxc.h. + def load_iomux_header(self, iomux_filename): with open(iomux_filename, "r") as ipt: input_str = ipt.read() - for regex in regexes: + for regex in IOMUX_REGEXS: matches = re.finditer(regex, input_str, re.MULTILINE) for match in matches: - if match.group("pin") not in iomux_pin_config: - iomux_pin_config[match.group("pin")] = { + if match.group("pin") not in self._iomux_pin_config: + self._iomux_pin_config[match.group("pin")] = { int((match.groupdict()["muxMode"].strip("U")), 16): match.groupdict() } else: - iomux_pin_config[match.group("pin")][ + self._iomux_pin_config[match.group("pin")][ int((match.groupdict()["muxMode"].strip("U")), 16) ] = match.groupdict() - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - header = next(rows) - # Extract indexes from header row - pad_col = header.index("Pad") - adc_col = header.index("ADC") - # - for idx, row in enumerate(rows): - pad = row[pad_col] - gpio, pin = row[6].split("_") - pin_number = pin.lstrip("IO") - pin = Pin(pad, gpio, pin_number, idx=idx) - - # Parse alternate functions - af_idx = 0 - for af_idx, af in enumerate(row[(pad_col + 1) : adc_col]): - if af and af_supported(af): - pin.add_af( - AlternateFunction( - af_idx, - iomux_pin_config[pin.name][af_idx]["inputRegister"].strip("U"), - int( - iomux_pin_config[pin.name][af_idx]["inputDaisy"].strip("U"), 16 - ), - af, + # Also load the iomux header. + def load_inputs(self, out_source): + if self.args.iomux_header: + print("// --iomux-header {:s}".format(self.args.iomux_header), file=out_source) + self.load_iomux_header(self.args.iomux_header) + + super().load_inputs(out_source) + + # Provide a macro for each supported (pin,af) that can be used to + # initialise a struct containing a machine_pin_obj_t* and the + # corresponding af for that pin. e.g. A mimxrt_sdcard_pin_t instance can + # be initialised with GPIO_SD_B0_00_USDHC1_CMD which tells it how to get + # the CMD pin of the USDHC1 function on the GPIO_SD_B0_00 pin. + def print_module_instances(self, out_header): + print(file=out_header) + for match_fn in ("USDHC", "FLEXPWM", "TMR"): + module_instances = defaultdict(list) + for pin in self.available_pins(): + for i, (_af_idx, _input_reg, _input_daisy, instance, fn, af) in enumerate( + pin._afs + ): + if fn == match_fn: + module_instances[instance].append( + "#define {:s}_{:s} pin_{:s}, {:d}".format( + pin.name(), af, pin.name(), i ) ) + for k, v in module_instances.items(): + print("// {:s}".format(k), file=out_header) + print("#define {:s}_AVAIL (1)".format(k), file=out_header) + if match_fn == "FLEXPWM": + print("#define {:s} {:s}".format(k, k[-4:]), file=out_header) + for i in v: + print(i, file=out_header) - pin.parse_adc(row[adc_col]) + # Override to also print the module instances. + def print_header(self, out_header): + super().print_header(out_header) + self.print_module_instances(out_header) - self.cpu_pins.append(pin) - - @staticmethod - def print_named(label, pins): - print("") - print( - "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label) - ) - for pin in pins: - print( - " {{ MP_ROM_QSTR(MP_QSTR_{}), MP_ROM_PTR(&pin_{}) }},".format(pin.name, pin.pad) - ) - print("};") - print( - "MP_DEFINE_CONST_DICT(machine_pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format( - label, label - ) - ) + # Override the default implementation just to change the default arguments + # (extra header row, skip first column). + def parse_af_csv(self, filename): + return super().parse_af_csv(filename, header_rows=1, pin_col=0, af_col=1) - def print(self): - # Print Pin Object declarations - for pin in self.cpu_pins: - pin.print() - - print("") - print("const machine_pin_obj_t* machine_pin_board_pins [] = {") - for pin in self.board_pins: - print(" &pin_{},".format(pin.pad)) - print("};") - print("const uint32_t num_board_pins = {:d};".format(len(self.board_pins))) - # Print Pin mapping dictionaries - self.print_named("cpu", self.cpu_pins) - self.print_named("board", self.board_pins) - print("") - - def print_header(self, hdr_filename): - with open(hdr_filename, "w") as hdr_file: - for pin in self.cpu_pins: - hdr_file.write("extern const machine_pin_obj_t pin_{};\n".format(pin.name)) - hdr_file.write("extern const machine_pin_obj_t* machine_pin_board_pins[];\n") - hdr_file.write("extern const uint32_t num_board_pins;\n") - hdr_file.write("extern const mp_obj_dict_t machine_pin_cpu_pins_locals_dict;\n") - hdr_file.write("extern const mp_obj_dict_t machine_pin_board_pins_locals_dict;\n") - - hdr_file.write("\n// Defines\n") - module_instance_factory(self.cpu_pins, hdr_file, "USDHC") - module_instance_factory(self.cpu_pins, hdr_file, "FLEXPWM") - module_instance_factory(self.cpu_pins, hdr_file, "TMR") - - -def module_instance_factory(pins, output_file, name): - module_pin = filter(lambda p: any([af for af in p.alt_fn if name in af.af_str]), pins) - - module_instances = dict() - for pin in module_pin: - for idx, alt_fn in enumerate(pin.alt_fn): - if name in alt_fn.instance: - format_string = "#define {0}_{1} &pin_{0}, {2}" - if alt_fn.instance not in module_instances: - module_instances[alt_fn.instance] = [ - format_string.format(pin.name, alt_fn.af_str, idx) - ] - else: - module_instances[alt_fn.instance].append( - format_string.format(pin.name, alt_fn.af_str, idx) - ) - - for k, v in module_instances.items(): - output_file.write(f"// {k}\n") - output_file.write(f"#define {k}_AVAIL (1)\n") - if name == "FLEXPWM": - output_file.write(f"#define {k} {k[-4:]}\n") - for i in v: - output_file.write(i + "\n") - - -def main(): - parser = argparse.ArgumentParser( - prog="make-pins.py", - usage="%(prog)s [options] [command]", - description="Generate board specific pin file", - ) - parser.add_argument( - "-a", - "--af", - dest="af_filename", - help="Specifies the alternate function file for the chip", - default="mimxrt1021_af.csv", - ) - parser.add_argument( - "-i", - "--iomux", - dest="iomux_filename", - help="Specifies the fsl_iomuxc.h file for the chip", - default="fsl_iomuxc.h", - ) - parser.add_argument( - "-b", - "--board", - dest="board_filename", - help="Specifies the board file", - default="MIMXRT1020_EVK/pins.csv", - ) - parser.add_argument( - "-p", - "--prefix", - dest="prefix_filename", - help="Specifies beginning portion of generated pins file", - default="mimxrt_prefix.c", - ) - parser.add_argument( - "-r", - "--hdr", - dest="hdr_filename", - help="Specifies name of generated pin header file", - default="build/pins.h", - ) - - pins = Pins() - - # test code - args = parser.parse_args() - # - - if args.af_filename: - print("// --af {:s}".format(args.af_filename)) - pins.parse_af_file(args.af_filename, args.iomux_filename) - - if args.board_filename: - print("// --board {:s}".format(args.board_filename)) - pins.parse_board_file(args.board_filename) - - if args.hdr_filename: - print("// --hdr {:s}".format(args.hdr_filename)) - - if args.prefix_filename: - print("// --prefix {:s}".format(args.prefix_filename)) - with open(args.prefix_filename, "r") as prefix_file: - print(prefix_file.read()) - - pins.print() - pins.print_header(args.hdr_filename) + # We need to know the mcu to emit the correct AF list. + def extra_args(self, parser): + parser.add_argument("--iomux-header") if __name__ == "__main__": - main() + MimxrtPinGenerator().main() diff --git a/ports/mimxrt/boards/mimxrt_prefix.c b/ports/mimxrt/boards/mimxrt_prefix.c index 3097535c524b2..49d6e67dc4083 100644 --- a/ports/mimxrt/boards/mimxrt_prefix.c +++ b/ports/mimxrt/boards/mimxrt_prefix.c @@ -30,7 +30,7 @@ .pin = (uint32_t)(_pin), \ .muxRegister = (uint32_t)&(IOMUXC->SW_MUX_CTL_PAD[kIOMUXC_SW_MUX_CTL_PAD_##_name]), \ .configRegister = (uint32_t)&(IOMUXC->SW_PAD_CTL_PAD[kIOMUXC_SW_PAD_CTL_PAD_##_name]), \ - .af_list_len = (uint8_t)(sizeof((_af_list)) / sizeof(machine_pin_af_obj_t)), \ + .af_list_len = MP_ARRAY_SIZE(_af_list), \ .adc_list_len = (_adc_list_len), \ .af_list = (_af_list), \ .adc_list = (_adc_list), \ @@ -44,7 +44,7 @@ .pin = (uint32_t)(_pin), \ .muxRegister = (uint32_t)&(IOMUXC_LPSR->SW_MUX_CTL_PAD[kIOMUXC_LPSR_SW_MUX_CTL_PAD_##_name]), \ .configRegister = (uint32_t)&(IOMUXC_LPSR->SW_PAD_CTL_PAD[kIOMUXC_LPSR_SW_PAD_CTL_PAD_##_name]), \ - .af_list_len = (uint8_t)(sizeof((_af_list)) / sizeof(machine_pin_af_obj_t)), \ + .af_list_len = MP_ARRAY_SIZE(_af_list), \ .adc_list_len = (_adc_list_len), \ .af_list = (_af_list), \ .adc_list = (_adc_list), \ @@ -58,7 +58,7 @@ .pin = (uint32_t)(_pin), \ .muxRegister = (uint32_t)&(IOMUXC_SNVS->SW_MUX_CTL_PAD_##_name), \ .configRegister = (uint32_t)&(IOMUXC_SNVS->SW_PAD_CTL_PAD_##_name), \ - .af_list_len = (uint8_t)(sizeof((_af_list)) / sizeof(machine_pin_af_obj_t)), \ + .af_list_len = MP_ARRAY_SIZE(_af_list), \ .adc_list_len = (_adc_list_len), \ .af_list = (_af_list), \ .adc_list = (_adc_list), \ diff --git a/ports/mimxrt/eth.c b/ports/mimxrt/eth.c index befccca1cd660..ed9db81298094 100644 --- a/ports/mimxrt/eth.c +++ b/ports/mimxrt/eth.c @@ -365,7 +365,15 @@ void eth_init_0(eth_t *self, int eth_id, const phy_operations_t *phy_ops, int ph uint32_t source_clock = eth_clock_init(eth_id, phy_clock); - eth_gpio_init(iomux_table_enet, ARRAY_SIZE(iomux_table_enet), ENET_RESET_PIN, ENET_INT_PIN); + const machine_pin_obj_t *reset_pin = NULL; + #if defined(pin_ENET_RESET) + reset_pin = pin_ENET_RESET; + #endif + const machine_pin_obj_t *int_pin = NULL; + #if defined(pin_ENET_INT) + int_pin = pin_ENET_INT; + #endif + eth_gpio_init(iomux_table_enet, ARRAY_SIZE(iomux_table_enet), reset_pin, int_pin); mp_hal_get_mac(0, hw_addr); @@ -411,7 +419,15 @@ void eth_init_1(eth_t *self, int eth_id, const phy_operations_t *phy_ops, int ph uint32_t source_clock = eth_clock_init(eth_id, phy_clock); - eth_gpio_init(iomux_table_enet_1, ARRAY_SIZE(iomux_table_enet_1), ENET_1_RESET_PIN, ENET_1_INT_PIN); + const machine_pin_obj_t *reset_pin = NULL; + #if defined(pin_ENET_1_INT) + reset_pin = pin_ENET_1_RESET; + #endif + const machine_pin_obj_t *int_pin = NULL; + #if defined(pin_ENET_1_INT) + int_pin = pin_ENET_1_INT; + #endif + eth_gpio_init(iomux_table_enet_1, ARRAY_SIZE(iomux_table_enet_1), reset_pin, int_pin); #if defined MIMXRT117x_SERIES NVIC_SetPriority(ENET_1G_MAC0_Tx_Rx_1_IRQn, IRQ_PRI_PENDSV); diff --git a/ports/mimxrt/led.c b/ports/mimxrt/led.c index 99876a5d9005d..eb4d42cd9fdbe 100644 --- a/ports/mimxrt/led.c +++ b/ports/mimxrt/led.c @@ -34,13 +34,13 @@ #if defined(MICROPY_HW_LED1_PIN) const machine_led_obj_t machine_led_obj[] = { - { .base = {&machine_led_type}, .led_id = 1U, .led_pin = &MICROPY_HW_LED1_PIN, }, + { .base = {&machine_led_type}, .led_id = 1U, .led_pin = MICROPY_HW_LED1_PIN, }, #if defined(MICROPY_HW_LED2_PIN) - { .base = {&machine_led_type}, .led_id = 2U, .led_pin = &MICROPY_HW_LED2_PIN, }, + { .base = {&machine_led_type}, .led_id = 2U, .led_pin = MICROPY_HW_LED2_PIN, }, #if defined(MICROPY_HW_LED3_PIN) - { .base = {&machine_led_type}, .led_id = 3U, .led_pin = &MICROPY_HW_LED3_PIN, }, + { .base = {&machine_led_type}, .led_id = 3U, .led_pin = MICROPY_HW_LED3_PIN, }, #if defined(MICROPY_HW_LED4_PIN) - { .base = {&machine_led_type}, .led_id = 4U, .led_pin = &MICROPY_HW_LED4_PIN, }, + { .base = {&machine_led_type}, .led_id = 4U, .led_pin = MICROPY_HW_LED4_PIN, }, #endif #endif #endif diff --git a/ports/mimxrt/machine_pwm.c b/ports/mimxrt/machine_pwm.c index 7b95d78877cdf..98545eec95c51 100644 --- a/ports/mimxrt/machine_pwm.c +++ b/ports/mimxrt/machine_pwm.c @@ -191,8 +191,9 @@ STATIC const machine_pin_af_obj_t *af_name_decode_qtmr(const machine_pin_af_obj_ #endif STATIC bool is_board_pin(const machine_pin_obj_t *pin) { - for (int i = 0; i < num_board_pins; i++) { - if (pin == machine_pin_board_pins[i]) { + const mp_map_t *board_map = &machine_pin_board_pins_locals_dict.map; + for (uint i = 0; i < board_map->alloc; i++) { + if (pin == MP_OBJ_TO_PTR(board_map->table[i].value)) { return true; } } diff --git a/ports/mimxrt/pin.c b/ports/mimxrt/pin.c index 4403f6ac77f77..b7b33da5aeab5 100644 --- a/ports/mimxrt/pin.c +++ b/ports/mimxrt/pin.c @@ -152,14 +152,6 @@ const machine_pin_obj_t *pin_find(mp_obj_t user_obj) { return pin_obj; } - // If pin is SMALL_INT - if (mp_obj_is_small_int(user_obj)) { - uint8_t value = MP_OBJ_SMALL_INT_VALUE(user_obj); - if (value < num_board_pins) { - return machine_pin_board_pins[value]; - } - } - // See if the pin name matches a board pin pin_obj = pin_find_named_pin(&machine_pin_board_pins_locals_dict, user_obj); if (pin_obj) { diff --git a/ports/mimxrt/pin.h b/ports/mimxrt/pin.h index bf611aa9893a6..13b313c41f409 100644 --- a/ports/mimxrt/pin.h +++ b/ports/mimxrt/pin.h @@ -147,9 +147,6 @@ extern const mp_obj_type_t machine_pin_af_type; // Include board specific pins #include "genhdr/pins.h" // pins.h must included at this location -extern const machine_pin_obj_t *machine_pin_board_pins[]; -extern const uint32_t num_board_pins; - extern const mp_obj_type_t machine_pin_board_pins_obj_type; extern const mp_obj_type_t machine_pin_cpu_pins_obj_type; diff --git a/ports/nrf/Makefile b/ports/nrf/Makefile index ac86ad2b155f0..d0ecddd6157a3 100644 --- a/ports/nrf/Makefile +++ b/ports/nrf/Makefile @@ -51,7 +51,7 @@ endif -include boards/$(BOARD)/modules/boardmodules.mk # qstr definitions (must come before including py.mk) -QSTR_DEFS = qstrdefsport.h $(GEN_PINS_QSTR) +QSTR_DEFS = qstrdefsport.h # MicroPython feature configurations ifeq ($(DEBUG), 0) @@ -118,9 +118,7 @@ AF_FILE = $(MCU_VARIANT)_af.csv PREFIX_FILE = boards/$(MCU_VARIANT)_prefix.c GEN_PINS_SRC = $(BUILD)/pins_gen.c GEN_PINS_HDR = $(HEADER_BUILD)/pins.h -GEN_PINS_QSTR = $(BUILD)/pins_qstr.h GEN_PINS_AF_CONST = $(HEADER_BUILD)/pins_af_const.h -GEN_PINS_AF_PY = $(BUILD)/pins_af.py CFLAGS_CORTEX_M = -mthumb -mabi=aapcs -fsingle-precision-constant -Wdouble-promotion @@ -528,11 +526,7 @@ $(BUILD)/$(OUTPUT_FILENAME).elf: $(OBJ) $(Q)$(SIZE) $@ # List of sources for qstr extraction -SRC_QSTR += $(SRC_C) $(SRC_SHARED_C) $(DRIVERS_SRC_C) $(SRC_BOARD_MODULES) - -# Append any auto-generated sources that are needed by sources listed in -# SRC_QSTR -SRC_QSTR_AUTO_DEPS += +SRC_QSTR += $(SRC_C) $(SRC_SHARED_C) $(DRIVERS_SRC_C) $(SRC_BOARD_MODULES) $(GEN_PINS_SRC) # Making OBJ use an order-only dependency on the generated pins.h file # has the side effect of making the pins.h file before we actually compile @@ -543,12 +537,10 @@ $(OBJ): | $(HEADER_BUILD)/pins.h # Use a pattern rule here so that make will only call make-pins.py once to make # both pins_gen.c and pins.h -$(BUILD)/%_gen.c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h $(BUILD)/%_qstr.h: boards/$(BOARD)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) +$(BUILD)/%_gen.c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h: boards/$(BOARD)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) $(ECHO) "Create $@" - $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE) --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) --qstr $(GEN_PINS_QSTR) --af-const $(GEN_PINS_AF_CONST) --af-py $(GEN_PINS_AF_PY) > $(GEN_PINS_SRC) - -$(GEN_PINS_SRC:.c=.o): $(GEN_PINS_SRC) - $(call compile_c) + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv $(AF_FILE) --prefix $(PREFIX_FILE) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) --output-af-const $(GEN_PINS_AF_CONST) $(PY_BUILD)/nlr%.o: CFLAGS += -Os -fno-lto diff --git a/ports/nrf/boards/make-pins.py b/ports/nrf/boards/make-pins.py index 720df6e49ee86..57e815a43d949 100644 --- a/ports/nrf/boards/make-pins.py +++ b/ports/nrf/boards/make-pins.py @@ -1,6 +1,9 @@ #!/usr/bin/env python """Creates the pin file for the nRF5.""" +# Do not use this as a reference for new ports. See tools/boardgen.py and e.g. +# ports/stm32/boards/make-pins.py. + from __future__ import print_function import argparse @@ -67,24 +70,22 @@ def ptr(self): def mux_name(self): return "AF{:d}_{:s}".format(self.idx, self.ptr()) - def print(self): + def print(self, out_source): """Prints the C representation of this AF.""" if self.supported: - print(" AF", end="") + print(" AF", end="", file=out_source) else: - print(" //", end="") + print(" //", end="", file=out_source) fn_num = self.fn_num if fn_num is None: fn_num = 0 print( "({:2d}, {:8s}, {:2d}, {:10s}, {:8s}), // {:s}".format( self.idx, self.func, fn_num, self.pin_type, self.ptr(), self.af_str - ) + ), + file=out_source, ) - def qstr_list(self): - return [self.mux_name()] - class Pin(object): """Holds the information associated with a pin.""" @@ -147,23 +148,24 @@ def adc_num_str(self): str = "0" return str - def print_const_table_entry(self): + def print_const_table_entry(self, out_source): print( " PIN({:d}, {:s}, {:s}, {:d}),".format( self.pin, self.alt_fn_name(null_if_0=True), self.adc_num_str(), self.adc_channel - ) + ), + file=out_source, ) - def print(self): + def print(self, out_source): if self.alt_fn_count == 0: - print("// ", end="") - print("const pin_af_obj_t {:s}[] = {{".format(self.alt_fn_name())) + print("// ", end="", file=out_source) + print("const pin_af_obj_t {:s}[] = {{".format(self.alt_fn_name()), file=out_source) for alt_fn in self.alt_fn: - alt_fn.print() + alt_fn.print(out_source) if self.alt_fn_count == 0: - print("// ", end="") - print("};") - print("") + print("// ", end="", file=out_source) + print("};", file=out_source) + print("", file=out_source) print( "const pin_obj_t pin_{:s} = PIN({:d}, {:s}, {:s}, {:d});".format( self.cpu_pin_name(), @@ -171,24 +173,19 @@ def print(self): self.alt_fn_name(null_if_0=True), self.adc_num_str(), self.adc_channel, - ) + ), + file=out_source, ) - print("") + print("", file=out_source) - def print_header(self, hdr_file): - hdr_file.write("extern const pin_obj_t pin_{:s};\n".format(self.cpu_pin_name())) + def print_header(self, out_header): + print("extern const pin_obj_t pin_{:s};".format(self.cpu_pin_name()), file=out_header) if self.alt_fn_count > 0: - hdr_file.write( - "extern const pin_af_obj_t pin_{:s}_af[];\n".format(self.cpu_pin_name()) + print( + "extern const pin_af_obj_t pin_{:s}_af[];\n".format(self.cpu_pin_name()), + file=out_header, ) - def qstr_list(self): - result = [] - for alt_fn in self.alt_fn: - if alt_fn.is_supported(): - result += alt_fn.qstr_list() - return result - class NamedPin(object): def __init__(self, name, pin): @@ -242,9 +239,10 @@ def parse_board_file(self, filename): pin.set_is_board_pin() self.board_pins.append(NamedPin(row[0], pin)) - def print_named(self, label, named_pins): + def print_named(self, label, named_pins, out_source): print( - "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label) + "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label), + file=out_source, ) for named_pin in named_pins: pin = named_pin.pin() @@ -252,187 +250,109 @@ def print_named(self, label, named_pins): print( " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(&machine_board_pin_obj[{:d}]) }},".format( named_pin.name(), pin.board_index - ) + ), + file=out_source, ) - print("};") + print("};", file=out_source) print( "MP_DEFINE_CONST_DICT(pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format( label, label - ) + ), + file=out_source, ) - def print_const_table(self): + def print_const_table(self, out_source): num_board_pins = 0 for named_pin in self.cpu_pins: pin = named_pin.pin() if pin.is_board_pin(): pin.set_board_index(num_board_pins) num_board_pins += 1 - print("") - print("const uint8_t machine_pin_num_of_board_pins = {:d};".format(num_board_pins)) - print("") - print("const pin_obj_t machine_board_pin_obj[{:d}] = {{".format(num_board_pins)) + print("", file=out_source) + print( + "const uint8_t machine_pin_num_of_board_pins = {:d};".format(num_board_pins), + file=out_source, + ) + print("", file=out_source) + print( + "const pin_obj_t machine_board_pin_obj[{:d}] = {{".format(num_board_pins), + file=out_source, + ) for named_pin in self.cpu_pins: pin = named_pin.pin() if pin.is_board_pin(): - pin.print_const_table_entry() - print("};") - - def print(self): - self.print_named("cpu", self.cpu_pins) - print("") - self.print_named("board", self.board_pins) - - def print_adc(self, adc_num): - print("") - print("const pin_obj_t * const pin_adc{:d}[] = {{".format(adc_num)) - for channel in range(16): - adc_found = False - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if ( - pin.is_board_pin() - and (pin.adc_num & (1 << (adc_num - 1))) - and (pin.adc_channel == channel) - ): - print(" &pin_{:s}, // {:d}".format(pin.cpu_pin_name(), channel)) - adc_found = True - break - if not adc_found: - print(" NULL, // {:d}".format(channel)) - print("};") - - def print_header(self, hdr_filename): - with open(hdr_filename, "wt") as hdr_file: - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - pin.print_header(hdr_file) - hdr_file.write("extern const pin_obj_t * const pin_adc1[];\n") - hdr_file.write("extern const pin_obj_t * const pin_adc2[];\n") - hdr_file.write("extern const pin_obj_t * const pin_adc3[];\n") - - def print_qstr(self, qstr_filename): - with open(qstr_filename, "wt") as qstr_file: - qstr_set = set([]) - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - qstr_set |= set(pin.qstr_list()) - qstr_set |= set([named_pin.name()]) - for named_pin in self.board_pins: - qstr_set |= set([named_pin.name()]) - for qstr in sorted(qstr_set): - print("Q({})".format(qstr), file=qstr_file) - - def print_af_hdr(self, af_const_filename): - with open(af_const_filename, "wt") as af_const_file: - af_hdr_set = set([]) - mux_name_width = 0 - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - for af in pin.alt_fn: - if af.is_supported(): - mux_name = af.mux_name() - af_hdr_set |= set([mux_name]) - if len(mux_name) > mux_name_width: - mux_name_width = len(mux_name) - for mux_name in sorted(af_hdr_set): - key = "MP_ROM_QSTR(MP_QSTR_{}),".format(mux_name) - val = "MP_ROM_INT(GPIO_{})".format(mux_name) - print(" { %-*s %s }," % (mux_name_width + 26, key, val), file=af_const_file) - - def print_af_py(self, af_py_filename): - with open(af_py_filename, "wt") as af_py_file: - print("PINS_AF = (", file=af_py_file) - for named_pin in self.board_pins: - print(" ('%s', " % named_pin.name(), end="", file=af_py_file) - for af in named_pin.pin().alt_fn: + pin.print_const_table_entry(out_source) + print("};", file=out_source) + + def print(self, out_source): + self.print_named("cpu", self.cpu_pins, out_source) + print("", file=out_source) + self.print_named("board", self.board_pins, out_source) + + def print_header(self, out_header): + for named_pin in self.cpu_pins: + pin = named_pin.pin() + if pin.is_board_pin(): + pin.print_header(out_header) + print("extern const pin_obj_t * const pin_adc1[];", file=out_header) + print("extern const pin_obj_t * const pin_adc2[];", file=out_header) + print("extern const pin_obj_t * const pin_adc3[];", file=out_header) + + def print_af_hdr(self, out_af_const): + af_hdr_set = set([]) + mux_name_width = 0 + for named_pin in self.cpu_pins: + pin = named_pin.pin() + if pin.is_board_pin(): + for af in pin.alt_fn: if af.is_supported(): - print("(%d, '%s'), " % (af.idx, af.af_str), end="", file=af_py_file) - print("),", file=af_py_file) - print(")", file=af_py_file) + mux_name = af.mux_name() + af_hdr_set |= set([mux_name]) + if len(mux_name) > mux_name_width: + mux_name_width = len(mux_name) + for mux_name in sorted(af_hdr_set): + key = "MP_ROM_QSTR(MP_QSTR_{}),".format(mux_name) + val = "MP_ROM_INT(GPIO_{})".format(mux_name) + print(" { %-*s %s }," % (mux_name_width + 26, key, val), file=out_af_const) def main(): - parser = argparse.ArgumentParser( - prog="make-pins.py", - usage="%(prog)s [options] [command]", - description="Generate board specific pin file", - ) - parser.add_argument( - "-a", - "--af", - dest="af_filename", - help="Specifies the alternate function file for the chip", - default="nrf.csv", - ) - parser.add_argument( - "--af-const", - dest="af_const_filename", - help="Specifies header file for alternate function constants.", - default="build/pins_af_const.h", - ) - parser.add_argument( - "--af-py", - dest="af_py_filename", - help="Specifies the filename for the python alternate function mappings.", - default="build/pins_af.py", - ) - parser.add_argument( - "-b", - "--board", - dest="board_filename", - help="Specifies the board file", - ) - parser.add_argument( - "-p", - "--prefix", - dest="prefix_filename", - help="Specifies beginning portion of generated pins file", - default="nrf52_prefix.c", - ) - parser.add_argument( - "-q", - "--qstr", - dest="qstr_filename", - help="Specifies name of generated qstr header file", - default="build/pins_qstr.h", - ) - parser.add_argument( - "-r", - "--hdr", - dest="hdr_filename", - help="Specifies name of generated pin header file", - default="build/pins.h", - ) - args = parser.parse_args(sys.argv[1:]) + parser = argparse.ArgumentParser(description="Generate board specific pin file") + parser.add_argument("--board-csv") + parser.add_argument("--af-csv") + parser.add_argument("--prefix") + parser.add_argument("--output-source") + parser.add_argument("--output-header") + parser.add_argument("--output-af-const") + args = parser.parse_args() pins = Pins() - print("// This file was automatically generated by make-pins.py") - print("//") - if args.af_filename: - print("// --af {:s}".format(args.af_filename)) - pins.parse_af_file(args.af_filename, 1, 2, 2) - - if args.board_filename: - print("// --board {:s}".format(args.board_filename)) - pins.parse_board_file(args.board_filename) - - if args.prefix_filename: - print("// --prefix {:s}".format(args.prefix_filename)) - print("") - with open(args.prefix_filename, "r") as prefix_file: - print(prefix_file.read()) - - pins.print_const_table() - pins.print() - pins.print_header(args.hdr_filename) - pins.print_qstr(args.qstr_filename) - pins.print_af_hdr(args.af_const_filename) - pins.print_af_py(args.af_py_filename) + with open(args.output_source, "w") as out_source: + print("// This file was automatically generated by make-pins.py", file=out_source) + print("//", file=out_source) + if args.af_csv: + print("// --af {:s}".format(args.af_csv), file=out_source) + pins.parse_af_file(args.af_csv, 1, 2, 2) + + if args.board_csv: + print("// --board {:s}".format(args.board_csv), file=out_source) + pins.parse_board_file(args.board_csv) + + if args.prefix: + print("// --prefix {:s}".format(args.prefix), file=out_source) + print("", file=out_source) + with open(args.prefix, "r") as prefix_file: + print(prefix_file.read(), file=out_source) + + pins.print_const_table(out_source) + pins.print(out_source) + + with open(args.output_header, "w") as out_header: + pins.print_header(out_header) + + with open(args.output_af_const, "w") as out_af_const: + pins.print_af_hdr(out_af_const) if __name__ == "__main__": diff --git a/ports/pic16bit/Makefile b/ports/pic16bit/Makefile index d2c8df4707e0d..6d061514f9583 100644 --- a/ports/pic16bit/Makefile +++ b/ports/pic16bit/Makefile @@ -51,9 +51,6 @@ OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o) $(SRC_S:.s=.o)) # List of sources for qstr extraction SRC_QSTR += $(SRC_C) -# Append any auto-generated sources that are needed by sources listed in -# SRC_QSTR -SRC_QSTR_AUTO_DEPS += all: $(BUILD)/firmware.hex diff --git a/ports/renesas-ra/Makefile b/ports/renesas-ra/Makefile index fb7bb67e48ad3..6d6eeb7dbf8c5 100644 --- a/ports/renesas-ra/Makefile +++ b/ports/renesas-ra/Makefile @@ -27,12 +27,11 @@ USE_FSP_LPM ?= 1 USE_FSP_QSPI ?= 0 FSP_BOARD_NAME ?= $(shell echo $(BOARD) | tr '[:upper:]' '[:lower:]') -# Files that are generated and needed before the QSTR build. -#QSTR_GENERATED_HEADERS = $(BUILD)/pins_qstr.h $(BUILD)/modstm_qstr.h -QSTR_GENERATED_HEADERS = $(BUILD)/pins_qstr.h # qstr definitions (must come before including py.mk) -QSTR_DEFS += qstrdefsport.h $(QSTR_GENERATED_HEADERS) -QSTR_GLOBAL_DEPENDENCIES += mpconfigboard_common.h $(BOARD_DIR)/mpconfigboard.h $(QSTR_GENERATED_HEADERS) +QSTR_DEFS += qstrdefsport.h + +# Files that are generated and needed before the QSTR build. +QSTR_GLOBAL_DEPENDENCIES += mpconfigboard_common.h $(BOARD_DIR)/mpconfigboard.h # MicroPython feature configurations MICROPY_ROM_TEXT_COMPRESSION ?= 1 @@ -557,16 +556,11 @@ AF_FILE = boards/ra6m5_af.csv endif GEN_PINS_SRC = $(BUILD)/pins_$(BOARD).c GEN_PINS_HDR = $(HEADER_BUILD)/pins.h -GEN_PINS_QSTR = $(BUILD)/pins_qstr.h -GEN_PINS_AD_CONST = $(HEADER_BUILD)/pins_ad_const.h -GEN_PINS_AF_CONST = $(HEADER_BUILD)/pins_af_const.h -#GEN_PINS_AF_DEFS = $(HEADER_BUILD)/pins_af_defs.h -GEN_PINS_AF_PY = $(BUILD)/pins_af.py FILE2H = $(TOP)/tools/file2h.py # List of sources for qstr extraction -SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) +SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) $(GEN_PINS_SRC) # Making OBJ use an order-only depenedency on the generated pins.h file # has the side effect of making the pins.h file before we actually compile @@ -582,12 +576,10 @@ $(HEADER_BUILD)/qstrdefs.generated.h: $(BOARD_DIR)/mpconfigboard.h # Use a pattern rule here so that make will only call make-pins.py once to make # both pins_$(BOARD).c and pins.h .PRECIOUS: $(GEN_PINS_SRC) -$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h $(HEADER_BUILD)/%_af_defs.h $(BUILD)/%_qstr.h: $(BOARD_DIR)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) +$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h: $(BOARD_DIR)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) $(ECHO) "GEN $@" - $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE) --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) --qstr $(GEN_PINS_QSTR) --ad-const $(GEN_PINS_AD_CONST) --af-const $(GEN_PINS_AF_CONST) --af-py $(GEN_PINS_AF_PY) > $(GEN_PINS_SRC) - -#$(BUILD)/pins_$(BOARD).o: $(BUILD)/pins_$(BOARD).c -# $(call compile_c) + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv $(AF_FILE) --prefix $(PREFIX_FILE) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) CMSIS_MCU_HDR = $(CMSIS_DIR)/$(CMSIS_MCU_LOWER).h diff --git a/ports/renesas-ra/boards/make-pins.py b/ports/renesas-ra/boards/make-pins.py index 5147d27940bdb..edc4cf7209b79 100644 --- a/ports/renesas-ra/boards/make-pins.py +++ b/ports/renesas-ra/boards/make-pins.py @@ -1,327 +1,89 @@ #!/usr/bin/env python -"""Creates the pin file for the RAxxx.""" -from __future__ import print_function - -import argparse +import os +import re import sys -import csv - - -class PinAD(object): - def __init__(self, name, cpu_pin_name, pin_idx, bit, channel): - self._name = name - self._cpu_pin_name = cpu_pin_name - self._pin_idx = pin_idx - self._bit = bit - self._channel = channel - - def cpu_pin_name(self): - return self._cpu_pin_name - - def name(self): - return self._name - - def bit(self): - return self._bit - - def channel(self): - return self._channel - - def print(self): - print( - "const pin_ad_obj_t pin_{:s}_ad_obj = PIN_AD({:s}, {:d}, {:d}, {:d});".format( - self._cpu_pin_name, self._name, self._pin_idx, self._bit, self._channel - ) - ) - print("") - def print_header(self, hdr_file): - n = self.cpu_pin_name() - hdr_file.write("extern const pin_ad_obj_t pin_{:s}_ad_obj;\n".format(n)) - hdr_file.write("#define pin_{:s}_ad (&pin_{:s}_ad_obj)\n".format(n, n)) - - def qstr_list(self): - return [self._name] - - -class Pin(object): - def __init__(self, name, port, bit): - self._name = name - self._pin_idx = port * 16 + bit - self._pin_ad = [] - self._board_pin = False - # print('// pin_{:s}_obj = PIN({:s}, {:d});'.format(self.name, self.name, self.pin)) - - def cpu_pin_name(self): - return self._name - - def pin_ad(self): - return self._pin_ad - - def is_board_pin(self): - return self._board_pin - - def set_is_board_pin(self): - self._board_pin = True - - def parse_ad(self, ad_str): - ad_bit = 0 - ad_channel = 0 - if (len(ad_str) == 5) and (ad_str[:3] == "AN0"): - ad_bit = 12 - ad_channel = int(ad_str[2:]) - self._pin_ad.append(PinAD(ad_str, self._name, self._pin_idx, ad_bit, ad_channel)) - elif (len(ad_str) == 5) and (ad_str[:3] == "AN1"): - ad_bit = 12 - ad_channel = int(ad_str[2:]) - self._pin_ad.append(PinAD(ad_str, self._name, self._pin_idx, ad_bit, ad_channel)) - elif ad_str[:2] == "AN": - ad_bit = 8 - ad_channel = int(ad_str[2:4]) - self._pin_ad.append(PinAD(ad_str, self._name, self._pin_idx, ad_bit, ad_channel)) - - def print(self): - pin_ad_name = "NULL" - for pin_ad in self._pin_ad: - pin_ad.print() - pin_ad_name = "pin_{:s}_ad".format(pin_ad.cpu_pin_name()) - print( - "const machine_pin_obj_t pin_{:s}_obj = PIN({:s}, {:d}, {:s});".format( - self._name, self._name, self._pin_idx, pin_ad_name +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools")) +import boardgen + + +class RenesasRaPin(boardgen.Pin): + def __init__(self, cpu_pin_name): + super().__init__(cpu_pin_name) + + self._port = int(cpu_pin_name[1], 16) + self._bit = int(cpu_pin_name[2:]) + + self._adc_name = None + self._adc_bits = 0 + self._adc_channel = 0 + + def add_adc(self, adc): + # The previous version of make-pins.py handled len==4 to mean + # adc_bits=8, but this is not used in any of the current af.csv files, + # so this needs to be validated. + assert len(adc) == 5 and (adc.startswith("AN0") or adc.startswith("AN1")) + self._adc_name = adc + self._adc_bit = 12 + self._adc_channel = int(adc[2:]) + + # Called for each AF defined in the csv file for this pin. + def add_af(self, af_idx, af_name, af): + if af_idx == 0 and af: + assert af_name == "Analog" + self.add_adc(af) + + # Use the PIN() macro defined in ra_pin_prefix.c for defining the pin + # objects. + def definition(self): + # PIN(p_name, p_pin, p_adc) + adc = "&pin_{}_adc_obj".format(self.name()) if self._adc_name else "NULL" + return "PIN({:s}, {:d}, {:s})".format(self.name(), self._port * 16 + self._bit, adc) + + # This will be called at the start of the output (after the prefix). Use + # it to emit the ADC objects (via the PIN_ADC() macro). + def print_source(self, out_source): + # PIN_ADC(p_name, p_pin, adc_bit, adc_channel) + if self._adc_name: + print( + "const machine_pin_adc_obj_t pin_{}_adc_obj = PIN_ADC({:s}, {:d}, {:d}, {:d});".format( + self.name(), + self._adc_name, + self._port * 16 + self._bit, + self._adc_bits, + self._adc_channel, + ), + file=out_source, ) - ) - print("") - def print_header(self, hdr_file): - n = self.cpu_pin_name() - hdr_file.write("extern const machine_pin_obj_t pin_{:s}_obj;\n".format(n)) - hdr_file.write("#define pin_{:s} (&pin_{:s}_obj)\n".format(n, n)) + # RA cpu names must be "PXNN", where X is hexadecimal port, NN is decimal bit offset. + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + boardgen.Pin.validate_cpu_pin_name(cpu_pin_name) - def qstr_list(self): - result = [] - for pin_ad in self._pin_ad: - result += pin_ad.qstr_list() - # for alt_fn in self.alt_fn: - # if alt_fn.is_supported(): - # result += alt_fn.qstr_list() - return result + if not re.match("^P[0-9A-F][0-9][0-9]$", cpu_pin_name): + raise boardgen.PinGeneratorError("Invalid cpu pin name '{}'".format(cpu_pin_name)) -class NamedPin(object): - def __init__(self, name, pin): - self._name = name - self._pin = pin - # print('// NamedPin {:s}'.format(self._name)) - - def pin(self): - return self._pin - - def name(self): - return self._name - - -class Pins(object): +class RenesasRaPinGenerator(boardgen.PinGenerator): def __init__(self): - self.cpu_pins = [] # list of NamedPin objects - self.board_pins = [] # list of NamedPin objects - - def find_pin(self, cpu_pin_name): - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.cpu_pin_name() == cpu_pin_name: - return pin - - # rx63n_al.csv - # cpu_pin_name, cpu_pin_port, cpu_pin_bit - def parse_af_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - try: - cpu_pin_name = row[0] - cpu_pin_port = int(row[1], 16) - cpu_pin_bit = int(row[2]) - except: - continue - pin = Pin(cpu_pin_name, cpu_pin_port, cpu_pin_bit) - self.cpu_pins.append(NamedPin(cpu_pin_name, pin)) - pin.parse_ad(row[3]) - - # pins.csv - # named_pin, cpu_pin_name - def parse_board_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - try: - board_pin_name = row[0] - cpu_pin_name = row[1] - except: - continue - pin = self.find_pin(cpu_pin_name) - if pin: - pin.set_is_board_pin() - self.board_pins.append(NamedPin(board_pin_name, pin)) - - def print_named(self, label, named_pins): - print( - "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label) - ) - for named_pin in named_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - print( - " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(&pin_{:s}_obj) }},".format( - named_pin.name(), pin.cpu_pin_name() - ) - ) - print("};") - print( - "MP_DEFINE_CONST_DICT(pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format( - label, label - ) + # Use custom pin type above, and also enable the --af-csv argument so + # that add_af gets called on each pin. + super().__init__( + pin_type=RenesasRaPin, + enable_af=True, ) - def print(self): - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - pin.print() - self.print_named("cpu", self.cpu_pins) - print("") - self.print_named("board", self.board_pins) - - def print_header(self, hdr_filename): - with open(hdr_filename, "wt") as hdr_file: - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - pin.print_header(hdr_file) - pin_ads = pin.pin_ad() - for pin_ad in pin_ads: - pin_ad.print_header(hdr_file) - # provide #define's mapping board to cpu name - for named_pin in self.board_pins: - hdr_file.write( - "#define pyb_pin_{:s} pin_{:s}\n".format( - named_pin.name(), named_pin.pin().cpu_pin_name() - ) - ) - - def print_qstr(self, qstr_filename): - with open(qstr_filename, "wt") as qstr_file: - qstr_set = set([]) - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - qstr_set |= set(pin.qstr_list()) - qstr_set |= set([named_pin.name()]) - for named_pin in self.board_pins: - qstr_set |= set([named_pin.name()]) - for qstr in sorted(qstr_set): - print("Q({})".format(qstr), file=qstr_file) - - def print_ad_hdr(self, ad_const_filename): - with open(ad_const_filename, "wt") as ad_const_file: - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - pin_ads = pin.pin_ad() - for pin_ad in pin_ads: - ad_const_file.write( - " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_INT(GPIO_{:s}) }}, \n".format( - pin_ad.name(), pin_ad.name() - ) - ) - - -def main(): - parser = argparse.ArgumentParser( - prog="make-pins.py", - usage="%(prog)s [options] [command]", - description="Generate board specific pin file", - ) - parser.add_argument( - "-a", - "--af", - dest="af_filename", - help="Specifies the alternate function file for the chip", - default="ra4m1_af.csv", - ) - parser.add_argument( - "-b", "--board", dest="board_filename", help="Specifies the board file", default="pins.csv" - ) - parser.add_argument( - "-p", - "--prefix", - dest="prefix_filename", - help="Specifies beginning portion of generated pins file", - default="ra4m1_prefix.c", - ) - parser.add_argument( - "--ad-const", - dest="ad_const_filename", - help="Specifies header file for AD function constants.", - default="build/pins_ad_const.h", - ) - parser.add_argument( - "--af-const", - dest="af_const_filename", - help="Specifies header file for alternate function constants.", - default="build/pins_af_const.h", - ) - parser.add_argument( - "--af-py", - dest="af_py_filename", - help="Specifies the filename for the python alternate function mappings.", - default="build/pins_af.py", - ) - parser.add_argument( - "--af-defs", - dest="af_defs_filename", - help="Specifies the filename for the alternate function defines.", - default="build/pins_af_defs.h", - ) - parser.add_argument( - "-q", - "--qstr", - dest="qstr_filename", - help="Specifies name of generated qstr header file", - default="build/pins_qstr.h", - ) - parser.add_argument( - "-r", - "--hdr", - dest="hdr_filename", - help="Specifies name of generated pin header file", - default="build/pins.h", - ) - args = parser.parse_args(sys.argv[1:]) - - pins = Pins() - - print("// This file was automatically generated by make-pins.py") - print("//") - if args.af_filename: - print("// --af {:s}".format(args.af_filename)) - pins.parse_af_file(args.af_filename) - - if args.board_filename: - print("// --board {:s}".format(args.board_filename)) - pins.parse_board_file(args.board_filename) - - if args.prefix_filename: - print("// --prefix {:s}".format(args.prefix_filename)) - print("") - with open(args.prefix_filename, "r") as prefix_file: - print(prefix_file.read()) + # Override the default implementation just to change the default arguments. + def parse_af_csv(self, filename): + return super().parse_af_csv(filename, header_rows=1, pin_col=0, af_col=3) - pins.print() - pins.print_header(args.hdr_filename) - pins.print_qstr(args.qstr_filename) - pins.print_ad_hdr(args.ad_const_filename) + # Renesas-specific behavior, we use pin_PNNN for the cpu names, but + # pyb_pin_FOO for the board names. + def board_name_define_prefix(self): + return "pyb_" if __name__ == "__main__": - main() + RenesasRaPinGenerator().main() diff --git a/ports/renesas-ra/boards/ra_pin_prefix.c b/ports/renesas-ra/boards/ra_pin_prefix.c index 918c84e632413..c52e9738661be 100644 --- a/ports/renesas-ra/boards/ra_pin_prefix.c +++ b/ports/renesas-ra/boards/ra_pin_prefix.c @@ -7,19 +7,19 @@ #include "extmod/modmachine.h" #include "pin.h" -#define PIN_AD(p_name, p_pin, ad_bit, ad_channel) \ +#define PIN_ADC(p_name, p_pin, adc_bits, adc_channel) \ { \ { &machine_pin_type }, \ .name = MP_QSTR_##p_name, \ .pin = p_pin, \ - .bit = ad_bit, \ - .channel = ad_channel \ + .bit = adc_bits, \ + .channel = adc_channel \ } -#define PIN(p_name, p_pin, p_ad) \ +#define PIN(p_name, p_pin, p_adc) \ { \ { &machine_pin_type }, \ .name = MP_QSTR_##p_name, \ .pin = p_pin, \ - .ad = p_ad, \ + .ad = p_adc, \ } diff --git a/ports/renesas-ra/machine_pin.c b/ports/renesas-ra/machine_pin.c index 70f98cd03a1ae..e11188118c4bd 100644 --- a/ports/renesas-ra/machine_pin.c +++ b/ports/renesas-ra/machine_pin.c @@ -56,13 +56,13 @@ const machine_pin_obj_t *machine_pin_find(mp_obj_t user_obj) { } // See if the pin name matches a board pin - pin_obj = pin_find_named_pin(&pin_board_pins_locals_dict, user_obj); + pin_obj = pin_find_named_pin(&machine_pin_board_pins_locals_dict, user_obj); if (pin_obj) { return pin_obj; } // See if the pin name matches a cpu pin - pin_obj = pin_find_named_pin(&pin_cpu_pins_locals_dict, user_obj); + pin_obj = pin_find_named_pin(&machine_pin_cpu_pins_locals_dict, user_obj); if (pin_obj) { return pin_obj; } @@ -134,12 +134,7 @@ STATIC void machine_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_prin // AF mode if (af) { mp_uint_t af_idx = pin_get_af(self); - const pin_af_obj_t *af_obj = pin_find_af_by_index(self, af_idx); - if (af_obj == NULL) { - mp_printf(print, ", alt=%d)", af_idx); - } else { - mp_printf(print, ", alt=Pin.%q)", af_obj->name); - } + mp_printf(print, ", alt=%d)", af_idx); } else { mp_print_str(print, ")"); } @@ -306,8 +301,8 @@ STATIC const mp_rom_map_elem_t machine_pin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_high), MP_ROM_PTR(&machine_pin_high_obj) }, // class attributes - { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&pin_board_pins_obj_type) }, - { MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&pin_cpu_pins_obj_type) }, + { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&machine_pin_board_pins_obj_type) }, + { MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&machine_pin_cpu_pins_obj_type) }, // class constants { MP_ROM_QSTR(MP_QSTR_IN), MP_ROM_INT(MP_HAL_PIN_MODE_INPUT) }, @@ -391,17 +386,17 @@ uint32_t pin_get_af(const machine_pin_obj_t *pin) { } MP_DEFINE_CONST_OBJ_TYPE( - pin_cpu_pins_obj_type, + machine_pin_cpu_pins_obj_type, MP_QSTR_cpu, MP_TYPE_FLAG_NONE, - locals_dict, &pin_cpu_pins_locals_dict + locals_dict, &machine_pin_cpu_pins_locals_dict ); MP_DEFINE_CONST_OBJ_TYPE( - pin_board_pins_obj_type, + machine_pin_board_pins_obj_type, MP_QSTR_board, MP_TYPE_FLAG_NONE, - locals_dict, &pin_board_pins_locals_dict + locals_dict, &machine_pin_board_pins_locals_dict ); const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name) { @@ -412,13 +407,3 @@ const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_ } return NULL; } - -const pin_af_obj_t *pin_find_af_by_index(const machine_pin_obj_t *pin, mp_uint_t af_idx) { - const pin_af_obj_t *af = pin->af; - for (mp_uint_t i = 0; i < pin->num_af; i++, af++) { - if (af->idx == af_idx) { - return af; - } - } - return NULL; -} diff --git a/ports/renesas-ra/pin.h b/ports/renesas-ra/pin.h index ac84b7f66b9e0..76d6c0b1e430d 100644 --- a/ports/renesas-ra/pin.h +++ b/ports/renesas-ra/pin.h @@ -31,57 +31,29 @@ #include "shared/runtime/mpirq.h" #include "py/obj.h" -typedef struct { - mp_obj_base_t base; - qstr name; - uint8_t idx; - uint8_t fn; - uint8_t unit; - uint8_t type; - void *reg; // The peripheral associated with this AF -} pin_af_obj_t; - typedef struct { mp_obj_base_t base; qstr name; uint8_t pin; uint8_t bit; uint8_t channel; -} pin_ad_obj_t; +} machine_pin_adc_obj_t; typedef struct { mp_obj_base_t base; qstr name; uint8_t pin; - uint8_t num_af; - const pin_af_obj_t *af; - const pin_ad_obj_t *ad; + const machine_pin_adc_obj_t *ad; } machine_pin_obj_t; -extern const mp_obj_type_t pin_af_type; - // Include all of the individual pin objects #include "genhdr/pins.h" -typedef struct { - const char *name; - const machine_pin_obj_t *pin; -} pin_named_pin_t; - -extern const pin_named_pin_t pin_board_pins[]; -extern const pin_named_pin_t pin_cpu_pins[]; - -typedef struct { - mp_obj_base_t base; - qstr name; - const pin_named_pin_t *named_pins; -} pin_named_pins_obj_t; - -extern const mp_obj_type_t pin_board_pins_obj_type; -extern const mp_obj_type_t pin_cpu_pins_obj_type; +extern const mp_obj_type_t machine_pin_board_pins_obj_type; +extern const mp_obj_type_t machine_pin_cpu_pins_obj_type; -extern const mp_obj_dict_t pin_cpu_pins_locals_dict; -extern const mp_obj_dict_t pin_board_pins_locals_dict; +extern const mp_obj_dict_t machine_pin_cpu_pins_locals_dict; +extern const mp_obj_dict_t machine_pin_board_pins_locals_dict; void machine_pin_init(void); uint32_t pin_get_mode(const machine_pin_obj_t *pin); @@ -90,8 +62,5 @@ uint32_t pin_get_drive(const machine_pin_obj_t *pin); uint32_t pin_get_af(const machine_pin_obj_t *pin); const machine_pin_obj_t *machine_pin_find(mp_obj_t user_obj); const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name); -const pin_af_obj_t *pin_find_af(const machine_pin_obj_t *pin, uint8_t fn, uint8_t unit); -const pin_af_obj_t *pin_find_af_by_index(const machine_pin_obj_t *pin, mp_uint_t af_idx); -const pin_af_obj_t *pin_find_af_by_name(const machine_pin_obj_t *pin, const char *name); #endif // MICROPY_INCLUDED_RA_PIN_H diff --git a/ports/rp2/CMakeLists.txt b/ports/rp2/CMakeLists.txt index 16f2d8a247752..4f76c5864fc2a 100644 --- a/ports/rp2/CMakeLists.txt +++ b/ports/rp2/CMakeLists.txt @@ -479,13 +479,10 @@ set(GEN_PINS_PREFIX "${MICROPY_BOARDS_DIR}/rp2_prefix.c") set(GEN_PINS_MKPINS "${MICROPY_BOARDS_DIR}/make-pins.py") set(GEN_PINS_SRC "${CMAKE_BINARY_DIR}/pins_${MICROPY_BOARD}.c") set(GEN_PINS_HDR "${MICROPY_GENHDR_DIR}/pins.h") -set(GEN_PINS_QSTR "${CMAKE_BINARY_DIR}/pins_qstr.h") -set(GEN_PINS_AF_CONST "${MICROPY_GENHDR_DIR}/pins_af_const.h") -set(GEN_PINS_AF_PY "${CMAKE_BINARY_DIR}/pins_af.py") if(EXISTS "${MICROPY_BOARDS_DIR}/${MICROPY_BOARD}/pins.csv") set(GEN_PINS_BOARD_CSV "${MICROPY_BOARDS_DIR}/${MICROPY_BOARD}/pins.csv") - set(GEN_PINS_CSV_ARG --board "${GEN_PINS_BOARD_CSV}") + set(GEN_PINS_CSV_ARG --board-csv "${GEN_PINS_BOARD_CSV}") endif() target_sources(${MICROPY_TARGET} PRIVATE @@ -494,9 +491,8 @@ target_sources(${MICROPY_TARGET} PRIVATE # Generate pins add_custom_command( - OUTPUT ${GEN_PINS_HDR} ${GEN_PINS_SRC} ${GEN_PINS_QSTR} - COMMAND ${Python3_EXECUTABLE} ${GEN_PINS_MKPINS} ${GEN_PINS_CSV_ARG} --af ${GEN_PINS_AF_CSV} --prefix ${GEN_PINS_PREFIX} - --hdr ${GEN_PINS_HDR} --qstr ${GEN_PINS_QSTR} --af-const ${GEN_PINS_AF_CONST} --af-py ${GEN_PINS_AF_PY} > ${GEN_PINS_SRC} + OUTPUT ${GEN_PINS_HDR} ${GEN_PINS_SRC} + COMMAND ${Python3_EXECUTABLE} ${GEN_PINS_MKPINS} ${GEN_PINS_CSV_ARG} --af-csv ${GEN_PINS_AF_CSV} --prefix ${GEN_PINS_PREFIX} --output-source ${GEN_PINS_SRC} --output-header ${GEN_PINS_HDR} DEPENDS ${GEN_PINS_AF_CSV} ${GEN_PINS_BOARD_CSV} diff --git a/ports/rp2/boards/make-pins.py b/ports/rp2/boards/make-pins.py index 97c0ff6384bb3..cbc3424705def 100755 --- a/ports/rp2/boards/make-pins.py +++ b/ports/rp2/boards/make-pins.py @@ -1,428 +1,133 @@ #!/usr/bin/env python """Creates the pin file for the RP2.""" -from __future__ import print_function - -import argparse -import sys -import csv +import os import re +import sys -SUPPORTED_FN = { - "SPI": ["TX", "RX", "SCK", "CS"], - "UART": ["TX", "RX", "CTS", "RTS"], - "I2C": ["SCL", "SDA"], - "PWM": ["A", "B"], - "SIO": [""], - "PIO0": [""], - "PIO1": [""], - "GPCK": ["GPIN0", "GPOUT0", "GPIN1", "GPOUT1", "GPOUT2", "GPOUT3"], - "USB": ["OVCUR_DET", "VBUS_DET", "VBUS_EN"], -} - - -def parse_pin(name_str): - """Parses a string and returns a pin number.""" - if len(name_str) < 2: - raise ValueError("Expecting pin name to be at least 2 characters.") - if not name_str.startswith("GPIO") and not name_str.startswith("EXT_GPIO"): - raise ValueError("Expecting pin name to start with EXT_/GPIO") - return int(re.findall(r"\d+$", name_str)[0]) - - -def split_name_num(name_num): - num = None - for num_idx in range(len(name_num) - 1, -1, -1): - if not name_num[num_idx].isdigit(): - name = name_num[0 : num_idx + 1] - num_str = name_num[num_idx + 1 :] - if len(num_str) > 0: - num = int(num_str) - break - if name == "PIO": - name += str(num) - return name, num - - -class AlternateFunction(object): - """Holds the information associated with a pins alternate function.""" - - def __init__(self, idx, af_str): - self.idx = idx - self.af_str = af_str - - self.func = "" - self.fn_num = None - self.pin_type = "" - self.supported = False - - af_words = af_str.split("_", 1) - self.func, self.fn_num = split_name_num(af_words[0]) - if len(af_words) > 1: - self.pin_type = af_words[1] - if self.func in SUPPORTED_FN: - pin_types = SUPPORTED_FN[self.func] - if self.pin_type in pin_types: - self.supported = True +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools")) +import boardgen - def is_supported(self): - return self.supported +# This is NUM_BANK0_GPIOS. Pin indices are 0 to 29 (inclusive). +NUM_GPIOS = 30 +# Up to 10 additional extended pins (e.g. via the wifi chip). +NUM_EXT_GPIOS = 10 - def ptr(self): - """Returns the numbered function (i.e. USART6) for this AF.""" - if self.fn_num is None: - return self.func - return "{:s}{:d}".format(self.func, self.fn_num) - def mux_name(self): - return "AF{:d}_{:s}".format(self.idx, self.ptr()) +class Rp2Pin(boardgen.Pin): + def __init__(self, cpu_pin_name): + super().__init__(cpu_pin_name) + self._afs = [] - def print(self): - """Prints the C representation of this AF.""" - if self.supported: - print(" AF", end="") + if self.name().startswith("EXT_"): + self._index = None + self._ext_index = int(self.name()[8:]) # "EXT_GPIOn" else: - print(" //", end="") - fn_num = self.fn_num - if fn_num is None: - fn_num = 0 - print("({:d}, {:4s}, {:d}), // {:s}".format(self.idx, self.func, fn_num, self.af_str)) - - def qstr_list(self): - return [self.mux_name()] - - -class Pin(object): - """Holds the information associated with a pin.""" - - def __init__(self, pin, is_ext=False): - self.pin = pin - self.alt_fn = [] - self.alt_fn_count = 0 - self.is_board = False - self.is_ext = is_ext - - def cpu_pin_name(self): - return "{:s}GPIO{:d}".format("EXT_" if self.is_ext else "", self.pin) - - def is_board_pin(self): - return self.is_board - - def set_is_board_pin(self): - self.is_board = True - - def parse_af(self, af_idx, af_strs_in): - if len(af_strs_in) == 0: - return - # If there is a slash, then the slash separates 2 aliases for the - # same alternate function. - af_strs = af_strs_in.split("/") - for af_str in af_strs: - alt_fn = AlternateFunction(af_idx, af_str) - self.alt_fn.append(alt_fn) - if alt_fn.is_supported(): - self.alt_fn_count += 1 - - def alt_fn_name(self, null_if_0=False): - if null_if_0 and self.alt_fn_count == 0: - return "NULL" - return "pin_{:s}_af".format(self.cpu_pin_name()) - - def print(self): - if self.is_ext: - print("#if (MICROPY_HW_PIN_EXT_COUNT > {:d})".format(self.pin)) - - if self.alt_fn_count == 0: - print("// ", end="") - print("const machine_pin_af_obj_t {:s}[] = {{".format(self.alt_fn_name())) - for alt_fn in self.alt_fn: - alt_fn.print() - if self.alt_fn_count == 0: - print("// ", end="") - print("};") - print("") - print( - "{:s}machine_pin_obj_t pin_{:s} = PIN({:d}, {:s}, {:d}, {:d}, {:s});".format( - "" if self.is_ext else "const ", - self.cpu_pin_name(), - self.pin, - self.cpu_pin_name(), - self.is_ext, - self.alt_fn_count, - self.alt_fn_name(null_if_0=True), + self._index = int(self.name()[4:]) # "GPIOn" + self._ext_index = None + + # Required by NumericPinGenerator. + def index(self): + return self._index + + # Use the PIN() macro defined in rp2_prefix.c for defining the pin + # objects. + def definition(self): + if self._index is not None: + return "PIN({:d}, GPIO{:d}, 0, {:d}, pin_GPIO{:d}_af)".format( + self._index, self._index, len(self._afs), self.index() + ) + else: + return "PIN({:d}, EXT_GPIO{:d}, 1, 0, NULL)".format(self._ext_index, self._ext_index) + + # External pins need to be mutable (because they track the output state). + def is_const(self): + return self._index is not None + + # Add conditional macros only around the external pins based on how many + # are enabled. + def enable_macro(self): + if self._ext_index is not None: + return "(MICROPY_HW_PIN_EXT_COUNT > {:d})".format(self._ext_index) + + def add_af(self, af_idx, _af_name, af): + if self._index is None: + raise boardgen.PinGeneratorError( + "Cannot add AF for ext pin '{:s}'".format(self.name()) ) - ) - if self.is_ext: - print("#endif") - print("") - - def print_header(self, hdr_file): - n = self.cpu_pin_name() - hdr_file.write( - "extern{:s}machine_pin_obj_t pin_{:s};\n".format(" " if self.is_ext else " const ", n) - ) - if self.alt_fn_count > 0: - hdr_file.write("extern const machine_pin_af_obj_t pin_{:s}_af[];\n".format(n)) - - def qstr_list(self): - result = [] - for alt_fn in self.alt_fn: - if alt_fn.is_supported(): - result += alt_fn.qstr_list() - return result - - -class NamedPin(object): - def __init__(self, name, pin): - self._name = name - self._pin = pin - - def pin(self): - return self._pin - - def name(self): - return self._name - - -class Pins(object): - def __init__(self): - self.cpu_pins = [] # list of NamedPin objects - self.board_pins = [] # list of NamedPin objects - self.ext_pins = [] # list of NamedPin objects - for i in range(0, 10): - self.ext_pins.append(NamedPin("EXT_GPIO{:d}".format(i), Pin(i, True))) - - def find_pin(self, pin_name): - for pin in self.cpu_pins: - if pin.name() == pin_name: - return pin.pin() - - for pin in self.ext_pins: - if pin.name() == pin_name: - return pin.pin() - - def parse_af_file(self, filename, pinname_col, af_col): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - try: - pin_num = parse_pin(row[pinname_col]) - except Exception: - # import traceback; traceback.print_exc() - continue - pin = Pin(pin_num) - for af_idx in range(af_col, len(row)): - if af_idx >= af_col: - pin.parse_af(af_idx, row[af_idx]) - self.cpu_pins.append(NamedPin(pin.cpu_pin_name(), pin)) - - def parse_board_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - if len(row) == 0 or row[0].startswith("#"): - # Skip empty lines, and lines starting with "#" - continue - if len(row) != 2: - raise ValueError("Expecting two entries in a row") - - cpu_pin_name = row[1] - try: - parse_pin(cpu_pin_name) - except: - # import traceback; traceback.print_exc() - continue - pin = self.find_pin(cpu_pin_name) - if pin: - pin.set_is_board_pin() - if row[0]: # Only add board pins that have a name - self.board_pins.append(NamedPin(row[0], pin)) - - def print_table(self, label, named_pins): - print("") - print("const machine_pin_obj_t *machine_pin_{:s}_pins[] = {{".format(label)) - for pin in named_pins: - if not pin.pin().is_ext: - print(" &pin_{},".format(pin.name())) - print("};") - print("") - def print_named(self, label, named_pins): - print("") - print( - "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label) - ) - for named_pin in named_pins: - pin = named_pin.pin() - if pin.is_ext: - print(" #if (MICROPY_HW_PIN_EXT_COUNT > {:d})".format(pin.pin)) + # _ + m = re.match("([A-Z][A-Z0-9][A-Z]+)(([0-9]+)(_.*)?)?", af) + af_fn = m.group(1) + af_unit = int(m.group(3)) if m.group(3) is not None else 0 + if af_fn == "PIO": + # Pins can be either PIO unit (unlike, say, I2C where a + # pin can only be I2C0 _or_ I2C1, both sharing the same AF + # index), so each PIO unit has a distinct AF index. + af_fn = "{:s}{:d}".format(af_fn, af_unit) + self._afs.append((af_idx + 1, af_fn, af_unit, af)) + + # This will be called at the start of the output (after the prefix). Use + # it to emit the af objects (via the AF() macro in rp2_prefix.c). + def print_source(self, out_source): + if self._index is not None: print( - " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(&pin_{:s}) }},".format( - named_pin.name(), pin.cpu_pin_name() - ) + "const machine_pin_af_obj_t pin_GPIO{:d}_af[] = {{".format(self.index()), + file=out_source, ) - if pin.is_ext: - print(" #endif") - - print("};") - print( - "MP_DEFINE_CONST_DICT(pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format( - label, label + for af_idx, af_fn, af_unit, af in self._afs: + print( + " AF({:d}, {:4s}, {:d}), // {:s}".format(af_idx, af_fn, af_unit, af), + file=out_source, + ) + print("};", file=out_source) + print(file=out_source) + + # rp2 cpu names must be "GPIOn" or "EXT_GPIOn". + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + boardgen.Pin.validate_cpu_pin_name(cpu_pin_name) + + if cpu_pin_name.startswith("GPIO") and cpu_pin_name[4:].isnumeric(): + if not (0 <= int(cpu_pin_name[4:]) < NUM_GPIOS): + raise boardgen.PinGeneratorError("Unknown cpu pin '{}'".format(cpu_pin_name)) + elif cpu_pin_name.startswith("EXT_GPIO") and cpu_pin_name[8:].isnumeric(): + if not (0 <= int(cpu_pin_name[8:]) < NUM_EXT_GPIOS): + raise boardgen.PinGeneratorError("Unknown ext pin '{}'".format(cpu_pin_name)) + else: + raise boardgen.PinGeneratorError( + "Invalid cpu pin name '{}', must be 'GPIOn' or 'EXT_GPIOn'".format(cpu_pin_name) ) - ) - print("") - - def print(self): - for pin in self.cpu_pins: - pin.pin().print() - - for pin in self.ext_pins: - if pin.pin().is_ext: - pin.pin().print() - self.print_table("cpu", self.cpu_pins) - self.print_named("cpu", self.cpu_pins + self.ext_pins) - self.print_named("board", self.board_pins) - def print_header(self, hdr_filename, obj_decls): - with open(hdr_filename, "wt") as hdr_file: - if obj_decls: - for named_pin in self.cpu_pins: - pin = named_pin.pin() - pin.print_header(hdr_file) - for named_pin in self.board_pins: - pin = named_pin.pin() - if pin.is_ext: - pin.print_header(hdr_file) - # provide #define's mapping board to cpu name - for named_pin in self.board_pins: - if named_pin.pin().is_board_pin(): - hdr_file.write( - "#define pin_{:s} pin_{:s}\n".format( - named_pin.name(), named_pin.pin().cpu_pin_name() - ) - ) - - def print_qstr(self, qstr_filename): - with open(qstr_filename, "wt") as qstr_file: - qstr_set = set([]) - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - qstr_set |= set(pin.qstr_list()) - qstr_set |= set([named_pin.name()]) - for named_pin in self.board_pins: - qstr_set |= set([named_pin.name()]) - for qstr in sorted(qstr_set): - print("Q({})".format(qstr), file=qstr_file) - - def print_af_hdr(self, af_const_filename): - with open(af_const_filename, "wt") as af_const_file: - af_hdr_set = set([]) - mux_name_width = 0 - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - for af in pin.alt_fn: - if af.is_supported(): - mux_name = af.mux_name() - af_hdr_set |= set([mux_name]) - if len(mux_name) > mux_name_width: - mux_name_width = len(mux_name) - for mux_name in sorted(af_hdr_set): - key = "MP_OBJ_NEW_QSTR(MP_QSTR_{}),".format(mux_name) - val = "MP_OBJ_NEW_SMALL_INT(GPIO_{})".format(mux_name) - print(" { %-*s %s }," % (mux_name_width + 26, key, val), file=af_const_file) - - def print_af_py(self, af_py_filename): - with open(af_py_filename, "wt") as af_py_file: - print("PINS_AF = (", file=af_py_file) - for named_pin in self.board_pins: - print(" ('%s', " % named_pin.name(), end="", file=af_py_file) - for af in named_pin.pin().alt_fn: - if af.is_supported(): - print("(%d, '%s'), " % (af.idx, af.af_str), end="", file=af_py_file) - print("),", file=af_py_file) - print(")", file=af_py_file) - - -def main(): - parser = argparse.ArgumentParser( - prog="make-pins.py", - usage="%(prog)s [options] [command]", - description="Generate board specific pin file", - ) - parser.add_argument( - "-a", - "--af", - dest="af_filename", - help="Specifies the alternate function file for the chip", - default="rp2_af.csv", - ) - parser.add_argument( - "--af-const", - dest="af_const_filename", - help="Specifies header file for alternate function constants.", - default="build/pins_af_const.h", - ) - parser.add_argument( - "--af-py", - dest="af_py_filename", - help="Specifies the filename for the python alternate function mappings.", - default="build/pins_af.py", - ) - parser.add_argument( - "-b", - "--board", - dest="board_filename", - help="Specifies the board file", - ) - parser.add_argument( - "-p", - "--prefix", - dest="prefix_filename", - help="Specifies beginning portion of generated pins file", - default="rp2_prefix.c", - ) - parser.add_argument( - "-q", - "--qstr", - dest="qstr_filename", - help="Specifies name of generated qstr header file", - default="build/pins_qstr.h", - ) - parser.add_argument( - "-r", - "--hdr", - dest="hdr_filename", - help="Specifies name of generated pin header file", - default="build/pins.h", - ) - args = parser.parse_args(sys.argv[1:]) +class Rp2PinGenerator(boardgen.NumericPinGenerator): + def __init__(self): + # Use custom pin type above, and also enable the --af-csv argument. + super().__init__( + pin_type=Rp2Pin, + enable_af=True, + ) - pins = Pins() + # Pre-define the pins (i.e. don't require them to be listed in pins.csv). + for i in range(NUM_GPIOS): + self.add_cpu_pin("GPIO{}".format(i)) + for i in range(NUM_EXT_GPIOS): + self.add_cpu_pin("EXT_GPIO{}".format(i)) - print("// This file was automatically generated by make-pins.py") - print("//") - if args.af_filename: - print("// --af {:s}".format(args.af_filename)) - pins.parse_af_file(args.af_filename, 0, 1) + # Provided by pico-sdk. + def cpu_table_size(self): + return "NUM_BANK0_GPIOS" - if args.board_filename: - print("// --board {:s}".format(args.board_filename)) - pins.parse_board_file(args.board_filename) + # Only use pre-defined cpu pins (do not let board.csv create them). + def find_pin_by_cpu_pin_name(self, cpu_pin_name, create=True): + return super().find_pin_by_cpu_pin_name(cpu_pin_name, create=False) - if args.prefix_filename: - print("// --prefix {:s}".format(args.prefix_filename)) - print("") - with open(args.prefix_filename, "r") as prefix_file: - print(prefix_file.read()) - pins.print() - pins.print_header(args.hdr_filename, True) - pins.print_qstr(args.qstr_filename) - pins.print_af_hdr(args.af_const_filename) - pins.print_af_py(args.af_py_filename) + # NumericPinGenerator doesn't include the cpu dict by default (only the + # board dict), so add that to the output for rp2. + def print_source(self, out_source): + super().print_source(out_source) + self.print_cpu_locals_dict(out_source) if __name__ == "__main__": - main() + Rp2PinGenerator().main() diff --git a/ports/rp2/machine_pin.c b/ports/rp2/machine_pin.c index 77d9e13480007..b277a939e5abe 100644 --- a/ports/rp2/machine_pin.c +++ b/ports/rp2/machine_pin.c @@ -69,14 +69,14 @@ MP_DEFINE_CONST_OBJ_TYPE( pin_cpu_pins_obj_type, MP_QSTR_cpu, MP_TYPE_FLAG_NONE, - locals_dict, &pin_cpu_pins_locals_dict + locals_dict, &machine_pin_cpu_pins_locals_dict ); MP_DEFINE_CONST_OBJ_TYPE( pin_board_pins_obj_type, MP_QSTR_board, MP_TYPE_FLAG_NONE, - locals_dict, &pin_board_pins_locals_dict + locals_dict, &machine_pin_board_pins_locals_dict ); typedef struct _machine_pin_irq_obj_t { @@ -86,7 +86,7 @@ typedef struct _machine_pin_irq_obj_t { } machine_pin_irq_obj_t; STATIC const mp_irq_methods_t machine_pin_irq_methods; -extern const machine_pin_obj_t *machine_pin_cpu_pins[NUM_BANK0_GPIOS]; +extern const machine_pin_obj_t machine_pin_obj_table[NUM_BANK0_GPIOS]; // Mask with "1" indicating that the corresponding pin is in simulated open-drain mode. uint32_t machine_pin_open_drain_mask; @@ -170,18 +170,18 @@ const machine_pin_af_obj_t *machine_pin_find_alt_by_index(const machine_pin_obj_ const machine_pin_obj_t *machine_pin_find(mp_obj_t pin) { // Is already a object of the proper type if (mp_obj_is_type(pin, &machine_pin_type)) { - return pin; + return MP_OBJ_TO_PTR(pin); } if (mp_obj_is_str(pin)) { const char *name = mp_obj_str_get_str(pin); // Try to find the pin in the board pins first. - const machine_pin_obj_t *self = machine_pin_find_named(&pin_board_pins_locals_dict, pin); + const machine_pin_obj_t *self = machine_pin_find_named(&machine_pin_board_pins_locals_dict, pin); if (self != NULL) { return self; } // If not found, try to find the pin in the cpu pins which include // CPU and and externally controlled pins (if any). - self = machine_pin_find_named(&pin_cpu_pins_locals_dict, pin); + self = machine_pin_find_named(&machine_pin_cpu_pins_locals_dict, pin); if (self != NULL) { return self; } @@ -189,8 +189,8 @@ const machine_pin_obj_t *machine_pin_find(mp_obj_t pin) { } else if (mp_obj_is_int(pin)) { // get the wanted pin object int wanted_pin = mp_obj_get_int(pin); - if (0 <= wanted_pin && wanted_pin < MP_ARRAY_SIZE(machine_pin_cpu_pins)) { - return machine_pin_cpu_pins[wanted_pin]; + if (0 <= wanted_pin && wanted_pin < MP_ARRAY_SIZE(machine_pin_obj_table)) { + return &machine_pin_obj_table[wanted_pin]; } } mp_raise_ValueError("invalid pin"); @@ -432,7 +432,7 @@ STATIC machine_pin_irq_obj_t *machine_pin_get_irq(mp_hal_pin_obj_t pin) { irq = m_new_obj(machine_pin_irq_obj_t); irq->base.base.type = &mp_irq_type; irq->base.methods = (mp_irq_methods_t *)&machine_pin_irq_methods; - irq->base.parent = MP_OBJ_FROM_PTR(machine_pin_cpu_pins[pin]); + irq->base.parent = MP_OBJ_FROM_PTR(&machine_pin_obj_table[pin]); irq->base.handler = mp_const_none; irq->base.ishard = false; MP_STATE_PORT(machine_pin_irq_obj[pin]) = irq; diff --git a/ports/rp2/machine_pin.h b/ports/rp2/machine_pin.h index d2a39f8e377d9..b3349188e8ba1 100644 --- a/ports/rp2/machine_pin.h +++ b/ports/rp2/machine_pin.h @@ -65,10 +65,10 @@ extern const mp_obj_type_t machine_pin_af_type; #include "genhdr/pins.h" extern const mp_obj_type_t pin_cpu_pins_obj_type; -extern const mp_obj_dict_t pin_cpu_pins_locals_dict; +extern const mp_obj_dict_t machine_pin_cpu_pins_locals_dict; extern const mp_obj_type_t pin_board_pins_obj_type; -extern const mp_obj_dict_t pin_board_pins_locals_dict; +extern const mp_obj_dict_t machine_pin_board_pins_locals_dict; void machine_pin_ext_init(void); bool machine_pin_ext_is_adc_channel(const machine_pin_obj_t *self); diff --git a/ports/samd/Makefile b/ports/samd/Makefile index 7d27367b6b11a..291a894ab7b07 100644 --- a/ports/samd/Makefile +++ b/ports/samd/Makefile @@ -56,10 +56,12 @@ INC += -I$(TOP)/lib/asf4/$(MCU_SERIES_LOWER)/include INC += -I$(TOP)/lib/asf4/$(MCU_SERIES_LOWER)/include/pio INC += -I$(TOP)/lib/tinyusb/src -MAKE_PIN_AF = boards/make-pin-table.py -PIN_AF_TABLE_CSV = mcu/$(MCU_SERIES_LOWER)/pin-af-table.csv +MAKE_PINS = boards/make-pins.py BOARD_PINS = $(BOARD_DIR)/pins.csv -GEN_PIN_AF = pin_af_table.c +PREFIX_FILE = boards/pins_prefix.c +AF_FILE = mcu/$(MCU_SERIES_LOWER)/pin-af-table.csv +GEN_PINS_SRC = $(BUILD)/pins_$(BOARD).c +GEN_PINS_HDR = $(HEADER_BUILD)/pins.h CFLAGS += $(INC) -Wall -Werror -std=c99 -nostdlib -mthumb $(CFLAGS_MCU) -fsingle-precision-constant -Wdouble-promotion CFLAGS += -DMCU_$(MCU_SERIES) -D__$(CMSIS_MCU)__ @@ -179,7 +181,7 @@ DRIVERS_SRC_C += \ drivers/bus/softspi.c \ # List of sources for qstr extraction -SRC_QSTR += $(SRC_C) $(SHARED_SRC_C) $(SRC_CXX) +SRC_QSTR += $(SRC_C) $(SHARED_SRC_C) $(SRC_CXX) $(GEN_PINS_SRC) OBJ += $(PY_O) OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) @@ -190,6 +192,7 @@ OBJ += $(addprefix $(BUILD)/, $(ASF4_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(LIBM_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(TINYUSB_SRC_C:.c=.o)) +OBJ += $(GEN_PINS_SRC:.c=.o) all: $(BUILD)/firmware.uf2 @@ -203,10 +206,14 @@ $(BUILD)/firmware.bin: $(BUILD)/firmware.elf $(BUILD)/firmware.uf2: $(BUILD)/firmware.bin $(Q)$(PYTHON) $(UF2CONV) -b $(TEXT0) -c -o $@ $< -pin_af.c: $(BUILD)/$(GEN_PIN_AF) | $(HEADER_BUILD) +# pin_af.c: $(BUILD)/$(GEN_PIN_AF) | $(HEADER_BUILD) -$(BUILD)/$(GEN_PIN_AF): $(PIN_AF_TABLE_CSV) $(BOARD_PINS) | $(HEADER_BUILD) - $(ECHO) "Create $@" - $(Q)$(PYTHON) $(MAKE_PIN_AF) --csv $(PIN_AF_TABLE_CSV) --board $(BOARD_PINS) --table $(BUILD)/$(GEN_PIN_AF) --mcu $(MCU_SERIES) +# Use a pattern rule here so that make will only call make-pins.py once to make +# both pins_$(BOARD).c and pins.h +$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h: $(BOARD_DIR)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) + $(ECHO) "GEN $@" + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv $(AF_FILE) --prefix $(PREFIX_FILE) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) \ + --mcu $(MCU_SERIES) include $(TOP)/py/mkrules.mk diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv index 65362770624de..8993419a268c5 100644 --- a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv @@ -1,43 +1,38 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines starting with # are ignored +LED_TX,PA27 +LED_RX,PB03 -PIN_PA27,LED_TX -PIN_PB03,LED_RX +D0,PA11 +D1,PA10 +FLASH_MOSI,PA08 +FLASH_MISO,PA14 +FLASH_SCK,PA09 +D5,PA15 +D6,PA20 +D7,PA21 +D8,PA06 +D9,PA07 +D10,PA18 +D11,PA16 +D12,PA19 +D13,PA17 +A0,PA02 +A1,PB08 +A2,PB09 +A3,PA04 +A4,PA05 +A5,PB02 +TX,PB22 +RX,PB23 +SCL,PA23 +SDA,PA22 +MOSI,PB10 +MISO,PA12 +SCK,PB11 +NEOPIXEL,PA06 +FLASH_CS,PA13 -PIN_PA11,D0 -PIN_PA10,D1 -PIN_PA08,FLASH_MOSI -PIN_PA14,FLASH_MISO -PIN_PA09,FLASH_SCK -PIN_PA15,D5 -PIN_PA20,D6 -PIN_PA21,D7 -PIN_PA06,D8 -PIN_PA07,D9 -PIN_PA18,D10 -PIN_PA16,D11 -PIN_PA19,D12 -PIN_PA17,D13 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PB02,A5 -PIN_PB22,TX -PIN_PB23,RX -PIN_PA23,SCL -PIN_PA22,SDA -PIN_PB10,MOSI -PIN_PA12,MISO -PIN_PB11,SCK -PIN_PA06,NEOPIXEL -PIN_PA13,FLASH_CS +USB_DM,PA24 +USB_DP,PA25 -PIN_PA24,USB_DM -PIN_PA25,USB_DP - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv index df3373f246a84..ec7a8bc1638da 100644 --- a/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv @@ -1,44 +1,39 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +D0,PB17 +D1,PB16 +D4,PA14 +D5,PA16 +D6,PA18 +D8,PB03 +D9,PA19 +D10,PA20 +D11,PA21 +D12,PA22 +D13,PA23 +A0,PA02 +A1,PA05 +A2,PB08 +A3,PB09 +A4,PA04 +A5,PB06 +SCL,PA13 +SDA,PA12 +MOSI,PB23 +MISO,PB22 +SCK,PA17 +VDIV,PB01 +AREF,PA03 +NEOPIXEL,PB03 -PIN_PB17,D0 -PIN_PB16,D1 -PIN_PA14,D4 -PIN_PA16,D5 -PIN_PA18,D6 -PIN_PB03,D8 -PIN_PA19,D9 -PIN_PA20,D10 -PIN_PA21,D11 -PIN_PA22,D12 -PIN_PA23,D13 -PIN_PA02,A0 -PIN_PA05,A1 -PIN_PB08,A2 -PIN_PB09,A3 -PIN_PA04,A4 -PIN_PB06,A5 -PIN_PA13,SCL -PIN_PA12,SDA -PIN_PB23,MOSI -PIN_PB22,MISO -PIN_PA17,SCK -PIN_PB01,VDIV -PIN_PA03,AREF -PIN_PB03,NEOPIXEL +QSPI_CS,PB11 +QSPI_SCK,PB10 +QSPI_D0,PA08 +QSPI_D1,PA09 +QSPI_D2,PA10 +QSPI_D3,PA11 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +USB_DM,PA24 +USB_DP,PA25 +USB_SOF,PA23 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv index 04b1a717bd2cd..845cefb8a972b 100644 --- a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv @@ -1,40 +1,35 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +D0,PA11 +D1,PA10 +D2,PA14 +D3,PA09 +D4,PA08 +D5,PA15 +D7,PA21 +D9,PA07 +D10,PA18 +D11,PA16 +D12,PA19 +D13,PA17 +A0,PA02 +A1,PB08 +A2,PB09 +A3,PA04 +A4,PA05 +A5,PB02 +SDA,PA22 +SCL,PA23 +MOSI,PB10 +MISO,PA12 +SCK,PB11 +DOTSTAR_CLK,PA00 +DOTSTAR_DATA,PA01 +FLASH_MOSI,PB22 +FLASH_MISO,PB03 +FLASH_SCK,PB23 +FLASH_CS,PA27 -PIN_PA11,D0 -PIN_PA10,D1 -PIN_PA14,D2 -PIN_PA09,D3 -PIN_PA08,D4 -PIN_PA15,D5 -PIN_PA21,D7 -PIN_PA07,D9 -PIN_PA18,D10 -PIN_PA16,D11 -PIN_PA19,D12 -PIN_PA17,D13 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PB02,A5 -PIN_PA22,SDA -PIN_PA23,SCL -PIN_PB10,MOSI -PIN_PA12,MISO -PIN_PB11,SCK -PIN_PA00,DOTSTAR_CLK -PIN_PA01,DOTSTAR_DATA -PIN_PB22,FLASH_MOSI -PIN_PB03,FLASH_MISO -PIN_PB23,FLASH_SCK -PIN_PA27,FLASH_CS +USB_DM,PA24 +USB_DP,PA25 -PIN_PA24,USB_DM -PIN_PA25,USB_DP - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv index b63a1f4b13554..c82beccfa2be3 100644 --- a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv @@ -1,44 +1,39 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +D0,PA16 +D1,PA17 +D2,PA07 +D3,PB22 +D4,PA14 +D5,PA15 +D7,PA18 +D9,PA19 +D10,PA20 +D11,PA21 +D12,PA23 +D13,PA22 +A0,PA02 +A1,PA05 +A2,PB08 +A3,PB09 +A4,PA04 +A5,PA06 +SDA,PA12 +SCL,PA13 +MOSI,PA00 +MISO,PB23 +SCK,PA01 +DOTSTAR_CLK,PB02 +DOTSTAR_DATA,PB03 -PIN_PA16,D0 -PIN_PA17,D1 -PIN_PA07,D2 -PIN_PB22,D3 -PIN_PA14,D4 -PIN_PA15,D5 -PIN_PA18,D7 -PIN_PA19,D9 -PIN_PA20,D10 -PIN_PA21,D11 -PIN_PA23,D12 -PIN_PA22,D13 -PIN_PA02,A0 -PIN_PA05,A1 -PIN_PB08,A2 -PIN_PB09,A3 -PIN_PA04,A4 -PIN_PA06,A5 -PIN_PA12,SDA -PIN_PA13,SCL -PIN_PA00,MOSI -PIN_PB23,MISO -PIN_PA01,SCK -PIN_PB02,DOTSTAR_CLK -PIN_PB03,DOTSTAR_DATA +QSPI_CS,PB11 +QSPI_SCK,PB10 +QSPI_D0,PA08 +QSPI_D1,PA09 +QSPI_D2,PA10 +QSPI_D3,PA11 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +USB_DM,PA24 +USB_DP,PA25 +USB_SOF,PA23 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv index 0bda767600e12..cee4bf02b7a39 100644 --- a/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv @@ -1,66 +1,61 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored - -PIN_PA02,A0 -PIN_PA05,A1 -PIN_PA06,A2 -PIN_PB00,A3 -PIN_PB08,A4 -PIN_PB09,A5 -PIN_PA03,AREF - -PIN_PA23,D0 -PIN_PA22,D1 -PIN_PB17,D2 -PIN_PB16,D3 -PIN_PB13,D4 -PIN_PB14,D5 -PIN_PB15,D6 -PIN_PB12,D7 -PIN_PA21,D8 -PIN_PA20,D9 -PIN_PA18,D10 -PIN_PA19,D11 -PIN_PA17,D12 -PIN_PA16,D13 - -PIN_PB02,SDA -PIN_PB03,SCL - -PIN_PA13,SCK -PIN_PA12,MOSI -PIN_PA14,MISO - -PIN_PB22,NEOPIXEL -PIN_PB06,RXLED -PIN_PB07,TXLED +A0,PA02 +A1,PA05 +A2,PA06 +A3,PB00 +A4,PB08 +A5,PB09 +AREF,PA03 + +D0,PA23 +D1,PA22 +D2,PB17 +D3,PB16 +D4,PB13 +D5,PB14 +D6,PB15 +D7,PB12 +D8,PA21 +D9,PA20 +D10,PA18 +D11,PA19 +D12,PA17 +D13,PA16 + +SDA,PB02 +SCL,PB03 + +SCK,PA13 +MOSI,PA12 +MISO,PA14 + +NEOPIXEL,PB22 +RXLED,PB06 +TXLED,PB07 # Airlift -PIN_PB05,ESP_RESET -PIN_PB04,ESP_BUSY -PIN_PA15,ESP_CS -PIN_PB01,ESP_GPIO0 -PIN_PA07,ESP_RX -PIN_PA04,ESP_TX -PIN_PB23,ESP_RTS +ESP_RESET,PB05 +ESP_BUSY,PB04 +ESP_CS,PA15 +ESP_GPIO0,PB01 +ESP_RX,PA07 +ESP_TX,PA04 +ESP_RTS,PB23 # QSPI flash -PIN_PA08,FLASH_MOSI -PIN_PA09,FLASH_MISO -PIN_PA10,FLASH_WP -PIN_PA11,FLASH_HOLD -PIN_PB10,FLASH_SCK -PIN_PB11,FLASH_CS +FLASH_MOSI,PA08 +FLASH_MISO,PA09 +FLASH_WP,PA10 +FLASH_HOLD,PA11 +FLASH_SCK,PB10 +FLASH_CS,PB11 # USB -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF -PIN_PA17,USB_HOSTEN +USB_DM,PA24 +USB_DP,PA25 +USB_SOF,PA23 +#USB_HOSTEN,PA17 # JLink -PIN_PA30,SWCLK -PIN_PA31,SWDIO -PIN_PB30,SWO +SWCLK,PA30 +SWDIO,PA31 +SWO,PB30 diff --git a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv index b5f1c9801b154..47306f8de1ce0 100644 --- a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv +++ b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv @@ -1,20 +1,15 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +D0,PA08 +D1,PA02 +D2,PA09 +D3,PA07 +D4,PA06 +DOTSTAR_DATA,PA00 +DOTSTAR_CLK,PA01 -PIN_PA08,D0 -PIN_PA02,D1 -PIN_PA09,D2 -PIN_PA07,D3 -PIN_PA06,D4 -PIN_PA00,DOTSTAR_DATA -PIN_PA01,DOTSTAR_CLK +LED,PA10 -PIN_PA10,LED +USB_DM,PA24 +USB_DP,PA25 -PIN_PA24,USB_DM -PIN_PA25,USB_DP - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/MINISAM_M4/pins.csv b/ports/samd/boards/MINISAM_M4/pins.csv index 3ea5f85cbacb9..3c1ab4c6038d3 100644 --- a/ports/samd/boards/MINISAM_M4/pins.csv +++ b/ports/samd/boards/MINISAM_M4/pins.csv @@ -1,43 +1,38 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +A0,PA02 +A1,PB08 +A2,PB09 +A3,PA04 +A4,PA05 +A5,PA06 +A6,PA07 +RX,PA16 +TX,PA17 +D3,PA19 +D4,PA20 +D5,PA21 +LED,PA15 +BUTTON,PA00 +AREF,PA03 +SDA,PA12 +SCL,PA13 +MOSI,PB22 +MISO,PB23 +SCK,PA01 +DOTSTAR_DATA,PB03 +DOTSTAR_CLK,PB02 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PA06,A5 -PIN_PA07,A6 -PIN_PA16,RX -PIN_PA17,TX -PIN_PA19,D3 -PIN_PA20,D4 -PIN_PA21,D5 -PIN_PA15,LED -PIN_PA00,BUTTON -PIN_PA03,AREF -PIN_PA12,SDA -PIN_PA13,SCL -PIN_PB22,MOSI -PIN_PB23,MISO -PIN_PA01,SCK -PIN_PB03,DOTSTAR_DATA -PIN_PB02,DOTSTAR_CLK +QSPI_CS,PB11 +QSPI_SCK,PB10 +QSPI_D0,PA08 +QSPI_D1,PA09 +QSPI_D2,PA10 +QSPI_D3,PA11 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +LED,PA15 -PIN_PA15,LED +USB_DM,PA24 +USB_DP,PA25 +USB_SOF,PA23 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv index 5990c373bf934..69d0c136d08ef 100644 --- a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv +++ b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv @@ -1,60 +1,55 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored - # EXT1 -PIN_PB00,EXT1_PIN3 -PIN_PB01,EXT1_PIN4 -PIN_PB06,EXT1_PIN5 -PIN_PB07,EXT1_PIN6 -PIN_PB02,EXT1_PIN7 -PIN_PB03,EXT1_PIN8 -PIN_PB04,EXT1_PIN9 -PIN_PB05,EXT1_PIN10 -PIN_PA08,EXT1_PIN11 -PIN_PA09,EXT1_PIN12 -PIN_PB09,EXT1_PIN13 -PIN_PB08,EXT1_PIN14 -PIN_PA05,EXT1_PIN15 -PIN_PA06,EXT1_PIN16 -PIN_PA04,EXT1_PIN17 -PIN_PA07,EXT1_PIN18 +EXT1_PIN3,PB00 +EXT1_PIN4,PB01 +EXT1_PIN5,PB06 +EXT1_PIN6,PB07 +EXT1_PIN7,PB02 +EXT1_PIN8,PB03 +EXT1_PIN9,PB04 +EXT1_PIN10,PB05 +EXT1_PIN11,PA08 +EXT1_PIN12,PA09 +EXT1_PIN13,PB09 +EXT1_PIN14,PB08 +EXT1_PIN15,PA05 +EXT1_PIN16,PA06 +EXT1_PIN17,PA04 +EXT1_PIN18,PA07 # EXT2 -PIN_PA10,EXT2_PIN3 -PIN_PA11,EXT2_PIN4 -PIN_PA20,EXT2_PIN5 -PIN_PA21,EXT2_PIN6 -PIN_PB12,EXT2_PIN7 -PIN_PB13,EXT2_PIN8 -PIN_PB14,EXT2_PIN9 -PIN_PB15,EXT2_PIN10 -PIN_PB11,EXT2_PIN13 -PIN_PB10,EXT2_PIN14 -PIN_PA17,EXT2_PIN15 -PIN_PA18,EXT2_PIN16 -PIN_PA16,EXT2_PIN17 -PIN_PA19,EXT2_PIN18 +EXT2_PIN3,PA10 +EXT2_PIN4,PA11 +EXT2_PIN5,PA20 +EXT2_PIN6,PA21 +EXT2_PIN7,PB12 +EXT2_PIN8,PB13 +EXT2_PIN9,PB14 +EXT2_PIN10,PB15 +EXT2_PIN13,PB11 +EXT2_PIN14,PB10 +EXT2_PIN15,PA17 +EXT2_PIN16,PA18 +EXT2_PIN17,PA16 +EXT2_PIN18,PA19 # EXT3 -PIN_PA02,EXT3_PIN3 -PIN_PA03,EXT3_PIN4 -PIN_PA15,EXT3_PIN6 -PIN_PA12,EXT3_PIN7 -PIN_PA13,EXT3_PIN8 -PIN_PA28,EXT3_PIN9 -PIN_PA27,EXT3_PIN10 -PIN_PB17,EXT3_PIN15 -PIN_PB22,EXT3_PIN16 -PIN_PB16,EXT3_PIN17 -PIN_PB23,EXT3_PIN18 +EXT3_PIN3,PA02 +EXT3_PIN4,PA03 +EXT3_PIN6,PA15 +EXT3_PIN7,PA12 +EXT3_PIN8,PA13 +EXT3_PIN9,PA28 +EXT3_PIN10,PA27 +EXT3_PIN15,PB17 +EXT3_PIN16,PB22 +EXT3_PIN17,PB16 +EXT3_PIN18,PB23 -PIN_PB30,LED +LED,PB30 -PIN_PA24,USB_DM -PIN_PA25,USB_DP +USB_DM,PA24 +USB_DP,PA25 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv index c32108b9f72a0..f263253cbaae4 100644 --- a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv +++ b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv @@ -1,76 +1,71 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +A0_D0,PB08 +A1_D1,PB09 +A2_D2,PA07 +A3_D3,PB04 +A4_D4,PB05 +A5_D5,PB06 +A6_D6,PA04 +A7_D7,PB07 +A8_D8,PA06 +SWITCH_X,PD08 +SWITCH_Y,PD09 +SWITCH_Z,PD10 +SWITCH_B,PD12 +SWITCH_U,PD20 +BUTTON_1,PC26 +BUTTON_2,PC27 +BUTTON_3,PC28 +ENABLE_5V,PC14 +ENABLE_3V3,PC15 +TX,PB26 +RX,PB27 +SDA0,PA13 +SCL0,PA12 +SDA1,PA17 +SCL1,PA16 +MOSI,PB02 +MISO,PB00 +SCK,PB03 +CS,PB01 +GPCLK0,PB15 +GPCLK1,PB12 +GPCLK2,PB13 +SD_MOSI,PC16 +SD_MISO,PC18 +SD_SCK,PC17 +SD_CS,PC19 +SD_DET,PD21 +I2S_LRCLK,PA20 +I2S_SDIN,PA21 +I2S_SDOUT,PA22 +I2C_BCLK,PB16 +LCD_MISO,PB18 +LCD_MOSI,PB19 +LCD_SCK,PB20 +LCD_CS,PB21 +LCD_BACKLIGHT,PC05 +LCD_D_C,PC06 +LCD_RESET,PC07 +LCD_XL,PC10 +LCD_YU,PC11 +LCD_XR,PC12 +LCD_YD,PC13 +MIC,PC30 +BUZZER,PD11 -PIN_PB08,A0_D0 -PIN_PB09,A1_D1 -PIN_PA07,A2_D2 -PIN_PB04,A3_D3 -PIN_PB05,A4_D4 -PIN_PB06,A5_D5 -PIN_PA04,A6_D6 -PIN_PB07,A7_D7 -PIN_PA06,A8_D8 -PIN_PD08,SWITCH_X -PIN_PD09,SWITCH_Y -PIN_PD10,SWITCH_Z -PIN_PD12,SWITCH_B -PIN_PD20,SWITCH_U -PIN_PC26,BUTTON_1 -PIN_PC27,BUTTON_2 -PIN_PC28,BUTTON_3 -PIN_PC14,ENABLE_5V -PIN_PC15,ENABLE_3V3 -PIN_PB26,TX -PIN_PB27,RX -PIN_PA13,SDA0 -PIN_PA12,SCL0 -PIN_PA17,SDA1 -PIN_PA16,SCL1 -PIN_PB02,MOSI -PIN_PB00,MISO -PIN_PB03,SCK -PIN_PB01,CS -PIN_PB15,GPCLK0 -PIN_PB12,GPCLK1 -PIN_PB13,GPCLK2 -PIN_PC16,SD_MOSI -PIN_PC18,SD_MISO -PIN_PC17,SD_SCK -PIN_PC19,SD_CS -PIN_PD21,SD_DET -PIN_PA20,I2S_LRCLK -PIN_PA21,I2S_SDIN -PIN_PA22,I2S_SDOUT -PIN_PB16,I2C_BCLK -PIN_PB18,LCD_MISO -PIN_PB19,LCD_MOSI -PIN_PB20,LCD_SCK -PIN_PB21,LCD_CS -PIN_PC05,LCD_BACKLIGHT -PIN_PC06,LCD_D_C -PIN_PC07,LCD_RESET -PIN_PC10,LCD_XL -PIN_PC11,LCD_YU -PIN_PC12,LCD_XR -PIN_PC13,LCD_YD -PIN_PC30,MIC -PIN_PD11,BUZZER +QSPI_CS,PB11 +QSPI_SCK,PB10 +QSPI_D0,PA08 +QSPI_D1,PA09 +QSPI_D2,PA10 +QSPI_D3,PA11 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +LED_BLUE,PA15 +LED_LCD,PC05 -PIN_PA15,LED_BLUE -PIN_PC05,LED_LCD +USB_DM,PA24 +USB_DP,PA25 +USB_SOF,PA23 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv b/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv index 2f1c180e8ac6a..969c60028b41b 100644 --- a/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv +++ b/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv @@ -1,26 +1,21 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +A0_D0,PA02 +A1_D1,PA04 +A2_D2,PA10 +A3_D3,PA11 +A4_D4,PA08 +A5_D5,PA09 +A6_D6,PB08 +A7_D7,PB09 +A8_D8,PA07 +A9_D9,PA05 +A10_D10,PA06 -PIN_PA02,A0_D0 -PIN_PA04,A1_D1 -PIN_PA10,A2_D2 -PIN_PA11,A3_D3 -PIN_PA08,A4_D4 -PIN_PA09,A5_D5 -PIN_PB08,A6_D6 -PIN_PB09,A7_D7 -PIN_PA07,A8_D8 -PIN_PA05,A9_D9 -PIN_PA06,A10_D10 +USER_LED,PA17 +RX_LED,PA18 +TX_LED,PA19 -PIN_PA17,USER_LED -PIN_PA18,RX_LED -PIN_PA19,TX_LED +USB_DM,PA24 +USB_DP,PA25 -PIN_PA24,USB_DM -PIN_PA25,USB_DP - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv b/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv index d807b505a7044..0ae269724da85 100644 --- a/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv +++ b/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv @@ -1,41 +1,36 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +D0,PA13 +D1,PA12 +D4,PA06 +D5,PA15 +D6,PA20 +D7,PA21 +D9,PA07 +D10,PA18 +D11,PA16 +D12,PA19 +D13,PA17 +A0,PA02 +A1,PB08 +A2,PB09 +A3,PA04 +A4,PA05 +A5,PB02 +SDA,PA22 +SCL,PA23 +MOSI,PB12 +MISO,PB11 +SCK,PB13 +FLASH_MOSI,PA08 +FLASH_SCK,PA09 +FLASH_CS,PA10 +FLASH_MISO,PA11 -PIN_PA13,D0 -PIN_PA12,D1 -PIN_PA06,D4 -PIN_PA15,D5 -PIN_PA20,D6 -PIN_PA21,D7 -PIN_PA07,D9 -PIN_PA18,D10 -PIN_PA16,D11 -PIN_PA19,D12 -PIN_PA17,D13 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PB02,A5 -PIN_PA22,SDA -PIN_PA23,SCL -PIN_PB12,MOSI -PIN_PB11,MISO -PIN_PB13,SCK -PIN_PA08,FLASH_MOSI -PIN_PA09,FLASH_SCK -PIN_PA10,FLASH_CS -PIN_PA11,FLASH_MISO +RXLED,PB03 +TXLED,PA27 -PIN_PB03,RXLED -PIN_PA27,TXLED +USB_DM,PA24 +USB_DP,PA25 +USB_SOF,PA23 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF - -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PA30 +SWDIO,PA31 diff --git a/ports/samd/boards/make-pin-table.py b/ports/samd/boards/make-pin-table.py deleted file mode 100644 index a187f2a711aaa..0000000000000 --- a/ports/samd/boards/make-pin-table.py +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env python -"""Generates the pin_cap table file for the SAMD port.""" - -from __future__ import print_function - -import argparse -import sys -import csv - -table_header = """// This file was automatically generated by make-pin-cap.py -// - -// The Pin objects which are available on a board - -""" - - -class Pins: - def __init__(self): - self.board_pins = [] # list of pin objects - self.pin_names = {} - - def parse_csv_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - # Pin numbers must start with "PA", "PB", "PC" or "PD" - if len(row) > 0 and row[0].strip().upper()[:2] in ("PA", "PB", "PC", "PD"): - self.board_pins.append(row) - - def parse_pin_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile, skipinitialspace=True) - for row in rows: - # Pin numbers must start with "PIN_" - # LED numbers must start with "LED_" - if len(row) > 0: - # for compatibility, map LED_ to PIN_ - if row[0].startswith("LED_"): - row[0] = "PIN_" + row[0][4:] - if row[0].startswith("PIN_"): - if len(row) == 1: - self.pin_names[row[0]] = (row[0][4:], "{&machine_pin_type}") - else: - self.pin_names[row[0]] = (row[1], "{&machine_pin_type}") - - def print_table(self, table_filename, mcu_name): - with open(table_filename, "wt") as table_file: - table_file.write(table_header) - - # Create the Pin objects - - if mcu_name == "SAMD21": - for row in self.board_pins: - pin = "PIN_" + row[0].upper() - table_file.write("#ifdef " + pin + "\n") - table_file.write("static const machine_pin_obj_t %s_obj = " % pin) - eic = row[1] if row[1] else "0xff" - adc = row[2] if row[2] else "0xff" - if pin in self.pin_names: - name = "MP_QSTR_%s" % self.pin_names[pin][0] - type = self.pin_names[pin][1] - else: - name = "MP_QSTR_" - type = "{&machine_pin_type}" - table_file.write("{%s, %s, %s, %s, %s" % (type, pin, name, eic, adc)) - for cell in row[3:]: - if cell: - table_file.write( - ", 0x%s" % cell if len(cell) == 2 else ", 0x0%s" % cell - ) - else: - table_file.write(", 0xff") - table_file.write("};\n") - table_file.write("#endif\n") - else: - for row in self.board_pins: - pin = "PIN_" + row[0].upper() - table_file.write("#ifdef " + pin + "\n") - table_file.write("const machine_pin_obj_t %s_obj = " % pin) - eic = row[1] if row[1] else "0xff" - adc0 = row[2] if row[2] else "0xff" - adc1 = row[3] if row[3] else "0xff" - if pin in self.pin_names: - name = "MP_QSTR_%s" % self.pin_names[pin][0] - type = self.pin_names[pin][1] - else: - name = "MP_QSTR_" - type = "{&machine_pin_type}" - table_file.write( - "{%s, %s, %s, %s, %s, %s" % (type, pin, name, eic, adc0, adc1) - ) - for cell in row[4:]: - if cell: - table_file.write( - ", 0x%s" % cell if len(cell) == 2 else ", 0x0%s" % cell - ) - else: - table_file.write(", 0xff") - table_file.write("};\n") - table_file.write("#endif\n") - - # Create the Pin table - - table_file.write("\n// The table of references to the pin objects.\n\n") - table_file.write("static const machine_pin_obj_t *pin_af_table[] = {\n") - for row in self.board_pins: - pin = "PIN_" + row[0].upper() - table_file.write(" #ifdef " + pin + "\n") - table_file.write(" &%s_obj,\n" % pin) - table_file.write(" #endif\n") - table_file.write("};\n") - - # Create the CPU pins dictionary table - - table_file.write("\n#if MICROPY_PY_MACHINE_PIN_BOARD_CPU\n") - table_file.write("\n// The cpu pins dictionary\n\n") - table_file.write( - "STATIC const mp_rom_map_elem_t pin_cpu_pins_locals_dict_table[] = {\n" - ) - for row in self.board_pins: - pin = "PIN_" + row[0].upper() - table_file.write(" #ifdef " + pin + "\n") - table_file.write( - " { MP_ROM_QSTR(MP_QSTR_%s), MP_ROM_PTR(&%s_obj) },\n" - % (row[0].upper(), pin) - ) - table_file.write(" #endif\n") - table_file.write("};\n") - table_file.write( - "MP_DEFINE_CONST_DICT(machine_pin_cpu_pins_locals_dict, pin_cpu_pins_locals_dict_table);\n" - ) - - # Create the board pins dictionary table - - table_file.write("\n// The board pins dictionary\n\n") - table_file.write( - "STATIC const mp_rom_map_elem_t pin_board_pins_locals_dict_table[] = {\n" - ) - for row in self.board_pins: - pin = "PIN_" + row[0].upper() - if pin in self.pin_names: - table_file.write(" #ifdef " + pin + "\n") - table_file.write( - " { MP_ROM_QSTR(MP_QSTR_%s), MP_ROM_PTR(&%s_obj) },\n" - % (self.pin_names[pin][0], pin) - ) - table_file.write(" #endif\n") - table_file.write("};\n") - table_file.write( - "MP_DEFINE_CONST_DICT(machine_pin_board_pins_locals_dict, pin_board_pins_locals_dict_table);\n" - ) - table_file.write("#endif\n") - - -def main(): - parser = argparse.ArgumentParser( - prog="make-pin-af.py", - usage="%(prog)s [options] [command]", - description="Generate MCU-specific pin cap table file", - ) - parser.add_argument( - "-c", - "--csv", - dest="csv_filename", - help="Specifies the pin-af-table.csv filename", - ) - parser.add_argument( - "-b", - "--board", - dest="pin_filename", - help="Specifies the pins.csv filename", - ) - parser.add_argument( - "-t", - "--table", - dest="table_filename", - help="Specifies the name of the generated pin cap table file", - ) - parser.add_argument( - "-m", - "--mcu", - dest="mcu_name", - help="Specifies type of the MCU (SAMD21 or SAMD51)", - ) - args = parser.parse_args(sys.argv[1:]) - - pins = Pins() - - if args.csv_filename: - pins.parse_csv_file(args.csv_filename) - - if args.pin_filename: - pins.parse_pin_file(args.pin_filename) - - if args.table_filename: - pins.print_table(args.table_filename, args.mcu_name) - - -if __name__ == "__main__": - main() diff --git a/ports/samd/boards/make-pins.py b/ports/samd/boards/make-pins.py new file mode 100644 index 0000000000000..302eeae624b18 --- /dev/null +++ b/ports/samd/boards/make-pins.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python + + +from collections import defaultdict, namedtuple +import os +import re +import sys + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools")) +import boardgen + + +# These are the columns of the af.csv as well as the arguments to the PIN() +# macro in samd_prefix.c. +AFS = { + "SAMD21": ["eic", "adc0", "sercom1", "sercom2", "tcc1", "tcc2"], + "SAMD51": ["eic", "adc0", "adc1", "sercom1", "sercom2", "tc", "tcc1", "tcc2"], +} + + +class SamdPin(boardgen.Pin): + def __init__(self, cpu_pin_name): + super().__init__(cpu_pin_name) + + # P (already verified by validate_cpu_pin_name). + self._port = cpu_pin_name[1] + self._pin = int(cpu_pin_name[2:]) + + # List of uint8 values from the af.csv. Default to 0xff if not + # present. + self._afs = defaultdict(lambda: 0xFF) + + # Called for each AF defined in the csv file for this pin. + def add_af(self, af_idx, af_name, af): + # samd-specific: Any pin in the af.csv is implicitly part of the board + # pins.csv and will therefore be in the Pin.cpu dict. This is + # equivalent to adding `,Pxy` to the board.csv for every pin in the + # af.csv. + self._available = True + + name = AFS[self._generator.args.mcu][af_idx] + assert name == af_name.lower() + if name == "eic" or name.startswith("adc"): + # eic and adc columns are decimal. + v = int(af) + else: + # hex, high nibble is device number, low nibble is pad number. + v = int(af, 16) + self._afs[AFS[self._generator.args.mcu][af_idx]] = v + + # Use the PIN() macro defined in samd_prefix.c for defining the pin + # objects. + def definition(self): + # SAMD21: PIN(p_name, p_eic, p_adc0, p_sercom1, p_sercom2, p_tcc1, p_tcc2) + # SAMD51: PIN(p_name, p_eic, p_adc0, p_adc1, p_sercom1, p_sercom2, p_tc, p_tcc1, p_tcc2) + return "PIN({:s}, {})".format( + self.name(), + ", ".join("0x{:02x}".format(self._afs[x]) for x in AFS[self._generator.args.mcu]), + ) + + # Wrap all definitions to ensure that the ASF defines this pin for this + # particular MCU. + def enable_macro(self): + return "defined(PIN_{})".format(self.name()) + + # SAMD cpu names must be "P", with zero-prefixed two-digit . + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + boardgen.Pin.validate_cpu_pin_name(cpu_pin_name) + + if not re.match("P[A-D][0-9][0-9]$", cpu_pin_name): + raise boardgen.PinGeneratorError("Invalid cpu pin name '{}'".format(cpu_pin_name)) + + +class SamdPinGenerator(boardgen.PinGenerator): + def __init__(self): + # Use custom pin type above, and also enable the --af-csv argument so + # that add_af gets called on each pin. + super().__init__( + pin_type=SamdPin, + enable_af=True, + ) + + # Override the default implementation just to change the default arguments + # (extra header row, skip first column). + def parse_af_csv(self, filename): + return super().parse_af_csv(filename, header_rows=1, pin_col=0, af_col=1) + + # We need to know the mcu to emit the correct AF list. + def extra_args(self, parser): + parser.add_argument("--mcu") + + +if __name__ == "__main__": + SamdPinGenerator().main() diff --git a/ports/samd/boards/pins_prefix.c b/ports/samd/boards/pins_prefix.c new file mode 100644 index 0000000000000..4f0095d332130 --- /dev/null +++ b/ports/samd/boards/pins_prefix.c @@ -0,0 +1,21 @@ +// pins_prefix.c becomes the initial portion of the generated pins file. + +#include + +#include "py/obj.h" +#include "py/mphal.h" +#include "extmod/modmachine.h" +#include "pin_af.h" +#include "genhdr/pins.h" + +#if defined(MCU_SAMD21) + +#define PIN(p_name, p_eic, p_adc0, p_sercom1, p_sercom2, p_tcc1, p_tcc2) \ + {{&machine_pin_type}, PIN_##p_name, MP_QSTR_##p_name, p_eic, p_adc0, p_sercom1, p_sercom2, p_tcc1, p_tcc2 } + +#elif defined(MCU_SAMD51) + +#define PIN(p_name, p_eic, p_adc0, p_adc1, p_sercom1, p_sercom2, p_tc, p_tcc1, p_tcc2) \ + {{&machine_pin_type}, PIN_##p_name, MP_QSTR_##p_name, p_eic, p_adc0, p_adc1, p_sercom1, p_sercom2, p_tc, p_tcc1, p_tcc2 } + +#endif diff --git a/ports/samd/machine_adc.c b/ports/samd/machine_adc.c index 981318d33f2ff..2e4d4ed842326 100644 --- a/ports/samd/machine_adc.c +++ b/ports/samd/machine_adc.c @@ -89,8 +89,8 @@ STATIC void mp_machine_adc_print(const mp_print_t *print, mp_obj_t self_in, mp_p (void)kind; machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in); - mp_printf(print, "ADC(%s, device=%u, channel=%u, bits=%u, average=%u, vref=%d)", - pin_name(self->id), self->adc_config.device, + mp_printf(print, "ADC(%q, device=%u, channel=%u, bits=%u, average=%u, vref=%d)", + pin_find_by_id(self->id)->name, self->adc_config.device, self->adc_config.channel, self->bits, 1 << self->avg, self->vref); } diff --git a/ports/samd/machine_dac.c b/ports/samd/machine_dac.c index 195c06e4f4a83..5c9d77624dce4 100644 --- a/ports/samd/machine_dac.c +++ b/ports/samd/machine_dac.c @@ -152,7 +152,7 @@ STATIC mp_obj_t dac_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_ STATIC void dac_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { dac_obj_t *self = self_in; - mp_printf(print, "DAC(%u, Pin=%s, vref=%d)", self->id, pin_name(self->gpio_id), self->vref); + mp_printf(print, "DAC(%u, Pin=%q, vref=%d)", self->id, pin_find_by_id(self->gpio_id)->name, self->vref); } STATIC mp_obj_t dac_write(mp_obj_t self_in, mp_obj_t value_in) { diff --git a/ports/samd/machine_pin.c b/ports/samd/machine_pin.c index f8e1b962804c0..30b254722b842 100644 --- a/ports/samd/machine_pin.c +++ b/ports/samd/machine_pin.c @@ -54,8 +54,7 @@ typedef struct _machine_pin_irq_obj_t { uint8_t pin_id; } machine_pin_irq_obj_t; -#if MICROPY_PY_MACHINE_PIN_BOARD_CPU -// Pin mapping dictionaries +// Pin mapping dictionaries generated by make-pins.py. MP_DEFINE_CONST_OBJ_TYPE( machine_pin_cpu_pins_obj_type, MP_QSTR_cpu, @@ -69,7 +68,6 @@ MP_DEFINE_CONST_OBJ_TYPE( MP_TYPE_FLAG_NONE, locals_dict, &machine_pin_board_pins_locals_dict ); -#endif // MICROPY_PY_MACHINE_PIN_BOARD_CPU STATIC const mp_irq_methods_t machine_pin_irq_methods; @@ -90,11 +88,10 @@ STATIC void machine_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_prin mode_str = (mp_hal_get_pin_direction(self->pin_id) == GPIO_DIRECTION_OUT) ? "OUT" : "IN"; } - mp_printf(print, "Pin(\"%s\", mode=%s, pull=%s, GPIO=P%c%02u)", - pin_name(self->pin_id), + mp_printf(print, "Pin(Pin.cpu.%q, mode=%s, pull=%s)", + self->name, mode_str, - pull_str[mp_hal_get_pull_mode(self->pin_id)], - "ABCD"[self->pin_id / 32], self->pin_id % 32); + pull_str[mp_hal_get_pull_mode(self->pin_id)]); } STATIC void pin_validate_drive(bool strength) { @@ -292,7 +289,7 @@ STATIC mp_obj_t machine_pin_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); // Get the IRQ object. - uint8_t eic_id = get_pin_obj_ptr(self->pin_id)->eic; + uint8_t eic_id = self->eic; machine_pin_irq_obj_t *irq = MP_STATE_PORT(machine_pin_irq_objects[eic_id]); if (irq != NULL && irq->pin_id != self->pin_id) { mp_raise_ValueError(MP_ERROR_TEXT("IRQ already used")); @@ -428,11 +425,9 @@ STATIC const mp_rom_map_elem_t machine_pin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_drive), MP_ROM_PTR(&machine_pin_drive_obj) }, { MP_ROM_QSTR(MP_QSTR_irq), MP_ROM_PTR(&machine_pin_irq_obj) }, - #if MICROPY_PY_MACHINE_PIN_BOARD_CPU // class attributes - { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&machine_pin_board_pins_obj_type) }, - { MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&machine_pin_cpu_pins_obj_type) }, - #endif // MICROPY_PY_MACHINE_PIN_BOARD_CPU + { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&machine_pin_board_pins_obj_type) }, + { MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&machine_pin_cpu_pins_obj_type) }, // class constants { MP_ROM_QSTR(MP_QSTR_IN), MP_ROM_INT(GPIO_MODE_IN) }, diff --git a/ports/samd/machine_pwm.c b/ports/samd/machine_pwm.c index 196a9b14355d5..6fc8145372bce 100644 --- a/ports/samd/machine_pwm.c +++ b/ports/samd/machine_pwm.c @@ -114,8 +114,8 @@ STATIC void mp_machine_pwm_stop(machine_pwm_obj_t *self); STATIC void mp_machine_pwm_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { machine_pwm_obj_t *self = MP_OBJ_TO_PTR(self_in); - mp_printf(print, "PWM(%s, device=%u, channel=%u, output=%u)", - pin_name(self->pin_id), self->device, self->channel, self->output); + mp_printf(print, "PWM(%q, device=%u, channel=%u, output=%u)", + pin_find_by_id(self->pin_id)->name, self->device, self->channel, self->output); } // called by the constructor and init() diff --git a/ports/samd/machine_uart.c b/ports/samd/machine_uart.c index c081b8814b9ae..ada193020b94b 100644 --- a/ports/samd/machine_uart.c +++ b/ports/samd/machine_uart.c @@ -120,7 +120,7 @@ STATIC void mp_machine_uart_print(const mp_print_t *print, mp_obj_t self_in, mp_ ", txbuf=%d" #endif #if MICROPY_HW_UART_RTSCTS - ", rts=%s, cts=%s" + ", rts=%q, cts=%q" #endif ")", self->id, self->baudrate, self->bits, _parity_name[self->parity], @@ -129,8 +129,8 @@ STATIC void mp_machine_uart_print(const mp_print_t *print, mp_obj_t self_in, mp_ , self->write_buffer.size - 1 #endif #if MICROPY_HW_UART_RTSCTS - , self->rts != 0xff ? pin_name(self->rts) : "None" - , self->cts != 0xff ? pin_name(self->cts) : "None" + , self->rts != 0xff ? pin_find_by_id(self->rts)->name : MP_QSTR_None + , self->cts != 0xff ? pin_find_by_id(self->cts)->name : MP_QSTR_None #endif ); } diff --git a/ports/samd/mcu/samd21/mpconfigmcu.h b/ports/samd/mcu/samd21/mpconfigmcu.h index f70981acd53c1..1a3d9587291fe 100644 --- a/ports/samd/mcu/samd21/mpconfigmcu.h +++ b/ports/samd/mcu/samd21/mpconfigmcu.h @@ -37,10 +37,6 @@ unsigned long trng_random_u32(int delay); #define MICROPY_PY_OS_URANDOM (1) -#ifndef MICROPY_PY_MACHINE_PIN_BOARD_CPU -#define MICROPY_PY_MACHINE_PIN_BOARD_CPU (1) -#endif - #define CPU_FREQ (48000000) #define DFLL48M_FREQ (48000000) #define MAX_CPU_FREQ (54000000) diff --git a/ports/samd/mcu/samd21/pin-af-table.csv b/ports/samd/mcu/samd21/pin-af-table.csv index b74db0c8efcaf..37bb592597edc 100644 --- a/ports/samd/mcu/samd21/pin-af-table.csv +++ b/ports/samd/mcu/samd21/pin-af-table.csv @@ -9,57 +9,56 @@ # The first column is the pin id, not the number of the board pin. # Rows not starting with pa, pb, pc or pd are ignored. # When editing the table with a spread sheet, take care to import the data as text. -# -# Pin,EIC,ADC,SERCOM1,SERCOM2,TC,TCC -pa00,0,,,10,20, -pa01,1,,,11,21, -pa02,2,0,,,, -pa03,3,1,,,, -pb04,4,12,,,, -pb05,5,13,,,, -pb06,6,14,,,, -pb07,7,15,,,, -pb08,8,2,,40,40, -pb09,9,3,,41,41, -pa04,4,4,,00,00, -pa05,5,5,,01,01, -pa06,6,6,,02,10, -pa07,7,7,,03,11, -pa08,,16,00,20,00,12 -pa09,9,17,01,21,01,13 -pa10,10,18,02,22,10,02 -pa11,11,19,03,23,11,03 -pb10,10,,,42,50,04 -pb11,11,,,43,51,05 -pb12,12,,40,,40,06 -pb13,13,,41,,41,07 -pb14,14,,42,,50, -pb15,15,,43,,51, -pa12,12,,20,40,20,06 -pa13,13,,21,41,20,07 -pa14,14,,22,42,30,04 -pa15,15,,23,43,31,05 -pa16,0,,10,30,20,06 -pa17,1,,11,31,21,07 -pa18,2,,12,32,30,02 -pa19,3,,13,33,31,03 -pb16,9,,50,,60,04 -pb17,1,,51,,61,05 -pa20,4,,52,32,70,04 -pa21,5,,53,33,71,07 -pa22,6,,30,50,40,04 -pa23,7,,31,51,41,05 -pa24,12,,32,52,50,12 -pa25,13,,33,53,51,13 -pb22,6,,,52,70, -pb23,7,,,53,71, -pa27,15,,,,, -pa28,8,,,,, -pa30,10,,,12,10, -pa31,11,,,13,11, -pb30,14,,,50,00,12 -pb31,15,,,51,01,13 -pb00,0,8,,52,70, -pb01,1,9,,53,71, -pb02,2,10,,50,60, -pb03,3,11,,51,61, +Pin,EIC,ADC0,SERCOM1,SERCOM2,TCC1,TCC2 +PA00,0,,,10,20, +PA01,1,,,11,21, +PA02,2,0,,,, +PA03,3,1,,,, +PB04,4,12,,,, +PB05,5,13,,,, +PB06,6,14,,,, +PB07,7,15,,,, +PB08,8,2,,40,40, +PB09,9,3,,41,41, +PA04,4,4,,00,00, +PA05,5,5,,01,01, +PA06,6,6,,02,10, +PA07,7,7,,03,11, +PA08,,16,00,20,00,12 +PA09,9,17,01,21,01,13 +PA10,10,18,02,22,10,02 +PA11,11,19,03,23,11,03 +PB10,10,,,42,50,04 +PB11,11,,,43,51,05 +PB12,12,,40,,40,06 +PB13,13,,41,,41,07 +PB14,14,,42,,50, +PB15,15,,43,,51, +PA12,12,,20,40,20,06 +PA13,13,,21,41,20,07 +PA14,14,,22,42,30,04 +PA15,15,,23,43,31,05 +PA16,0,,10,30,20,06 +PA17,1,,11,31,21,07 +PA18,2,,12,32,30,02 +PA19,3,,13,33,31,03 +PB16,9,,50,,60,04 +PB17,1,,51,,61,05 +PA20,4,,52,32,70,04 +PA21,5,,53,33,71,07 +PA22,6,,30,50,40,04 +PA23,7,,31,51,41,05 +PA24,12,,32,52,50,12 +PA25,13,,33,53,51,13 +PB22,6,,,52,70, +PB23,7,,,53,71, +PA27,15,,,,, +PA28,8,,,,, +PA30,10,,,12,10, +PA31,11,,,13,11, +PB30,14,,,50,00,12 +PB31,15,,,51,01,13 +PB00,0,8,,52,70, +PB01,1,9,,53,71, +PB02,2,10,,50,60, +PB03,3,11,,51,61, diff --git a/ports/samd/mcu/samd51/mpconfigmcu.h b/ports/samd/mcu/samd51/mpconfigmcu.h index 399b48c040d69..7c95c341b9aef 100644 --- a/ports/samd/mcu/samd51/mpconfigmcu.h +++ b/ports/samd/mcu/samd51/mpconfigmcu.h @@ -30,10 +30,6 @@ #define MICROPY_PY_RANDOM_SEED_INIT_FUNC (trng_random_u32()) unsigned long trng_random_u32(void); -#ifndef MICROPY_PY_MACHINE_PIN_BOARD_CPU -#define MICROPY_PY_MACHINE_PIN_BOARD_CPU (1) -#endif - // fatfs configuration used in ffconf.h #define MICROPY_FATFS_ENABLE_LFN (1) #define MICROPY_FATFS_RPATH (2) diff --git a/ports/samd/mcu/samd51/pin-af-table.csv b/ports/samd/mcu/samd51/pin-af-table.csv index 249ce6865c678..69f51a33ca170 100644 --- a/ports/samd/mcu/samd51/pin-af-table.csv +++ b/ports/samd/mcu/samd51/pin-af-table.csv @@ -10,104 +10,103 @@ # The first column is the pin id, not the number of the board pin. # Rows not starting with pa, pb, pc or pd are ignored. # When editing the table with a spread sheet, take care to import the data as text. -# -# Pin,EIC,ADC0,ADC1,SERCOM1,SERCOM2,TC,TCC1,TCC2 -pb03,9,15,,,51,61,, -pa00,0,,,,10,20,, -pa01,1,,,,11,21,, -pc00,0,,10,,,,, -pc01,1,,11,,,,, -pc02,2,,4,,,,, -pc03,3,,5,,,,, -pa02,2,0,,,,,, -pa03,3,10,,,,,, -pb04,4,,6,,,,, -pb05,5,,7,,,,, -pd00,0,,14,,,,, -pd01,1,,15,,,,, -pb06,6,,8,,,,, -pb07,7,,9,,,,, -pb08,8,2,0,,40,40,, -pb09,9,3,1,,41,41,, -pa04,4,4,,,00,00,, -pa05,5,5,,,01,01,, -pa06,6,6,,,02,10,, -pa07,7,7,,,03,11,, -pc04,4,,,60,,,00, -pc05,5,,,61,,,, -pc06,6,,,62,,,, -pc07,9,,,63,,,, -pa08,,8,2,00,21,00,00,14 -pa09,9,9,3,01,20,01,01,15 -pa10,10,10,,02,22,10,02,16 -pa11,11,11,,03,23,11,03,17 -pb10,10,,,,42,50,04,10 -pb11,12,,,,43,51,05,11 -pb12,12,,,40,,40,30,00 -pb13,13,,,41,,41,31,01 -pb14,14,,,42,,50,40,02 -pb15,15,,,43,,51,41,03 -pd08,3,,,70,61,,01, -pd09,4,,,71,60,,02, -pd10,5,,,72,62,,03, -pd11,6,,,73,63,,04, -pd12,7,,,,,,05, -pc10,10,,,62,72,,00,14 -pc11,11,,,63,73,,01,15 -pc12,12,,,70,61,,02,16 -pc13,13,,,71,60,,03,17 -pc14,14,,,72,62,,04,10 -pc15,15,,,73,63,,05,11 -pa12,12,,,20,41,20,06,12 -pa13,13,,,21,40,21,07,13 -pa14,14,,,22,42,30,20,12 -pa15,15,,,23,43,31,21,13 -pa16,0,,,10,31,20,10,04 -pa17,1,,,11,30,21,11,05 -pa18,2,,,12,32,30,12,06 -pa19,3,,,13,33,31,13,07 -pc16,0,,,60,01,,00, -pc17,1,,,61,00,,01, -pc18,2,,,62,02,,02, -pc19,3,,,63,03,,03, -pc20,4,,,,,,04, -pc21,5,,,,,,05, -pc22,6,,,10,31,,05, -pc23,7,,,11,30,,07, -pd20,10,,,12,32,,10, -pd21,11,,,13,33,,11, -pb16,0,,,50,,60,30,04 -pb17,1,,,51,,61,31,05 -pb18,2,,,52,72,,10, -pb19,3,,,53,73,,11, -pb20,4,,,30,71,,12, -pb21,5,,,31,70,,13, -pa20,4,,,52,32,70,14,00 -pa21,5,,,53,33,71,15,01 -pa22,6,,,30,51,40,16,02 -pa23,7,,,31,50,41,17,03 -pa24,8,,,32,52,50,22, -pa25,9,,,33,53,51,, -pb22,22,,,12,52,70,, -pb23,7,,,13,53,71,, -pb24,8,,,00,21,,, -pb25,9,,,01,20,,, -pb26,12,,,20,41,,12, -pb27,13,,,21,40,,13, -pb28,14,,,22,42,,14, -pb29,15,,,23,43,,15, -pc24,8,,,02,22,,, -pc25,9,,,03,23,,, -pc26,10,,,,,,, -pc27,11,,,10,,,, -pc28,12,,,11,,,, -pa27,11,,,,,,, -pa30,14,,,72,12,60,20, -pa31,15,,,73,13,61,21, -pb30,14,,,70,51,00,40,06 -pb31,15,,,71,50,01,41,07 -pc30,14,,12,,,,, -pc31,15,,13,,,,, -pb00,9,12,,,52,70,, -pb01,1,13,,,53,71,, -pb02,2,14,,,50,60,22, +Pin,EIC,ADC0,ADC1,SERCOM1,SERCOM2,TC,TCC1,TCC2 +PB03,9,15,,,51,61,, +PA00,0,,,,10,20,, +PA01,1,,,,11,21,, +PC00,0,,10,,,,, +PC01,1,,11,,,,, +PC02,2,,4,,,,, +PC03,3,,5,,,,, +PA02,2,0,,,,,, +PA03,3,10,,,,,, +PB04,4,,6,,,,, +PB05,5,,7,,,,, +PD00,0,,14,,,,, +PD01,1,,15,,,,, +PB06,6,,8,,,,, +PB07,7,,9,,,,, +PB08,8,2,0,,40,40,, +PB09,9,3,1,,41,41,, +PA04,4,4,,,00,00,, +PA05,5,5,,,01,01,, +PA06,6,6,,,02,10,, +PA07,7,7,,,03,11,, +PC04,4,,,60,,,00, +PC05,5,,,61,,,, +PC06,6,,,62,,,, +PC07,9,,,63,,,, +PA08,,8,2,00,21,00,00,14 +PA09,9,9,3,01,20,01,01,15 +PA10,10,10,,02,22,10,02,16 +PA11,11,11,,03,23,11,03,17 +PB10,10,,,,42,50,04,10 +PB11,12,,,,43,51,05,11 +PB12,12,,,40,,40,30,00 +PB13,13,,,41,,41,31,01 +PB14,14,,,42,,50,40,02 +PB15,15,,,43,,51,41,03 +PD08,3,,,70,61,,01, +PD09,4,,,71,60,,02, +PD10,5,,,72,62,,03, +PD11,6,,,73,63,,04, +PD12,7,,,,,,05, +PC10,10,,,62,72,,00,14 +PC11,11,,,63,73,,01,15 +PC12,12,,,70,61,,02,16 +PC13,13,,,71,60,,03,17 +PC14,14,,,72,62,,04,10 +PC15,15,,,73,63,,05,11 +PA12,12,,,20,41,20,06,12 +PA13,13,,,21,40,21,07,13 +PA14,14,,,22,42,30,20,12 +PA15,15,,,23,43,31,21,13 +PA16,0,,,10,31,20,10,04 +PA17,1,,,11,30,21,11,05 +PA18,2,,,12,32,30,12,06 +PA19,3,,,13,33,31,13,07 +PC16,0,,,60,01,,00, +PC17,1,,,61,00,,01, +PC18,2,,,62,02,,02, +PC19,3,,,63,03,,03, +PC20,4,,,,,,04, +PC21,5,,,,,,05, +PC22,6,,,10,31,,05, +PC23,7,,,11,30,,07, +PD20,10,,,12,32,,10, +PD21,11,,,13,33,,11, +PB16,0,,,50,,60,30,04 +PB17,1,,,51,,61,31,05 +PB18,2,,,52,72,,10, +PB19,3,,,53,73,,11, +PB20,4,,,30,71,,12, +PB21,5,,,31,70,,13, +PA20,4,,,52,32,70,14,00 +PA21,5,,,53,33,71,15,01 +PA22,6,,,30,51,40,16,02 +PA23,7,,,31,50,41,17,03 +PA24,8,,,32,52,50,22, +PA25,9,,,33,53,51,, +PB22,22,,,12,52,70,, +PB23,7,,,13,53,71,, +PB24,8,,,00,21,,, +PB25,9,,,01,20,,, +PB26,12,,,20,41,,12, +PB27,13,,,21,40,,13, +PB28,14,,,22,42,,14, +PB29,15,,,23,43,,15, +PC24,8,,,02,22,,, +PC25,9,,,03,23,,, +PC26,10,,,,,,, +PC27,11,,,10,,,, +PC28,12,,,11,,,, +PA27,11,,,,,,, +PA30,14,,,72,12,60,20, +PA31,15,,,73,13,61,21, +PB30,14,,,70,51,00,40,06 +PB31,15,,,71,50,01,41,07 +PC30,14,,12,,,,, +PC31,15,,13,,,,, +PB00,9,12,,,52,70,, +PB01,1,13,,,53,71,, +PB02,2,14,,,50,60,22, diff --git a/ports/samd/pin_af.c b/ports/samd/pin_af.c index 6de9a74778729..ca11e3b7a8f3b 100644 --- a/ports/samd/pin_af.c +++ b/ports/samd/pin_af.c @@ -40,30 +40,26 @@ extern const uint8_t tcc_channel_count[]; -#include "pin_af_table.c" - // Just look for an table entry for a given pin and raise an error // in case of no match (which should not happen). - -const machine_pin_obj_t *get_pin_obj_ptr(int pin_id) { - for (int i = 0; i < MP_ARRAY_SIZE(pin_af_table); i++) { - if (pin_af_table[i]->pin_id == pin_id) { // Pin match - return pin_af_table[i]; +const machine_pin_obj_t *pin_find_by_id(int pin_id) { + const mp_map_t *cpu_map = &machine_pin_cpu_pins_locals_dict.map; + for (uint i = 0; i < cpu_map->alloc; i++) { + machine_pin_obj_t *pin = MP_OBJ_TO_PTR(cpu_map->table[i].value); + if (pin->pin_id == pin_id) { + return pin; } } mp_raise_ValueError(MP_ERROR_TEXT("not a Pin")); } -#if MICROPY_PY_MACHINE_PIN_BOARD_CPU STATIC const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name) { - mp_map_t *named_map = mp_obj_dict_get_map((mp_obj_t)named_pins); - mp_map_elem_t *named_elem = mp_map_lookup(named_map, name, MP_MAP_LOOKUP); - if (named_elem != NULL && named_elem->value != NULL) { + mp_map_elem_t *named_elem = mp_map_lookup((mp_map_t *)&named_pins->map, name, MP_MAP_LOOKUP); + if (named_elem != NULL) { return named_elem->value; } return NULL; } -#endif const machine_pin_obj_t *pin_find(mp_obj_t pin) { // Is already a object of the proper type @@ -72,10 +68,9 @@ const machine_pin_obj_t *pin_find(mp_obj_t pin) { } if (mp_obj_is_small_int(pin)) { // Pin defined by pin number for PAnn, PBnn, etc. - return get_pin_obj_ptr(mp_obj_get_int(pin)); + return pin_find_by_id(mp_obj_get_int(pin)); } - #if MICROPY_PY_MACHINE_PIN_BOARD_CPU const machine_pin_obj_t *self = NULL; // See if the pin name matches a board pin self = pin_find_named_pin(&machine_pin_board_pins_locals_dict, pin); @@ -87,47 +82,17 @@ const machine_pin_obj_t *pin_find(mp_obj_t pin) { if (self != NULL) { return self; } - #else - if (mp_obj_is_str(pin)) { - // Search by name - size_t slen; - const char *s = mp_obj_str_get_data(pin, &slen); - // Check for a string like PA02 or PD12 - if (slen == 4 && s[0] == 'P' && strchr("ABCD", s[1]) != NULL && - strchr("0123456789", s[2]) != NULL && strchr("0123456789", s[2]) != NULL) { - int num = (s[1] - 'A') * 32 + (s[2] - '0') * 10 + (s[3] - '0'); - return get_pin_obj_ptr(num); - } else { - for (int i = 0; i < MP_ARRAY_SIZE(pin_af_table); i++) { - size_t len; - const char *name = (char *)qstr_data(pin_af_table[i]->name, &len); - if (slen == len && strncmp(s, name, slen) == 0) { - return pin_af_table[i]; - } - } - } - } - #endif // MICROPY_PY_MACHINE_PIN_BOARD_CPU mp_raise_ValueError(MP_ERROR_TEXT("not a Pin")); } -const char *pin_name(int id) { - for (int i = 0; i < sizeof(pin_af_table); i++) { - if (pin_af_table[i]->pin_id == id) { - return qstr_str(pin_af_table[i]->name); - } - } - return "-"; -} - #if MICROPY_PY_MACHINE_I2C || MICROPY_PY_MACHINE_SPI || MICROPY_PY_MACHINE_UART // Test, whether the given pin is defined and has signals for sercom. // If that applies return the alt_fct and pad_nr. // If not, an error will be raised. sercom_pad_config_t get_sercom_config(int pin_id, uint8_t sercom_nr) { - const machine_pin_obj_t *pct_ptr = get_pin_obj_ptr(pin_id); + const machine_pin_obj_t *pct_ptr = pin_find_by_id(pin_id); if ((pct_ptr->sercom1 >> 4) == sercom_nr) { return (sercom_pad_config_t) {ALT_FCT_SERCOM1, pct_ptr->sercom1 & 0x0f}; } else if ((pct_ptr->sercom2 >> 4) == sercom_nr) { @@ -144,7 +109,7 @@ sercom_pad_config_t get_sercom_config(int pin_id, uint8_t sercom_nr) { // If not, an error will be raised. adc_config_t get_adc_config(int pin_id, int32_t flag) { - const machine_pin_obj_t *pct_ptr = get_pin_obj_ptr(pin_id); + const machine_pin_obj_t *pct_ptr = pin_find_by_id(pin_id); if (pct_ptr->adc0 != 0xff && (flag & (1 << pct_ptr->adc0)) == 0) { return (adc_config_t) {0, pct_ptr->adc0}; #if defined(MUC_SAMD51) @@ -166,7 +131,7 @@ adc_config_t get_adc_config(int pin_id, int32_t flag) { // tries to provide an unused device, if available. pwm_config_t get_pwm_config(int pin_id, int wanted_dev, uint8_t device_status[]) { - const machine_pin_obj_t *pct_ptr = get_pin_obj_ptr(pin_id); + const machine_pin_obj_t *pct_ptr = pin_find_by_id(pin_id); uint8_t tcc1 = pct_ptr->tcc1; uint8_t tcc2 = pct_ptr->tcc2; diff --git a/ports/samd/pin_af.h b/ports/samd/pin_af.h index 3a15ae7f356a9..83839a0503255 100644 --- a/ports/samd/pin_af.h +++ b/ports/samd/pin_af.h @@ -92,14 +92,11 @@ typedef struct _pwm_config_t { #define ALT_FCT_SERCOM1 2 #define ALT_FCT_SERCOM2 3 -#if MICROPY_PY_MACHINE_PIN_BOARD_CPU extern const mp_obj_dict_t machine_pin_cpu_pins_locals_dict; extern const mp_obj_dict_t machine_pin_board_pins_locals_dict; -#endif sercom_pad_config_t get_sercom_config(int pin_id, uint8_t sercom); adc_config_t get_adc_config(int pin_id, int32_t flag); pwm_config_t get_pwm_config(int pin_id, int wanted_dev, uint8_t used_dev[]); -const machine_pin_obj_t *get_pin_obj_ptr(int pin_id); -const char *pin_name(int id); +const machine_pin_obj_t *pin_find_by_id(int pin_id); const machine_pin_obj_t *pin_find(mp_obj_t pin); diff --git a/ports/stm32/Makefile b/ports/stm32/Makefile index d3b80ab5b1466..edebd2db9d8f0 100644 --- a/ports/stm32/Makefile +++ b/ports/stm32/Makefile @@ -25,12 +25,11 @@ include ../../py/mkenv.mk -include mpconfigport.mk include $(BOARD_DIR)/mpconfigboard.mk -# Files that are generated and needed before the QSTR build. -QSTR_GENERATED_HEADERS = $(GEN_PINS_QSTR) $(GEN_STMCONST_QSTR) - # qstr definitions (must come before including py.mk) -QSTR_DEFS += qstrdefsport.h $(QSTR_GENERATED_HEADERS) -QSTR_GLOBAL_DEPENDENCIES += mpconfigboard_common.h $(BOARD_DIR)/mpconfigboard.h $(QSTR_GENERATED_HEADERS) +QSTR_DEFS += qstrdefsport.h + +# Files that are generated and needed before the QSTR build. +QSTR_GLOBAL_DEPENDENCIES += mpconfigboard_common.h $(BOARD_DIR)/mpconfigboard.h $(GEN_STMCONST_HDR) # MicroPython feature configurations MICROPY_ROM_TEXT_COMPRESSION ?= 1 @@ -71,10 +70,8 @@ BOARD_PINS = $(BOARD_DIR)/pins.csv PREFIX_FILE = boards/stm32f4xx_prefix.c GEN_PINS_SRC = $(BUILD)/pins_$(BOARD).c GEN_PINS_HDR = $(HEADER_BUILD)/pins.h -GEN_PINS_QSTR = $(BUILD)/pins_qstr.h GEN_PINS_AF_CONST = $(HEADER_BUILD)/pins_af_const.h GEN_PINS_AF_DEFS = $(HEADER_BUILD)/pins_af_defs.h -GEN_PINS_AF_PY = $(BUILD)/pins_af.py INSERT_USB_IDS = $(TOP)/tools/insert-usb-ids.py FILE2H = $(TOP)/tools/file2h.py @@ -86,7 +83,6 @@ GEN_CDCINF_HEADER = $(HEADER_BUILD)/pybcdc_inf.h GEN_PLLFREQTABLE_HDR = $(HEADER_BUILD)/pllfreqtable.h GEN_STMCONST_HDR = $(HEADER_BUILD)/modstm_const.h -GEN_STMCONST_QSTR = $(BUILD)/modstm_qstr.h GEN_STMCONST_MPZ = $(HEADER_BUILD)/modstm_mpz.h CMSIS_MCU_HDR = $(STM32LIB_CMSIS_ABS)/Include/$(CMSIS_MCU_LOWER).h @@ -655,10 +651,7 @@ $(BUILD)/firmware.elf: $(OBJ) $(call GENERATE_ELF,$@,$^) # List of sources for qstr extraction -SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) -# Append any auto-generated sources that are needed by sources listed in -# SRC_QSTR -SRC_QSTR_AUTO_DEPS += $(GEN_CDCINF_HEADER) +SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) $(GEN_PINS_SRC) # Making OBJ use an order-only dependency on the generated pins.h file # has the side effect of making the pins.h file before we actually compile @@ -672,20 +665,17 @@ $(OBJ): | $(GEN_PINS_HDR) $(HEADER_BUILD)/qstrdefs.generated.h: $(BOARD_DIR)/mpconfigboard.h # main.c can't be even preprocessed without $(GEN_CDCINF_HEADER) +# As main.c is in SRC_QSTR this will also ensure that GEN_CDCINF_HEADER +# will be run before QSTR extraction. main.c: $(GEN_CDCINF_HEADER) # Use a pattern rule here so that make will only call make-pins.py once to make # both pins_$(BOARD).c and pins.h -$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h $(HEADER_BUILD)/%_af_defs.h $(BUILD)/%_qstr.h: $(BOARD_DIR)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) +$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h $(HEADER_BUILD)/%_af_defs.h: $(BOARD_DIR)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) $(ECHO) "GEN $@" - $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE) \ - --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) --hdr-obj-decls \ - --qstr $(GEN_PINS_QSTR) --af-const $(GEN_PINS_AF_CONST) \ - --af-defs $(GEN_PINS_AF_DEFS) --af-defs-cmp-strings \ - --af-py $(GEN_PINS_AF_PY) > $(GEN_PINS_SRC) - -$(GEN_PINS_SRC:.c=.o): $(GEN_PINS_SRC) - $(call compile_c) + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv $(AF_FILE) --prefix $(PREFIX_FILE) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) \ + --output-af-const $(GEN_PINS_AF_CONST) --output-af-defs $(GEN_PINS_AF_DEFS) modmachine.c: $(GEN_PLLFREQTABLE_HDR) $(GEN_PLLFREQTABLE_HDR): $(PLLVALUES) | $(HEADER_BUILD) @@ -693,11 +683,9 @@ $(GEN_PLLFREQTABLE_HDR): $(PLLVALUES) | $(HEADER_BUILD) $(Q)$(PYTHON) $(PLLVALUES) -c -m $(CMSIS_MCU_LOWER) file:$(BOARD_DIR)/stm32$(MCU_SERIES)xx_hal_conf.h > $@ $(BUILD)/modstm.o: $(GEN_STMCONST_HDR) -# Use a pattern rule here so that make will only call make-stmconst.py once to -# make both modstm_const.h and modstm_qstr.h -$(HEADER_BUILD)/%_const.h $(BUILD)/%_qstr.h: $(CMSIS_MCU_HDR) make-stmconst.py | $(HEADER_BUILD) +$(HEADER_BUILD)/modstm_const.h: $(CMSIS_MCU_HDR) make-stmconst.py | $(HEADER_BUILD) $(ECHO) "GEN stmconst $@" - $(Q)$(PYTHON) make-stmconst.py --qstr $(GEN_STMCONST_QSTR) --mpz $(GEN_STMCONST_MPZ) $(CMSIS_MCU_HDR) > $(GEN_STMCONST_HDR) + $(Q)$(PYTHON) make-stmconst.py --mpz $(GEN_STMCONST_MPZ) $(CMSIS_MCU_HDR) > $(GEN_STMCONST_HDR) $(GEN_CDCINF_HEADER): $(GEN_CDCINF_FILE) $(FILE2H) | $(HEADER_BUILD) $(ECHO) "GEN $@" diff --git a/ports/stm32/adc.c b/ports/stm32/adc.c index 6bd0f4ce25b6d..ddb8a35703bb4 100644 --- a/ports/stm32/adc.c +++ b/ports/stm32/adc.c @@ -527,7 +527,7 @@ STATIC mp_obj_t adc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_ // STM32H5 has two ADC instances where some pins are only available on ADC1 or ADC2 (but not both). // Assume we're using a channel of ADC1. Can be overridden for ADC2 later in this function. ADC_TypeDef *adc = ADC1; - const pin_obj_t *const *pin_adc_table = pin_adc1; + const machine_pin_obj_t *const *pin_adc_table = pin_adc1; uint32_t num_adc_pins = MP_ARRAY_SIZE(pin_adc1); #endif uint32_t channel; @@ -535,7 +535,7 @@ STATIC mp_obj_t adc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_ if (mp_obj_is_int(pin_obj)) { channel = adc_get_internal_channel(mp_obj_get_int(pin_obj)); } else { - const pin_obj_t *pin = pin_find(pin_obj); + const machine_pin_obj_t *pin = pin_find(pin_obj); if ((pin->adc_num & PIN_ADC_MASK) == 0) { // No ADC function on the given pin. mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Pin(%q) doesn't have ADC capabilities"), pin->name); @@ -557,14 +557,14 @@ STATIC mp_obj_t adc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_ // If this channel corresponds to a pin then configure the pin in ADC mode. #if defined(STM32H5) if (channel < num_adc_pins) { - const pin_obj_t *pin = pin_adc_table[channel]; + const machine_pin_obj_t *pin = pin_adc_table[channel]; if (pin != NULL) { mp_hal_pin_config(pin, MP_HAL_PIN_MODE_ADC, MP_HAL_PIN_PULL_NONE, 0); } } #else if (channel < MP_ARRAY_SIZE(pin_adc_table)) { - const pin_obj_t *pin = pin_adc_table[channel]; + const machine_pin_obj_t *pin = pin_adc_table[channel]; if (pin != NULL) { mp_hal_pin_config(pin, MP_HAL_PIN_MODE_ADC, MP_HAL_PIN_PULL_NONE, 0); } @@ -862,7 +862,7 @@ void adc_init_all(pyb_adc_all_obj_t *adc_all, uint32_t resolution, uint32_t en_m // only initialise those channels that are selected with the en_mask if (en_mask & (1 << channel)) { // If this channel corresponds to a pin then configure the pin in ADC mode. - const pin_obj_t *pin = pin_adcall_table[channel]; + const machine_pin_obj_t *pin = pin_adcall_table[channel]; if (pin) { mp_hal_pin_config(pin, MP_HAL_PIN_MODE_ADC, MP_HAL_PIN_PULL_NONE, 0); } diff --git a/ports/stm32/boards/ADAFRUIT_F405_EXPRESS/pins.csv b/ports/stm32/boards/ADAFRUIT_F405_EXPRESS/pins.csv index 15e810e1ae546..7c5c7b62fabbf 100644 --- a/ports/stm32/boards/ADAFRUIT_F405_EXPRESS/pins.csv +++ b/ports/stm32/boards/ADAFRUIT_F405_EXPRESS/pins.csv @@ -1,5 +1,5 @@ -POWER,3.3V -GND,GND +#POWER,3.3V +#GND,GND USB_ID,PA10 USB_DM,PA11 USB_DP,PA12 diff --git a/ports/stm32/boards/ARDUINO_GIGA/pins.csv b/ports/stm32/boards/ARDUINO_GIGA/pins.csv index 91c5c6d58616b..56e63232908ce 100644 --- a/ports/stm32/boards/ARDUINO_GIGA/pins.csv +++ b/ports/stm32/boards/ARDUINO_GIGA/pins.csv @@ -176,7 +176,7 @@ UART6_TX,PG14 UART6_RX,PC7 -USB_DM,PA11 -USB_DP,PA12 -BOOT0,BOOT0 +#BOOT0,BOOT0 DAC1,PA4 DAC2,PA5 LED_RED,PI12 @@ -209,11 +209,11 @@ I2C4_SCL,PB6 -QSPI2_D1,PD12 -QSPI2_D2,PE2 -QSPI2_D3,PF6 --SPI1_NSS,NC +#-SPI1_NSS,NC -SPI1_SCK,PB3 -SPI1_MISO,PG9 -SPI1_MOSI,PD7 -SPI5_NSS,PK1 -SPI5_SCK,PH6 -SPI5_MISO,PJ11 --SPI5_MOSI,PJ10 \ No newline at end of file +-SPI5_MOSI,PJ10 diff --git a/ports/stm32/boards/ARDUINO_NICLA_VISION/pins.csv b/ports/stm32/boards/ARDUINO_NICLA_VISION/pins.csv index 8ff21e645331f..2838510ee3126 100644 --- a/ports/stm32/boards/ARDUINO_NICLA_VISION/pins.csv +++ b/ports/stm32/boards/ARDUINO_NICLA_VISION/pins.csv @@ -176,7 +176,7 @@ UART8_TX,PJ8 UART8_RX,PJ9 USB_DM,PA11 USB_DP,PA12 -BOOT0,BOOT0 +#BOOT0,BOOT0 OSCEN,PH1 DAC1,-PA4 DAC2,-PA5 diff --git a/ports/stm32/boards/ARDUINO_PORTENTA_H7/pins.csv b/ports/stm32/boards/ARDUINO_PORTENTA_H7/pins.csv index ea8710b25f848..4ac406fe3a743 100644 --- a/ports/stm32/boards/ARDUINO_PORTENTA_H7/pins.csv +++ b/ports/stm32/boards/ARDUINO_PORTENTA_H7/pins.csv @@ -199,7 +199,7 @@ UART8_RX,PJ9 -USB_HS_RST,PJ4 -USB_DM,PA11 -USB_DP,PA12 -BOOT0,BOOT0 +#BOOT0,BOOT0 OSCEN,PH1 DAC1,PA4 DAC2,-PA5 diff --git a/ports/stm32/boards/CERB40/pins.csv b/ports/stm32/boards/CERB40/pins.csv index cca0bc0536b51..a319089a66af7 100644 --- a/ports/stm32/boards/CERB40/pins.csv +++ b/ports/stm32/boards/CERB40/pins.csv @@ -1,5 +1,5 @@ -JP1,3.3V -JP2,GND +#JP1,3.3V +#JP2,GND JP3,PA8 JP4,PA13 JP5,PA7 @@ -12,13 +12,13 @@ JP11,PB9 JP12,PB3 JP13,PD2 JP14,PC12 -JP15,VBAT +#JP15,VBAT JP16,PB8 -JP17,Loader +#JP17,Loader JP18,PB7 JP19,PB6 JP20,PB5 -JP21,Reset +#JP21,Reset JP22,PC0 JP23,PC1 JP24,PC2 @@ -37,7 +37,7 @@ JP36,PC6 JP37,PC7 JP38,PC8 JP39,PC9 -JP40,VUSB +#JP40,VUSB UART1_TX,PA9 UART1_RX,PA10 UART3_TX,PD8 diff --git a/ports/stm32/boards/GARATRONIC_NADHAT_F405/pins.csv b/ports/stm32/boards/GARATRONIC_NADHAT_F405/pins.csv index 0a030e985c275..866716397d9af 100644 --- a/ports/stm32/boards/GARATRONIC_NADHAT_F405/pins.csv +++ b/ports/stm32/boards/GARATRONIC_NADHAT_F405/pins.csv @@ -10,18 +10,18 @@ X9,PB6 X10,PB7 X11,PC4 X12,PC5 -X13,Reset -X14,GND -X15,3.3V -X16,VIN +#X13,Reset +#X14,GND +#X15,3.3V +#X16,VIN X17,PB3 X18,PC13 X19,PC0 X20,PC1 X21,PC2 X22,PC3 -X23,A3.3V -X24,AGND +#X23,A3.3V +#X24,AGND Y1,PC6 Y2,PC7 Y3,PB8 @@ -35,9 +35,9 @@ Y10,PB11 Y11,PB0 Y12,PB1 Y13,PB2 -Y14,GND -Y15,3.3V -Y16,VIN +#Y14,GND +#Y15,3.3V +#Y16,VIN SW,PB3 LED_RED,PA13 LED_GREEN,PA14 diff --git a/ports/stm32/boards/GARATRONIC_PYBSTICK26_F411/pins.csv b/ports/stm32/boards/GARATRONIC_PYBSTICK26_F411/pins.csv index c52e65cf792c3..ecdbe99c0fd0a 100644 --- a/ports/stm32/boards/GARATRONIC_PYBSTICK26_F411/pins.csv +++ b/ports/stm32/boards/GARATRONIC_PYBSTICK26_F411/pins.csv @@ -1,32 +1,32 @@ -S1,3.3V -S2,VBUS +#S1,3.3V +#S2,VBUS S3,PB9 -S4,VIN +#S4,VIN S5,PB8 -S6,GND +#S6,GND S7,PB6 S8,PA2 -S9,GND +#S9,GND S10,PA3 S11,PB3 S12,PA0 S13,PB10 S13A,PC3 -S14,Reset +#S14,Reset S15,PB12 S15A,PC5 S16,PB13 S16A,PC6 -S17,GND +#S17,GND S18,PB14 S18A,PC7 S19,PA7 -S20,GND +#S20,GND S21,PB4 S22,PA10 S23,PA5 S24,PA15 -S25,GND +#S25,GND S26,PA4 SW,PC13 SW2,PB6 diff --git a/ports/stm32/boards/HYDRABUS/pins.csv b/ports/stm32/boards/HYDRABUS/pins.csv index 47e1f431398dd..5e1cf682dc8d2 100644 --- a/ports/stm32/boards/HYDRABUS/pins.csv +++ b/ports/stm32/boards/HYDRABUS/pins.csv @@ -44,7 +44,7 @@ PA10,PA10 PA11,PA11 PA12,PA12 PD2,PD2 -BOOT0,BOOT0 +#BOOT0,BOOT0 PA15,PA15 UART3_TX,PD8 UART3_RX,PD9 diff --git a/ports/stm32/boards/MIKROE_CLICKER2_STM32/pins.csv b/ports/stm32/boards/MIKROE_CLICKER2_STM32/pins.csv index c04d2b8c4ac86..60868ea0c9d22 100644 --- a/ports/stm32/boards/MIKROE_CLICKER2_STM32/pins.csv +++ b/ports/stm32/boards/MIKROE_CLICKER2_STM32/pins.csv @@ -22,8 +22,8 @@ MB2_RX,PD9 MB2_TX,PD8 MB2_SCL,PB10 MB2_SDA,PB11 -PIN1,VSYS -PIN2,GND +#PIN1,VSYS +#PIN2,GND PIN3,PC0 PIN4,PC1 PIN5,PC2 @@ -46,11 +46,11 @@ PIN21,PD10 PIN22,PB13 PIN23,PB14 PIN24,PB15 -PIN25,3.3V -PIN26,GND -PIN27,RST -PIN28,GND -PIN30,NC +#PIN25,3.3V +#PIN26,GND +#PIN27,RST +#PIN28,GND +#PIN30,NC PIN31,PB9 PIN32,PB8 PIN33,PE5 @@ -71,8 +71,8 @@ PIN47,PA1 PIN48,PA0 PIN49,PB10 PIN50,PB11 -PIN51,3.3V -PIN52,GND +#PIN51,3.3V +#PIN52,GND OSC32_OUT,PC15 OSC32_IN,PC14 VSENSE,PC5 diff --git a/ports/stm32/boards/NUCLEO_F412ZG/pins.csv b/ports/stm32/boards/NUCLEO_F412ZG/pins.csv index 31dcb99ed616c..bdfb64619b072 100644 --- a/ports/stm32/boards/NUCLEO_F412ZG/pins.csv +++ b/ports/stm32/boards/NUCLEO_F412ZG/pins.csv @@ -112,7 +112,7 @@ PG14,PG14 PG15,PG15 PH0,PH0 PH1,PH1 -SW,C13 -LED_RED,B14 -LED_GREEN,B0 -LED_BLUE,B7 +SW,PC13 +LED_RED,PB14 +LED_GREEN,PB0 +LED_BLUE,PB7 diff --git a/ports/stm32/boards/NUCLEO_F413ZH/pins.csv b/ports/stm32/boards/NUCLEO_F413ZH/pins.csv index 31dcb99ed616c..bdfb64619b072 100644 --- a/ports/stm32/boards/NUCLEO_F413ZH/pins.csv +++ b/ports/stm32/boards/NUCLEO_F413ZH/pins.csv @@ -112,7 +112,7 @@ PG14,PG14 PG15,PG15 PH0,PH0 PH1,PH1 -SW,C13 -LED_RED,B14 -LED_GREEN,B0 -LED_BLUE,B7 +SW,PC13 +LED_RED,PB14 +LED_GREEN,PB0 +LED_BLUE,PB7 diff --git a/ports/stm32/boards/NUCLEO_G0B1RE/pins.csv b/ports/stm32/boards/NUCLEO_G0B1RE/pins.csv index 9c03b1b68a64e..b2af175b123ec 100644 --- a/ports/stm32/boards/NUCLEO_G0B1RE/pins.csv +++ b/ports/stm32/boards/NUCLEO_G0B1RE/pins.csv @@ -25,7 +25,7 @@ PA1,PA1 PA10,PA10 PA11,PA11 PA12,PA12 -PA13,TMS +#PA13,TMS PA15,PA15 PA2,PA2 PA3,PA3 diff --git a/ports/stm32/boards/NUCLEO_G474RE/pins.csv b/ports/stm32/boards/NUCLEO_G474RE/pins.csv index 473a5e26bce28..30b23799527eb 100644 --- a/ports/stm32/boards/NUCLEO_G474RE/pins.csv +++ b/ports/stm32/boards/NUCLEO_G474RE/pins.csv @@ -1,7 +1,7 @@ A0,PA0 A1,PA1 A2,PA4 -A3,BPB0 +A3,PB0 A4,PC1 A5,PC0 D0,PC5 diff --git a/ports/stm32/boards/NUCLEO_L073RZ/pins.csv b/ports/stm32/boards/NUCLEO_L073RZ/pins.csv index 7386425acf81a..9ff62598f3149 100644 --- a/ports/stm32/boards/NUCLEO_L073RZ/pins.csv +++ b/ports/stm32/boards/NUCLEO_L073RZ/pins.csv @@ -28,7 +28,7 @@ SCK,PA5 MISO,PA6 MOSI,PA7 CS,PB6 -BOOT0,PF11 +#BOOT0,BOOT0 SWDIO,PA13 SWCLK,PA14 USER_B1,PC13 @@ -82,6 +82,3 @@ LED_GREEN,PA5 ,PC14 ,PC15 ,PD2 -,PF0 -,PF1 -,PF11 diff --git a/ports/stm32/boards/PYBLITEV10/pins.csv b/ports/stm32/boards/PYBLITEV10/pins.csv index 838587c1bcca0..4f5261c3f0418 100644 --- a/ports/stm32/boards/PYBLITEV10/pins.csv +++ b/ports/stm32/boards/PYBLITEV10/pins.csv @@ -10,18 +10,18 @@ X9,PB6 X10,PB7 X11,PC4 X12,PC5 -X13,Reset -X14,GND -X15,3.3V -X16,VIN +#X13,Reset +#X14,GND +#X15,3.3V +#X16,VIN X17,PB3 X18,PC13 X19,PC0 X20,PC1 X21,PC2 X22,PC3 -X23,A3.3V -X24,AGND +#X23,A3.3V +#X24,AGND Y1,PC6 Y2,PC7 Y3,PB10 @@ -34,10 +34,10 @@ Y9,PA8 Y10,PB8 Y11,PB0 Y12,PB1 -Y13,Reset -Y14,GND -Y15,3.3V -Y16,VIN +#Y13,Reset +#Y14,GND +#Y15,3.3V +#Y16,VIN SW,PB3 LED_BLUE,PB4 LED_RED,PA13 diff --git a/ports/stm32/boards/PYBV10/pins.csv b/ports/stm32/boards/PYBV10/pins.csv index cee80a1aa1cf9..dc3e48f138595 100644 --- a/ports/stm32/boards/PYBV10/pins.csv +++ b/ports/stm32/boards/PYBV10/pins.csv @@ -10,18 +10,18 @@ X9,PB6 X10,PB7 X11,PC4 X12,PC5 -X13,Reset -X14,GND -X15,3.3V -X16,VIN +#X13,Reset +#X14,GND +#X15,3.3V +#X16,VIN X17,PB3 X18,PC13 X19,PC0 X20,PC1 X21,PC2 X22,PC3 -X23,A3.3V -X24,AGND +#X23,A3.3V +#X24,AGND Y1,PC6 Y2,PC7 Y3,PB8 @@ -34,10 +34,10 @@ Y9,PB10 Y10,PB11 Y11,PB0 Y12,PB1 -Y13,Reset -Y14,GND -Y15,3.3V -Y16,VIN +#Y13,Reset +#Y14,GND +#Y15,3.3V +#Y16,VIN SW,PB3 LED_RED,PA13 LED_GREEN,PA14 diff --git a/ports/stm32/boards/PYBV11/pins.csv b/ports/stm32/boards/PYBV11/pins.csv index cee80a1aa1cf9..dc3e48f138595 100644 --- a/ports/stm32/boards/PYBV11/pins.csv +++ b/ports/stm32/boards/PYBV11/pins.csv @@ -10,18 +10,18 @@ X9,PB6 X10,PB7 X11,PC4 X12,PC5 -X13,Reset -X14,GND -X15,3.3V -X16,VIN +#X13,Reset +#X14,GND +#X15,3.3V +#X16,VIN X17,PB3 X18,PC13 X19,PC0 X20,PC1 X21,PC2 X22,PC3 -X23,A3.3V -X24,AGND +#X23,A3.3V +#X24,AGND Y1,PC6 Y2,PC7 Y3,PB8 @@ -34,10 +34,10 @@ Y9,PB10 Y10,PB11 Y11,PB0 Y12,PB1 -Y13,Reset -Y14,GND -Y15,3.3V -Y16,VIN +#Y13,Reset +#Y14,GND +#Y15,3.3V +#Y16,VIN SW,PB3 LED_RED,PA13 LED_GREEN,PA14 diff --git a/ports/stm32/boards/PYBV4/pins.csv b/ports/stm32/boards/PYBV4/pins.csv index cee80a1aa1cf9..dc3e48f138595 100644 --- a/ports/stm32/boards/PYBV4/pins.csv +++ b/ports/stm32/boards/PYBV4/pins.csv @@ -10,18 +10,18 @@ X9,PB6 X10,PB7 X11,PC4 X12,PC5 -X13,Reset -X14,GND -X15,3.3V -X16,VIN +#X13,Reset +#X14,GND +#X15,3.3V +#X16,VIN X17,PB3 X18,PC13 X19,PC0 X20,PC1 X21,PC2 X22,PC3 -X23,A3.3V -X24,AGND +#X23,A3.3V +#X24,AGND Y1,PC6 Y2,PC7 Y3,PB8 @@ -34,10 +34,10 @@ Y9,PB10 Y10,PB11 Y11,PB0 Y12,PB1 -Y13,Reset -Y14,GND -Y15,3.3V -Y16,VIN +#Y13,Reset +#Y14,GND +#Y15,3.3V +#Y16,VIN SW,PB3 LED_RED,PA13 LED_GREEN,PA14 diff --git a/ports/stm32/boards/STM32F439/pins.csv b/ports/stm32/boards/STM32F439/pins.csv index cc9443dea5f2d..5287dec097f38 100644 --- a/ports/stm32/boards/STM32F439/pins.csv +++ b/ports/stm32/boards/STM32F439/pins.csv @@ -44,7 +44,7 @@ PA10,PA10 PA11,PA11 PA12,PA12 PD2,PD2 -BOOT0,BOOT0 +#BOOT0,BOOT0 PA15,PA15 PA13,PA13 PA14,PA14 diff --git a/ports/stm32/boards/STM32H573I_DK/pins.csv b/ports/stm32/boards/STM32H573I_DK/pins.csv index 5672bc4922f4e..5317d4da61b4d 100644 --- a/ports/stm32/boards/STM32H573I_DK/pins.csv +++ b/ports/stm32/boards/STM32H573I_DK/pins.csv @@ -142,8 +142,8 @@ ,PI13 ,PI14 ,PI15 -LED1,G11 -LED2,G2 +LED1,PG11 +LED2,PG2 SW,PC13 UART3_TX,PB10 UART3_RX,PB11 diff --git a/ports/stm32/boards/STM32H7B3I_DK/pins.csv b/ports/stm32/boards/STM32H7B3I_DK/pins.csv index e005e38af70d0..68e8d1ac7b58b 100644 --- a/ports/stm32/boards/STM32H7B3I_DK/pins.csv +++ b/ports/stm32/boards/STM32H7B3I_DK/pins.csv @@ -144,8 +144,8 @@ ,PI15 DAC1,PA4 DAC2,PA5 -LED1,G11 -LED2,G2 +LED1,PG11 +LED2,PG2 SW,PC13 I2C1_SDA,PB9 I2C1_SCL,PB8 diff --git a/ports/stm32/boards/VCC_GND_F407VE/pins.csv b/ports/stm32/boards/VCC_GND_F407VE/pins.csv index f04d96771b05d..8d37e01b0d1b5 100644 --- a/ports/stm32/boards/VCC_GND_F407VE/pins.csv +++ b/ports/stm32/boards/VCC_GND_F407VE/pins.csv @@ -1,9 +1,9 @@ -P1_1,GND -P1_2,GND -P1_3,VBAT -P1_4,VCC_3V3 -P1_5,VIN_5V -P1_6,VIN_5V +#P1_1,GND +#P1_2,GND +#P1_3,VBAT +#P1_4,VCC_3V3 +#P1_5,VIN_5V +#P1_6,VIN_5V P1_7,PE0 P1_8,PE1 P1_9,PE2 @@ -84,12 +84,12 @@ P3_27,PB6 P3_28,PB7 P3_29,PB8 P3_30,PB9 -P3_31,GND -P3_32,GND -P3_33,VCC_3V3 -P3_34,VCC_3V3 -P3_35,GND -P3_36,GND +#P3_31,GND +#P3_32,GND +#P3_33,VCC_3V3 +#P3_34,VCC_3V3 +#P3_35,GND +#P3_36,GND DAC1,PA4 DAC2,PA5 BLUE_LED,PB9 diff --git a/ports/stm32/boards/VCC_GND_F407ZG/pins.csv b/ports/stm32/boards/VCC_GND_F407ZG/pins.csv index 780523a075f41..f992c9ae5e915 100644 --- a/ports/stm32/boards/VCC_GND_F407ZG/pins.csv +++ b/ports/stm32/boards/VCC_GND_F407ZG/pins.csv @@ -1,9 +1,9 @@ -P1_1,GND -P1_2,GND -P1_3,VBAT -P1_4,VCC_3V3 -P1_5,VIN_5V -P1_6,VIN_5V +#P1_1,GND +#P1_2,GND +#P1_3,VBAT +#P1_4,VCC_3V3 +#P1_5,VIN_5V +#P1_6,VIN_5V P1_7,PF2 P1_8,PF3 P1_9,PF4 @@ -40,8 +40,8 @@ P1_39,PG1 P1_40,PE7 P1_41,PE8 P1_42,PE9 -P1_43,GND -P1_44,GND +#P1_43,GND +#P1_44,GND P2_1,PG7 P2_2,PG6 P2_3,PG5 @@ -80,10 +80,10 @@ P3_9,PE3 P3_10,PE2 P3_11,PE1 P3_12,PE0 -P4_1,GND -P4_2,GND -P4_3,VCC_3V3 -P4_4,VCC_3V3 +#P4_1,GND +#P4_2,GND +#P4_3,VCC_3V3 +#P4_4,VCC_3V3 P4_5,PB9 P4_6,PB8 P4_7,PB7 @@ -122,8 +122,8 @@ P4_39,PC8 P4_40,PC7 P4_41,PC6 P4_42,PG8 -P4_43,GND -P4_44,GND +#P4_43,GND +#P4_44,GND DAC1,PA4 DAC2,PA5 SRAM_CS,PG10 diff --git a/ports/stm32/boards/make-pins.py b/ports/stm32/boards/make-pins.py index a3e6ee0669d01..31e7bdb0e2f29 100755 --- a/ports/stm32/boards/make-pins.py +++ b/ports/stm32/boards/make-pins.py @@ -1,59 +1,17 @@ #!/usr/bin/env python -""" -Generates pin source files based on an MCU alternate-function definition (eg -stm32f405_af.csv) and a board-specific pin definition file, pins.csv. -The pins.csv file can contain empty lines, comments (a line beginning with "#") -or pin definition lines. Pin definition lines must be of the form: - - board,cpu - -Where "board" is the user-facing name of the pin as specified by the particular -board layout and markings, and "cpu" is the corresponding name of the CPU/MCU -pin. - -The "board" entry may be absent if the CPU pin has no additional name, and both -entries may start with "-" to hide them from the corresponding Python dict of -pins, and hence hide them from the user (but they are still accessible in C). - -For example, take the following pins.csv file: - - X1,PA0 - -X2,PA1 - X3,-PA2 - -X4,-PA3 - ,PA4 - ,-PA5 - -The first row here configures: -- The CPU pin PA0 is labelled X1. -- The Python user can access both by the names Pin("X1") and Pin("A0"). -- The Python user can access both by the members Pin.board.X1 and Pin.cpu.A0. -- In C code they are available as pyb_pin_X1 and pin_A0. - -Prefixing the names with "-" hides them from the user. The following table -summarises the various possibilities: - - pins.csv entry | board name | cpu name | C board name | C cpu name - ---------------+------------+----------+--------------+----------- - X1,PA0 "X1" "A0" pyb_pin_X1 pin_A0 - -X2,PA1 - "A1" pyb_pin_X2 pin_A1 - X3,-PA2 "X3" - pyb_pin_X3 pin_A2 - -X4,-PA3 - - pyb_pin_X4 pin_A3 - ,PA4 - "A4" - pin_A4 - ,-PA5 - - - pin_A5 - -""" +from collections import defaultdict, namedtuple +import os +import re +import sys -from __future__ import print_function +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../tools")) +import boardgen -import argparse -import sys -import csv # Must have matching entries in AF_FN_* enum in ../pin_defs_stm32.h -SUPPORTED_FN = { +SUPPORTED_AF = { "TIM": ["CH1", "CH2", "CH3", "CH4", "CH1N", "CH2N", "CH3N", "CH1_ETR", "ETR", "BKIN"], "I2C": ["SDA", "SCL"], "I2S": ["CK", "MCK", "SD", "WS", "EXTSD"], @@ -65,6 +23,8 @@ "CAN": ["TX", "RX"], } +# Only make these AFs available if we actually enable those peripherals (by +# assigning default pins in mpconfigboard.h). CONDITIONAL_VAR = { "I2C": "MICROPY_HW_I2C{num}_SCL", "I2S": "MICROPY_HW_I2S{num}", @@ -76,575 +36,342 @@ "CAN": "MICROPY_HW_CAN{num}_TX", } +# Contains the result of parsing an cell from af.csv. +PinAf = namedtuple( + "PinAf", + [ + "af_idx", # int, 0-15 + "af_fn", # e.g. "I2C" + "af_unit", # int, e.g. 1 (for I2C1) or None (for OTG_HS_ULPI_CK) + "af_pin", # e.g. "SDA" + "af_supported", # bool, see table above + "af_name", # e.g. "I2C1_SDA" + ], +) + + +class Stm32Pin(boardgen.Pin): + def __init__(self, cpu_pin_name): + super().__init__(cpu_pin_name) + + # P (already verified by validate_cpu_pin_name). + self._port = cpu_pin_name[1] + self._pin = int(cpu_pin_name[2:]) + + # List of PinAf instances. + self._afs = [] + + # The channel that this pin uses on each of the listed units. + self._adc_channel = 0 + # e.g. ADC123 -> [1,2,3] + self._adc_units = [] + + # Called for each AF defined in the csv file for this pin. e.g. "SPI2_NSS/I2S2_WS" + def add_af(self, af_idx, af_name, af): + if af_idx > 16: + # The AF csv files should not have more than 16 AFs + 1 ADC list. + return -def parse_port_pin(name_str): - """Parses a string and returns a (port-num, pin-num) tuple.""" - if len(name_str) < 3: - raise ValueError("Expecting pin name to be at least 3 characters.") - if name_str[0] != "P": - raise ValueError("Expecting pin name to start with P") - if name_str[1] < "A" or name_str[1] > "K": - raise ValueError("Expecting pin port to be between A and K") - port = ord(name_str[1]) - ord("A") - pin_str = name_str[2:] - if not pin_str.isdigit(): - raise ValueError("Expecting numeric pin number.") - return (port, int(pin_str)) - - -def split_name_num(name_num): - num = None - for num_idx in range(len(name_num) - 1, -1, -1): - if not name_num[num_idx].isdigit(): - name = name_num[0 : num_idx + 1] - num_str = name_num[num_idx + 1 :] - if len(num_str) > 0: - num = int(num_str) - break - return name, num - - -def conditional_var(name_num): - # Try the specific instance first. For example, if name_num is UART4_RX - # then try UART4 first, and then try UART second. - name, num = split_name_num(name_num) - var = [] - if name in CONDITIONAL_VAR: - var.append(CONDITIONAL_VAR[name].format(num=num)) - if name_num in CONDITIONAL_VAR: - var.append(CONDITIONAL_VAR[name_num]) - return var - - -def print_conditional_if(cond_var, file=None): - if cond_var: - cond_str = [] - for var in cond_var: - if var.find("ENABLE") >= 0: - cond_str.append("(defined({0}) && {0})".format(var)) - else: - cond_str.append("defined({0})".format(var)) - print("#if " + " || ".join(cond_str), file=file) - - -def print_conditional_endif(cond_var, file=None): - if cond_var: - print("#endif", file=file) - - -class AlternateFunction(object): - """Holds the information associated with a pins alternate function.""" - - def __init__(self, idx, af_str): - self.idx = idx - # Special case. We change I2S2ext_SD into I2S2_EXTSD so that it parses - # the same way the other peripherals do. - af_str = af_str.replace("ext_", "_EXT") - - self.af_str = af_str - - self.func = "" - self.fn_num = None - self.pin_type = "" - self.supported = False - - af_words = af_str.split("_", 1) - self.func, self.fn_num = split_name_num(af_words[0]) - if len(af_words) > 1: - self.pin_type = af_words[1] - if self.func in SUPPORTED_FN: - pin_types = SUPPORTED_FN[self.func] - if self.pin_type in pin_types: - self.supported = True - - def is_supported(self): - return self.supported - - def ptr(self): - """Returns the numbered function (i.e. USART6) for this AF.""" - if self.fn_num is None: - return self.func - return "{:s}{:d}".format(self.func, self.fn_num) - - def mux_name(self): - return "AF{:d}_{:s}".format(self.idx, self.ptr()) - - def print(self): - """Prints the C representation of this AF.""" - cond_var = None - if self.supported: - cond_var = conditional_var("{}{}".format(self.func, self.fn_num)) - print_conditional_if(cond_var) - print(" AF", end="") - else: - print(" //", end="") - fn_num = self.fn_num - if fn_num is None: - fn_num = 0 - print( - "({:2d}, {:8s}, {:2d}, {:10s}, {:8s}), // {:s}".format( - self.idx, self.func, fn_num, self.pin_type, self.ptr(), self.af_str - ) - ) - print_conditional_endif(cond_var) - - def qstr_list(self): - return [self.mux_name()] - - -class Pin(object): - """Holds the information associated with a pin.""" - - def __init__(self, port, pin): - self.port = port - self.pin = pin - self.alt_fn = [] - self.alt_fn_count = 0 - self.adc_num = 0 - self.adc_channel = 0 - self.board_pin = False + # AF 16 is the ADC, which is special cased below. + if af_idx == 16: + if af_name != "ADC": + raise boardgen.PinGeneratorError( + "Invalid AF column name '{:s}' for ADC column with index {:d}.".format( + af_name, af_idx + ) + ) + return self.add_adc(af) - def port_letter(self): - return chr(self.port + ord("A")) + if af_name != "AF{:d}".format(af_idx): + raise boardgen.PinGeneratorError( + "Invalid AF column name '{:s}' for AF index {:d}.".format(af_name, af_idx) + ) - def cpu_pin_name(self): - return "{:s}{:d}".format(self.port_letter(), self.pin) + # If there is a slash, then the slash separates multiple aliases for + # the same alternate function. + for af_name in af.split("/"): + if not af_name.strip(): + continue + # This matches _, with consideration for: + # - fn may contain a digit (e.g. I2C) + # - there may be an "ext" after the unit + m = re.match("([A-Z0-9]+[A-Z])(([0-9]+)(ext)?)?(_(.*))?", af_name) + if not m: + raise boardgen.PinGeneratorError( + "Invalid af '{:s}' for pin '{:s}'".format(af_name, self.name()) + ) + else: + af_fn = m.group(1) + af_unit = int(m.group(3)) if m.group(3) is not None else None + af_ext = m.group(4) == "ext" + af_pin = m.group(6) - def is_board_pin(self): - return self.board_pin + # Special case. We change I2S2ext_SD into I2S2_EXTSD so that it parses + # the same way the other peripherals do. + if af_ext: + af_pin = "EXT" + af_pin - def set_is_board_pin(self): - self.board_pin = True + af_supported = af_fn in SUPPORTED_AF and af_pin in SUPPORTED_AF[af_fn] - def parse_adc(self, adc_str): - if adc_str[:3] != "ADC": - return - adc, channel = None, None + self._afs.append(PinAf(af_idx, af_fn, af_unit, af_pin, af_supported, af_name)) - if adc_str.find("_INP") != -1: - # STM32H7xx, entries have the form: ADCxx_IN[PN]yy/... - sep = "_INP" - else: - # all other MCUs, entries have the form: ADCxx_INyy - sep = "_IN" - - # Pick the entry with the most ADC peripherals - for ss in adc_str.split("/"): - if ss.find(sep) != -1: - a, c = ss.split("_") - if adc is None or len(a) > len(adc): - adc, channel = a, c - if adc is None: + # ADCs are slash separated "ADC_", where unit=1,2,3,4,5 and mode=IN,INN,INP + def add_adc(self, adc): + if not adc.strip(): return - channel = channel[len(sep) - 1 :] - - for idx in range(3, len(adc)): - adc_num = int(adc[idx]) # 1, 2, or 3 - self.adc_num |= 1 << (adc_num - 1) - self.adc_channel = int(channel) - def parse_af(self, af_idx, af_strs_in): - if len(af_strs_in) == 0: - return - # If there is a slash, then the slash separates 2 aliases for the - # same alternate function. - af_strs = af_strs_in.split("/") - for af_str in af_strs: - alt_fn = AlternateFunction(af_idx, af_str) - self.alt_fn.append(alt_fn) - if alt_fn.is_supported(): - self.alt_fn_count += 1 - - def alt_fn_name(self, null_if_0=False): - if null_if_0 and self.alt_fn_count == 0: - return "NULL" - return "pin_{:s}_af".format(self.cpu_pin_name()) - - def adc_num_str(self): - str = "" - for adc_num in range(1, 4): - if self.adc_num & (1 << (adc_num - 1)): - if len(str) > 0: - str += " | " - str += "PIN_ADC" - str += chr(ord("0") + adc_num) - if len(str) == 0: - str = "0" - return str - - def print(self): - if self.alt_fn_count == 0: - print("// ", end="") - print("const pin_af_obj_t {:s}[] = {{".format(self.alt_fn_name())) - for alt_fn in self.alt_fn: - alt_fn.print() - if self.alt_fn_count == 0: - print("// ", end="") - print("};") - print("") - print( - "const pin_obj_t pin_{:s}_obj = PIN({:s}, {:d}, {:s}, {:s}, {:d});".format( - self.cpu_pin_name(), - self.port_letter(), - self.pin, - self.alt_fn_name(null_if_0=True), - self.adc_num_str(), - self.adc_channel, - ) + # TODO: This needs to be improved to support the case where a pin can + # be the P for one channel, and the N for a different channel. + # e.g. "ADC123_INP12/ADC123_INN11". + for adc_name in adc.split("/"): + if adc_name.startswith("C_"): + # Currently unsupported, H7 dual-pad. The C_ADC entries should + # only be available directly from machine.ADC (not via the pin + # object). + continue + m = re.match("ADC([1-5]+)_(IN[NP]?)([0-9]+)$", adc_name) + if not m: + raise boardgen.PinGeneratorError( + "Invalid adc '{:s}' for pin '{:s}'".format(adc_name, self.name()) + ) + adc_units = [int(x) for x in m.group(1)] + _adc_mode = m.group(2) + adc_channel = int(m.group(3)) + + # Pick the entry with the most ADC units, e.g. "ADC1_INP16/ADC12_INN1/ADC12_INP0" --> "ADC12_INN1". + if len(adc_units) > len(self._adc_units): + self._adc_units = adc_units + self._adc_channel = adc_channel + + # STM32-specific behavior, strip the "P" from the start of the name when emitting this pin. + # e.g. the #define is pin_A11 not pin_PA11. Fortunately we don't have to special case this + # as there are no places where emit the full "PA11" name. + def name(self): + return self._cpu_pin_name[1:] + + # Use the PIN() macro defined in stm32f4xx_prefix.c for defining the pin + # objects. + def definition(self): + # Generate bitfield of supported ADC units where lsb is unit 1 (e.g. [1,3] --> 0b101). + adc_units_bitfield = ( + " | ".join("PIN_ADC{}".format(unit) for unit in self._adc_units) or "0" ) - print("") - - def print_header(self, hdr_file): - n = self.cpu_pin_name() - hdr_file.write("extern const pin_obj_t pin_{:s}_obj;\n".format(n)) - hdr_file.write("#define pin_{:s} (&pin_{:s}_obj)\n".format(n, n)) - if self.alt_fn_count > 0: - hdr_file.write("extern const pin_af_obj_t pin_{:s}_af[];\n".format(n)) - - def qstr_list(self): - result = [] - for alt_fn in self.alt_fn: - if alt_fn.is_supported(): - result += alt_fn.qstr_list() - return result - - -class NamedPin(object): - def __init__(self, name, pin): - if name.startswith("-"): - self._is_hidden = True - self._name = name[1:] - else: - self._is_hidden = False - self._name = name - self._pin = pin - def set_hidden(self, value): - self._is_hidden = value + # PIN(p_port, p_pin, p_af, p_adc_num, p_adc_channel) + return "PIN({:s}, {:d}, pin_{:s}_af, {:s}, {:d})".format( + self._port, self._pin, self.name(), adc_units_bitfield, self._adc_channel + ) - def is_hidden(self): - return self._is_hidden + # This will be called at the start of the output (after the prefix). Use + # it to emit the af objects (via the AF() macro). + def print_source(self, out_source): + print(file=out_source) + print("const pin_af_obj_t pin_{:s}_af[] = {{".format(self.name()), file=out_source) + for af in self._afs: + if af.af_fn in CONDITIONAL_VAR: + print( + " #if defined({:s})".format( + CONDITIONAL_VAR[af.af_fn].format(num=af.af_unit) + ), + file=out_source, + ) + if af.af_supported: + print(" ", end="", file=out_source) + else: + print(" // ", end="", file=out_source) + # AF(af_idx, af_fn, af_unit, af_type, af_ptr) + print( + "AF({:d}, {:s}, {:d}, {:s}, {:s}{:s}), // {:s}".format( + af.af_idx, + af.af_fn, + af.af_unit or 0, + af.af_pin or "NONE", + af.af_fn, + "" if af.af_unit is None else str(af.af_unit), + af.af_name, + ), + file=out_source, + ) + if af.af_fn in CONDITIONAL_VAR: + print(" #endif", file=out_source) + print("};", file=out_source) - def pin(self): - return self._pin + # STM32 cpu names must be "P". + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + boardgen.Pin.validate_cpu_pin_name(cpu_pin_name) - def name(self): - return self._name + if not re.match("P[A-K][0-9]+$", cpu_pin_name): + raise boardgen.PinGeneratorError("Invalid cpu pin name '{}'".format(cpu_pin_name)) -class Pins(object): +class Stm32PinGenerator(boardgen.PinGenerator): def __init__(self): - self.cpu_pins = [] # list of NamedPin objects - self.board_pins = [] # list of NamedPin objects - self.adc_table_size = {} # maps ADC number X to size of pin_adcX table - - def find_pin(self, port_num, pin_num): - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.port == port_num and pin.pin == pin_num: - return named_pin - - def parse_af_file(self, filename, pinname_col, af_col): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - try: - (port_num, pin_num) = parse_port_pin(row[pinname_col]) - except: - continue - pin = Pin(port_num, pin_num) - for af_idx in range(af_col, len(row)): - if af_idx < af_col + 16: - pin.parse_af(af_idx - af_col, row[af_idx]) - elif af_idx == af_col + 16: - pin.parse_adc(row[af_idx]) - self.cpu_pins.append(NamedPin(pin.cpu_pin_name(), pin)) - - def parse_board_file(self, filename): - with open(filename, "r") as csvfile: - rows = csv.reader(csvfile) - for row in rows: - if len(row) == 0 or row[0].startswith("#"): - # Skip empty lines, and lines starting with "#" - continue - if len(row) != 2: - raise ValueError("Expecting two entries in a row") - - cpu_pin_name = row[1] - cpu_pin_hidden = False - if cpu_pin_name.startswith("-"): - cpu_pin_name = cpu_pin_name[1:] - cpu_pin_hidden = True - try: - (port_num, pin_num) = parse_port_pin(cpu_pin_name) - except: - continue - named_pin = self.find_pin(port_num, pin_num) - if named_pin: - named_pin.set_hidden(cpu_pin_hidden) - pin = named_pin.pin() - pin.set_is_board_pin() - if row[0]: # Only add board pins that have a name - self.board_pins.append(NamedPin(row[0], pin)) - - def print_named(self, label, named_pins): - print( - "STATIC const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label) + # Use custom pin type above, and also enable the --af-csv argument so + # that add_af gets called on each pin. + super().__init__( + pin_type=Stm32Pin, + enable_af=True, ) - for named_pin in named_pins: - pin = named_pin.pin() - if pin.is_board_pin() and not named_pin.is_hidden(): - print( - " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(&pin_{:s}_obj) }},".format( - named_pin.name(), pin.cpu_pin_name() + + # STM32-specific behavior, we use pin_A0 for the cpu names, but + # pyb_pin_X11 for the board names. + def board_name_define_prefix(self): + return "pyb_" + + # Override the default implementation just to change the default arguments + # (extra header row, skip first column). + def parse_af_csv(self, filename): + return super().parse_af_csv(filename, header_rows=2, pin_col=1, af_col=2) + + # Find which ADCs are used on this chip and on how many pins and the + # maximum channel number for each. + def count_adc_pins(self): + adc_units = defaultdict(lambda: (0, 0)) + for pin in self._pins: # All pins + for unit in pin._adc_units: + num, max_channel = adc_units[unit] + if pin._available: + adc_units[unit] = num + 1, max(max_channel, pin._adc_channel) + return adc_units.items() + + # Print table of pins for each ADC (indexed by channel). + def print_adcs(self, out_source): + for adc_unit, (num_pins, max_channel) in self.count_adc_pins(): + print(file=out_source) + print( + "const machine_pin_obj_t * const pin_adc{:d}[{:d}] = {{".format( + adc_unit, max_channel + 1 + ), + file=out_source, + ) + # Don't include pins that weren't in pins.csv. + for pin in self.available_pins(): + if adc_unit in pin._adc_units: + print( + " [{:d}] = {:s},".format(pin._adc_channel, self._cpu_pin_pointer(pin)), + file=out_source, ) - ) - print("};") - print( - "MP_DEFINE_CONST_DICT(pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format( - label, label + print("};", file=out_source) + + # Print externs for the adc pin tables. + def print_adc_externs(self, out_source): + print(file=out_source) + for adc_unit, (num_pins, max_channel) in self.count_adc_pins(): + print( + "extern const machine_pin_obj_t * const pin_adc{:d}[{:d}];".format( + adc_unit, max_channel + 1 + ), + file=out_source, ) - ) - def print(self): - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - pin.print() - self.print_named("cpu", self.cpu_pins) - print("") - self.print_named("board", self.board_pins) - - def print_adc(self, adc_num): - adc_pins = {} - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if ( - pin.is_board_pin() - and not named_pin.is_hidden() - and (pin.adc_num & (1 << (adc_num - 1))) - ): - adc_pins[pin.adc_channel] = pin - if adc_pins: - table_size = max(adc_pins) + 1 + # Append ADC definitions to the end of the source output. + def print_source(self, out_source): + super().print_source(out_source) + self.print_adcs(out_source) + + # Append ADC externs to the end of the header output, and don't include + # externs in mboot mode. + def print_header(self, out_header): + if self.args.mboot_mode: + self.print_defines(out_header, cpu=False) else: - # If ADCx pins are hidden, print an empty table to prevent linker errors. - table_size = 0 - self.adc_table_size[adc_num] = table_size - print("") - print("const pin_obj_t * const pin_adc{:d}[{:d}] = {{".format(adc_num, table_size)) - for channel in range(table_size): - if channel in adc_pins: - obj = "&pin_{:s}_obj".format(adc_pins[channel].cpu_pin_name()) - else: - obj = "NULL" - print(" [{:d}] = {},".format(channel, obj)) - print("};") - - def print_header(self, hdr_filename, obj_decls): - with open(hdr_filename, "wt") as hdr_file: - if obj_decls: - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - pin.print_header(hdr_file) - for adc_num, table_size in self.adc_table_size.items(): - hdr_file.write( - "extern const pin_obj_t * const pin_adc{:d}[{:d}];\n".format( - adc_num, table_size - ) + super().print_header(out_header) + self.print_adc_externs(out_header) + + # This is a set of map entries `MP_QSTR_AF_` -> `GPIO_AF_` + # that become part of the locals dict of machine.Pin. + def print_af_const(self, out_af_const): + # Extract all unique "AF_" values. + names = set() + for pin in self.available_pins(): + for af in pin._afs: + if not af.af_supported: + continue + key = ( + "AF{:d}_{:s}{:d}".format(af.af_idx, af.af_fn, af.af_unit), + af.af_fn, + af.af_unit, + ) + names.add(key) + + # Generate the table. + for key in sorted(names): + name, af_fn, af_unit = key + if af_fn in CONDITIONAL_VAR: + print( + " #if defined({:s})".format(CONDITIONAL_VAR[af_fn].format(num=af_unit)), + file=out_af_const, + ) + print( + " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_INT(GPIO_{:s}) }},".format(name, name), + file=out_af_const, + ) + if af_fn in CONDITIONAL_VAR: + print(" #endif", file=out_af_const) + + # Output macros to compile-time match a pin object to its AF. See + # mp_hal_pin_config_alt_static and mp_hal_pin_config_alt_static_speed in + # pin_static_af.h. + def print_af_defs(self, out_af_defs): + # Get the set of unique "_" (e.g. I2C1_SDA) and which + # pins can be used for each. + af_defs = defaultdict(list) + for pin in self._pins: + for af in pin._afs: + key = af.af_fn, af.af_unit, af.af_pin + af_defs[key].append((pin, af.af_idx)) + + # Emit a macro for each that will match a pin object to the + # corresponding af index for that pin doing that function. + for key, pins in af_defs.items(): + af_fn, af_unit, af_pin = key + print(file=out_af_defs) + print( + "#define STATIC_AF_{:s}{:s}_{:s}(pin_obj) ( \\".format( + af_fn, "" if af_unit is None else str(af_unit), af_pin or "NULL" + ), + file=out_af_defs, + ) + for pin, af_idx in pins: + if self.args.mboot_mode: + print( + " ((pin_obj) == (pin_{:s})) ? ({:d}) : \\".format(pin.name(), af_idx), + file=out_af_defs, ) - # provide #define's mapping board to cpu name - for named_pin in self.board_pins: - hdr_file.write( - "#define pyb_pin_{:s} pin_{:s}\n".format( - named_pin.name(), named_pin.pin().cpu_pin_name() + else: + # Match either "(pin_A11_obj)" (if using pin_A11 or + # pyb_pin_X11) or "((pin_A11_obj))" (if going via another + # macro e.g. MICROPY_HW_QSPIFLASH_CS). + # TODO: Why do we need do do string matching? (i.e. why can't the mboot behavior be used always?). + print( + ' ((strcmp( #pin_obj , "(&pin_{:s}_obj)") & strcmp( #pin_obj , "((&pin_{:s}_obj))")) == 0) ? ({:d}) : \\'.format( + pin.name(), pin.name(), af_idx + ), + file=out_af_defs, ) - ) + print(" (0xffffffffffffffffULL))", file=out_af_defs) - def print_qstr(self, qstr_filename): - with open(qstr_filename, "wt") as qstr_file: - qstr_set = set([]) - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - qstr_set |= set(pin.qstr_list()) - qstr_set |= set([named_pin.name()]) - for named_pin in self.board_pins: - if not named_pin.is_hidden(): - qstr_set |= set([named_pin.name()]) - for qstr in sorted(qstr_set): - cond_var = None - if qstr.startswith("AF"): - af_words = qstr.split("_") - cond_var = conditional_var(af_words[1]) - print_conditional_if(cond_var, file=qstr_file) - print("Q({})".format(qstr), file=qstr_file) - print_conditional_endif(cond_var, file=qstr_file) - - def print_af_hdr(self, af_const_filename): - with open(af_const_filename, "wt") as af_const_file: - af_hdr_set = set([]) - mux_name_width = 0 - for named_pin in self.cpu_pins: - pin = named_pin.pin() - if pin.is_board_pin(): - for af in pin.alt_fn: - if af.is_supported(): - mux_name = af.mux_name() - af_hdr_set |= set([mux_name]) - if len(mux_name) > mux_name_width: - mux_name_width = len(mux_name) - for mux_name in sorted(af_hdr_set): - af_words = mux_name.split("_") # ex mux_name: AF9_I2C2 - cond_var = conditional_var(af_words[1]) - print_conditional_if(cond_var, file=af_const_file) - key = "MP_ROM_QSTR(MP_QSTR_{}),".format(mux_name) - val = "MP_ROM_INT(GPIO_{})".format(mux_name) - print(" { %-*s %s }," % (mux_name_width + 26, key, val), file=af_const_file) - print_conditional_endif(cond_var, file=af_const_file) - - def print_af_defs(self, af_defs_filename, cmp_strings): - with open(af_defs_filename, "wt") as af_defs_file: - STATIC_AF_TOKENS = {} - for named_pin in self.cpu_pins: - for af in named_pin.pin().alt_fn: - func = "%s%d" % (af.func, af.fn_num) if af.fn_num else af.func - pin_type = (af.pin_type or "NULL").split("(")[0] - tok = "#define STATIC_AF_%s_%s(pin_obj) ( \\" % (func, pin_type) - if tok not in STATIC_AF_TOKENS: - STATIC_AF_TOKENS[tok] = [] - if cmp_strings: - pin_name = named_pin.pin().cpu_pin_name() - cmp_str = ( - ' ((strcmp( #pin_obj , "(&pin_%s_obj)") ' - ' & strcmp( #pin_obj , "((&pin_%s_obj))")) == 0) ? (%d) : \\' - % (pin_name, pin_name, af.idx) - ) - else: - cmp_str = " ((pin_obj) == (pin_%s)) ? (%d) : \\" % ( - named_pin.pin().cpu_pin_name(), - af.idx, - ) - STATIC_AF_TOKENS[tok].append(cmp_str) - - for tok, pins in STATIC_AF_TOKENS.items(): - print(tok, file=af_defs_file) - print("\n".join(sorted(pins)), file=af_defs_file) - print(" (0xffffffffffffffffULL))\n", file=af_defs_file) - - def print_af_py(self, af_py_filename): - with open(af_py_filename, "wt") as af_py_file: - print("PINS_AF = (", file=af_py_file) - for named_pin in self.board_pins: - if named_pin.is_hidden(): - continue - print(" ('%s', " % named_pin.name(), end="", file=af_py_file) - for af in named_pin.pin().alt_fn: - if af.is_supported(): - print("(%d, '%s'), " % (af.idx, af.af_str), end="", file=af_py_file) - print("),", file=af_py_file) - print(")", file=af_py_file) - - -def main(): - parser = argparse.ArgumentParser( - prog="make-pins.py", - usage="%(prog)s [options] [command]", - description="Generate board specific pin file", - ) - parser.add_argument( - "-a", - "--af", - dest="af_filename", - help="Specifies the alternate function file for the chip", - default="stm32f4xx_af.csv", - ) - parser.add_argument( - "--af-const", - dest="af_const_filename", - help="Specifies header file for alternate function constants.", - default="build/pins_af_const.h", - ) - parser.add_argument( - "--af-py", - dest="af_py_filename", - help="Specifies the filename for the python alternate function mappings.", - default="build/pins_af.py", - ) - parser.add_argument( - "--af-defs", - dest="af_defs_filename", - help="Specifies the filename for the alternate function defines.", - default="build/pins_af_defs.h", - ) - parser.add_argument( - "--af-defs-cmp-strings", - dest="af_defs_cmp_strings", - help="Whether to compare pin name strings for the alternate function defines instead of object values", - action="store_true", - ) - parser.add_argument( - "-b", - "--board", - dest="board_filename", - help="Specifies the board file", - ) - parser.add_argument( - "-p", - "--prefix", - dest="prefix_filename", - help="Specifies beginning portion of generated pins file", - default="stm32f4xx_prefix.c", - ) - parser.add_argument( - "-q", - "--qstr", - dest="qstr_filename", - help="Specifies name of generated qstr header file", - default="build/pins_qstr.h", - ) - parser.add_argument( - "-r", - "--hdr", - dest="hdr_filename", - help="Specifies name of generated pin header file", - default="build/pins.h", - ) - parser.add_argument( - "--hdr-obj-decls", - dest="hdr_obj_decls", - help="Whether to include declarations for pin objects in pin header file", - action="store_true", - ) - args = parser.parse_args(sys.argv[1:]) - - pins = Pins() - - print("// This file was automatically generated by make-pins.py") - print("//") - if args.af_filename: - print("// --af {:s}".format(args.af_filename)) - pins.parse_af_file(args.af_filename, 1, 2) - - if args.board_filename: - print("// --board {:s}".format(args.board_filename)) - pins.parse_board_file(args.board_filename) - - if args.prefix_filename: - print("// --prefix {:s}".format(args.prefix_filename)) - print("") - with open(args.prefix_filename, "r") as prefix_file: - print(prefix_file.read()) - pins.print() - for i in range(1, 4): - pins.print_adc(i) - pins.print_header(args.hdr_filename, args.hdr_obj_decls) - pins.print_qstr(args.qstr_filename) - pins.print_af_hdr(args.af_const_filename) - pins.print_af_py(args.af_py_filename) - pins.print_af_defs(args.af_defs_filename, args.af_defs_cmp_strings) + # Additional stm32-specific outputs that will be written in + # generate_extra_files(). + def extra_args(self, parser): + parser.add_argument("--output-af-const") + parser.add_argument("--output-af-defs") + + # In mboot mode the af-defs use object rather than string comparison, + # and we don't include externs in the header file. + parser.add_argument("--mboot-mode", action="store_true") + + # Called in main() after everything else is done to write additional files. + def generate_extra_files(self): + if self.args.output_af_const: + with open(self.args.output_af_const, "w") as out_af_const: + self.print_af_const(out_af_const) + + if self.args.output_af_defs: + with open(self.args.output_af_defs, "w") as out_af_defs: + self.print_af_defs(out_af_defs) if __name__ == "__main__": - main() + Stm32PinGenerator().main() diff --git a/ports/stm32/boards/stm32f091_af.csv b/ports/stm32/boards/stm32f091_af.csv index 8074fd22b7131..5e44697776b13 100644 --- a/ports/stm32/boards/stm32f091_af.csv +++ b/ports/stm32/boards/stm32f091_af.csv @@ -1,90 +1,90 @@ -Port,Pin,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,,,,,,,,, -,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,,,,,,,,,ADC -PortA,PA0,,USART2_CTS,TIM2_CH1_ETR,TSC_G1_IO1,USART4_TX,,,COMP1_OUT,,,,,,,,,ADC1_IN0 -PortA,PA1,EVENTOUT,USART2_RTS,TIM2_CH2,TSC_G1_IO2,USART4_RX,TIM15_CH1N,,,,,,,,,,,ADC1_IN1 -PortA,PA2,TIM15_CH1,USART2_TX,TIM2_CH3,TSC_G1_IO3,,,,COMP2_OUT,,,,,,,,,ADC1_IN2 -PortA,PA3,TIM15_CH2,USART2_RX,TIM2_CH4,TSC_G1_IO4,,,,,,,,,,,,,ADC1_IN3 -PortA,PA4,SPI1_NSS/I2S1_WS,USART2_CK,,TSC_G2_IO1,TIM14_CH1,USART6_TX,,,,,,,,,,,ADC1_IN4 -PortA,PA5,SPI1_SCK/I2S1_CK,CEC,TIM2_CH1_ETR,TSC_G2_IO2,,USART6_RX,,,,,,,,,,,ADC1_IN5 -PortA,PA6,SPI1_MISO/I2S1_MCK,TIM3_CH1,TIM1_BKIN,TSC_G2_IO3,USART3_CTS,TIM16_CH1,EVENTOUT,COMP1_OUT,,,,,,,,,ADC1_IN6 -PortA,PA7,SPI1_MOSI/I2S1_SD,TIM3_CH2,TIM1_CH1N,TSC_G2_IO4,TIM14_CH1,TIM17_CH1,EVENTOUT,COMP2_OUT,,,,,,,,,ADC1_IN7 -PortA,PA8,MCO,USART1_CK,TIM1_CH1,EVENTOUT,CRS_SYNC,,,,,,,,,,,, -PortA,PA9,TIM15_BKIN,USART1_TX,TIM1_CH2,TSC_G4_IO1,I2C1_SCL,MCO,,,,,,,,,,, -PortA,PA10,TIM17_BKIN,USART1_RX,TIM1_CH3,TSC_G4_IO2,I2C1_SDA,,,,,,,,,,,, -PortA,PA11,EVENTOUT,USART1_CTS,TIM1_CH4,TSC_G4_IO3,CAN1_RX,I2C2_SCL,,COMP1_OUT,,,,,,,,, -PortA,PA12,EVENTOUT,USART1_RTS,TIM1_ETR,TSC_G4_IO4,CAN1_TX,I2C2_SDA,,COMP2_OUT,,,,,,,,, -PortA,PA13,SWDIO,IR_OUT,,,,,,,,,,,,,,, -PortA,PA14,SWCLK,USART2_TX,,,,,,,,,,,,,,, -PortA,PA15,SPI1_NSS/I2S1_WS,USART2_RX,TIM2_CH1_ETR,EVENTOUT,USART4_RTS,,,,,,,,,,,, -PortB,PB0,EVENTOUT,TIM3_CH3,TIM1_CH2N,TSC_G3_IO2,USART3_CK,,,,,,,,,,,,ADC1_IN8 -PortB,PB1,TIM14_CH1,TIM3_CH4,TIM1_CH3N,TSC_G3_IO3,USART3_RTS,,,,,,,,,,,,ADC1_IN9 -PortB,PB2,,,,TSC_G3_IO4,,,,,,,,,,,,, -PortB,PB3,SPI1_SCK/I2S1_CK,EVENTOUT,TIM2_CH2,TSC_G5_IO1,USART5_TX,,,,,,,,,, -PortB,PB4,SPI1_MISO/I2S1_MCK,TIM3_CH1,EVENTOUT,TSC_G5_IO2,USART5_RX,TIM17_BKIN,,,,,,,,, -PortB,PB5,SPI1_MOSI/I2S1_SD,TIM3_CH2,TIM16_BKIN,I2C1_SMBA,USART5_CK/USART5_RTS,,,,,,,,,, -PortB,PB6,USART1_TX,I2C1_SCL,TIM16_CH1N,TSC_G5_IO3,,,,,,,,,,, -PortB,PB7,USART1_RX,I2C1_SDA,TIM17_CH1N,TSC_G5_IO4,USART4_CTS,,,,,,,,,, -PortB,PB8,CEC,I2C1_SCL,TIM16_CH1,TSC_SYNC,CAN1_RX,,,,,,,,,, -PortB,PB9,IR_OUT,I2C1_SDA,TIM17_CH1,EVENTOUT,CAN1_TX,SPI2_NSS/I2S2_WS,,,,,,,,, -PortB,PB10,CEC,I2C2_SCL,TIM2_CH3,TSC_SYNC,USART3_TX,SPI2_SCK/I2S2_CK,,,,,,,,, -PortB,PB11,EVENTOUT,I2C2_SDA,TIM2_CH4,TSC_G6_IO1,USART3_RX,,,,,,,,,, -PortB,PB12,SPI2_NSS/I2S2_WS,EVENTOUT,TIM1_BKIN,TSC_G6_IO2,USART3_CK,TIM15_BKIN,,,,,,,,, -PortB,PB13,SPI2_SCK/I2S2_CK,,TIM1_CH1N,TSC_G6_IO3,USART3_CTS,I2C2_SCL,,,,,,,,, -PortB,PB14,SPI2_MISO/I2S2_MCK,TIM15_CH1,TIM1_CH2N,TSC_G6_IO4,USART3_RTS,I2C2_SDA,,,,,,,,, -PortB,PB15,SPI2_MOSI/I2S2_SD,TIM15_CH2,TIM1_CH3N,TIM15_CH1N,,,,,,,,,,, -PortC,PC0,EVENTOUT,USART7_TX,USART6_TX,,,,,,,,,,,,,,ADC1_IN10 -PortC,PC1,EVENTOUT,USART7_RX,USART6_RX,,,,,,,,,,,,,,ADC1_IN11 -PortC,PC2,EVENTOUT,SPI2_MISO/I2S2_MCK,USART8_TX,,,,,,,,,,,,,,ADC1_IN12 -PortC,PC3,EVENTOUT,SPI2_MOSI/I2S2_SD,USART8_RX,,,,,,,,,,,,,,ADC1_IN13 -PortC,PC4,EVENTOUT,USART3_TX,,,,,,,,,,,,,,,ADC1_IN14 -PortC,PC5,TSC_G3_IO1,USART3_RX,,,,,,,,,,,,,,,ADC1_IN15 -PortC,PC6,TIM3_CH1,USART7_TX,,,,,,,,,,,,,,, -PortC,PC7,TIM3_CH2,USART7_RX,,,,,,,,,,,,,,, -PortC,PC8,TIM3_CH3,USART8_TX,,,,,,,,,,,,,,, -PortC,PC9,TIM3_CH4,USART8_RX,,,,,,,,,,,,,,, -PortC,PC10,USART4_TX,USART3_TX,,,,,,,,,,,,,,, -PortC,PC11,USART4_RX,USART3_RX,,,,,,,,,,,,,,, -PortC,PC12,USART4_CK,USART3_CK,USART5_TX,,,,,,,,,,,,,, -PortC,PC13,,,,,,,,,,,,,,,,, -PortC,PC14,,,,,,,,,,,,,,,,, -PortC,PC15,,,,,,,,,,,,,,,,, -PortD,PD0,CAN1_RX,SPI2_NSS/I2S2_WS,,,,,,,,,,,,,,, -PortD,PD1,CAN1_TX,SPI2_SCK/I2S2_CK,,,,,,,,,,,,,,, -PortD,PD2,TIM3_ETR,USART3_RTS,USART5_RX,,,,,,,,,,,,,, -PortD,PD3,USART2_CTS,SPI2_MISO/I2S2_MCK,,,,,,,,,,,,,,, -PortD,PD4,USART2_RTS,SPI2_MOSI/I2S2_SD,,,,,,,,,,,,,,, -PortD,PD5,USART2_TX,,,,,,,,,,,,,,,, -PortD,PD6,USART2_RX,,,,,,,,,,,,,,,, -PortD,PD7,USART2_CK,,,,,,,,,,,,,,,, -PortD,PD8,USART3_TX,,,,,,,,,,,,,,,, -PortD,PD9,USART3_RX,,,,,,,,,,,,,,,, -PortD,PD10,USART3_CK,,,,,,,,,,,,,,,, -PortD,PD11,USART3_CTS,,,,,,,,,,,,,,,, -PortD,PD12,USART3_RTS,TSC_G8_IO1,USART8_CK/USART8_RTS,,,,,,,,,,,,,, -PortD,PD13,USART8_TX,TSC_G8_IO2,,,,,,,,,,,,,,, -PortD,PD14,USART8_RX,TSC_G8_IO3,,,,,,,,,,,,,,, -PortD,PD15,CRS_SYNC,TSC_G8_IO4,USART7_CK/USART7_RTS,,,,,,,,,,,,,, -PortE,PE0,TIM16_CH1,EVENTOUT,,,,,,,,,,,,,,, -PortE,PE1,TIM17_CH1,EVENTOUT,,,,,,,,,,,,,,, -PortE,PE2,TIM3_ETR,TSC_G7_IO1,,,,,,,,,,,,,,, -PortE,PE3,TIM3_CH1,TSC_G7_IO2,,,,,,,,,,,,,,, -PortE,PE4,TIM3_CH2,TSC_G7_IO3,,,,,,,,,,,,,,, -PortE,PE5,TIM3_CH3,TSC_G7_IO4,,,,,,,,,,,,,,, -PortE,PE6,TIM3_CH4,,,,,,,,,,,,,,,, -PortE,PE7,TIM1_ETR,USART5_CK/USART5_RTS,,,,,,,,,,,,,,, -PortE,PE8,TIM1_CH1N,USART4_TX,,,,,,,,,,,,,,, -PortE,PE9,TIM1_CH1,USART4_RX,,,,,,,,,,,,,,, -PortE,PE10,TIM1_CH2N,USART5_TX,,,,,,,,,,,,,,, -PortE,PE11,TIM1_CH2,USART5_RX,,,,,,,,,,,,,,, -PortE,PE12,TIM1_CH3N,SPI1_NSS/I2S1_WS,,,,,,,,,,,,,,, -PortE,PE13,TIM1_CH3,SPI1_SCK/I2S1_CK,,,,,,,,,,,,,,, -PortE,PE14,TIM1_CH4,SPI1_MISO/I2S1_MCK,,,,,,,,,,,,,,, -PortE,PE15,TIM1_BKIN,SPI1_MOSI/I2S1_SD,,,,,,,,,,,,,,, -PortF,PF0,CRS_SYNC,I2C1_SDA,,,,,,,,,,,,,,, -PortF,PF1,,I2C1_SCL,,,,,,,,,,,,,,, -PortF,PF2,EVENTOUT,USART7_TX,USART7_CK/USART7_RTS,,,,,,,,,,,,,, -PortF,PF3,EVENTOUT,USART7_RX,USART6_CK/USART6_RTS,,,,,,,,,,,,,, -PortF,PF6,,,,,,,,,,,,,,,,, -PortF,PF9,TIM15_CH1,USART6_TX,,,,,,,,,,,,,,, -PortF,PF10,TIM15_CH2,USART6_RX,,,,,,,,,,,,,,, -PortF,PF11,,,,,,,,,,,,,,,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,,,,,,,,,ADC + , ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,,,,,,,,,ADC +PortA,PA0 , ,USART2_CTS ,TIM2_CH1_ETR ,TSC_G1_IO1,USART4_TX , , ,COMP1_OUT,,,,,,,,,ADC1_IN0 +PortA,PA1 ,EVENTOUT ,USART2_RTS ,TIM2_CH2 ,TSC_G1_IO2,USART4_RX ,TIM15_CH1N , , ,,,,,,,,,ADC1_IN1 +PortA,PA2 ,TIM15_CH1 ,USART2_TX ,TIM2_CH3 ,TSC_G1_IO3, , , ,COMP2_OUT,,,,,,,,,ADC1_IN2 +PortA,PA3 ,TIM15_CH2 ,USART2_RX ,TIM2_CH4 ,TSC_G1_IO4, , , , ,,,,,,,,,ADC1_IN3 +PortA,PA4 ,SPI1_NSS/I2S1_WS ,USART2_CK , ,TSC_G2_IO1,TIM14_CH1 ,USART6_TX , , ,,,,,,,,,ADC1_IN4 +PortA,PA5 ,SPI1_SCK/I2S1_CK ,CEC ,TIM2_CH1_ETR ,TSC_G2_IO2, ,USART6_RX , , ,,,,,,,,,ADC1_IN5 +PortA,PA6 ,SPI1_MISO/I2S1_MCK,TIM3_CH1 ,TIM1_BKIN ,TSC_G2_IO3,USART3_CTS ,TIM16_CH1 ,EVENTOUT,COMP1_OUT,,,,,,,,,ADC1_IN6 +PortA,PA7 ,SPI1_MOSI/I2S1_SD ,TIM3_CH2 ,TIM1_CH1N ,TSC_G2_IO4,TIM14_CH1 ,TIM17_CH1 ,EVENTOUT,COMP2_OUT,,,,,,,,,ADC1_IN7 +PortA,PA8 ,MCO ,USART1_CK ,TIM1_CH1 ,EVENTOUT ,CRS_SYNC , , , ,,,,,,,,, +PortA,PA9 ,TIM15_BKIN ,USART1_TX ,TIM1_CH2 ,TSC_G4_IO1,I2C1_SCL ,MCO , , ,,,,,,,,, +PortA,PA10,TIM17_BKIN ,USART1_RX ,TIM1_CH3 ,TSC_G4_IO2,I2C1_SDA , , , ,,,,,,,,, +PortA,PA11,EVENTOUT ,USART1_CTS ,TIM1_CH4 ,TSC_G4_IO3,CAN1_RX ,I2C2_SCL , ,COMP1_OUT,,,,,,,,, +PortA,PA12,EVENTOUT ,USART1_RTS ,TIM1_ETR ,TSC_G4_IO4,CAN1_TX ,I2C2_SDA , ,COMP2_OUT,,,,,,,,, +PortA,PA13,SWDIO ,IR_OUT , , , , , , ,,,,,,,,, +PortA,PA14,SWCLK ,USART2_TX , , , , , , ,,,,,,,,, +PortA,PA15,SPI1_NSS/I2S1_WS ,USART2_RX ,TIM2_CH1_ETR ,EVENTOUT ,USART4_RTS , , , ,,,,,,,,, +PortB,PB0 ,EVENTOUT ,TIM3_CH3 ,TIM1_CH2N ,TSC_G3_IO2,USART3_CK , , , ,,,,,,,,,ADC1_IN8 +PortB,PB1 ,TIM14_CH1 ,TIM3_CH4 ,TIM1_CH3N ,TSC_G3_IO3,USART3_RTS , , , ,,,,,,,,,ADC1_IN9 +PortB,PB2 , , , ,TSC_G3_IO4, , , , ,,,,,,,,, +PortB,PB3 ,SPI1_SCK/I2S1_CK ,EVENTOUT ,TIM2_CH2 ,TSC_G5_IO1,USART5_TX , , , ,,,,,,,,, +PortB,PB4 ,SPI1_MISO/I2S1_MCK,TIM3_CH1 ,EVENTOUT ,TSC_G5_IO2,USART5_RX ,TIM17_BKIN , , ,,,,,,,,, +PortB,PB5 ,SPI1_MOSI/I2S1_SD ,TIM3_CH2 ,TIM16_BKIN ,I2C1_SMBA ,USART5_CK/USART5_RTS, , , ,,,,,,,,, +PortB,PB6 ,USART1_TX ,I2C1_SCL ,TIM16_CH1N ,TSC_G5_IO3, , , , ,,,,,,,,, +PortB,PB7 ,USART1_RX ,I2C1_SDA ,TIM17_CH1N ,TSC_G5_IO4,USART4_CTS , , , ,,,,,,,,, +PortB,PB8 ,CEC ,I2C1_SCL ,TIM16_CH1 ,TSC_SYNC ,CAN1_RX , , , ,,,,,,,,, +PortB,PB9 ,IR_OUT ,I2C1_SDA ,TIM17_CH1 ,EVENTOUT ,CAN1_TX ,SPI2_NSS/I2S2_WS, , ,,,,,,,,, +PortB,PB10,CEC ,I2C2_SCL ,TIM2_CH3 ,TSC_SYNC ,USART3_TX ,SPI2_SCK/I2S2_CK, , ,,,,,,,,, +PortB,PB11,EVENTOUT ,I2C2_SDA ,TIM2_CH4 ,TSC_G6_IO1,USART3_RX , , , ,,,,,,,,, +PortB,PB12,SPI2_NSS/I2S2_WS ,EVENTOUT ,TIM1_BKIN ,TSC_G6_IO2,USART3_CK ,TIM15_BKIN , , ,,,,,,,,, +PortB,PB13,SPI2_SCK/I2S2_CK , ,TIM1_CH1N ,TSC_G6_IO3,USART3_CTS ,I2C2_SCL , , ,,,,,,,,, +PortB,PB14,SPI2_MISO/I2S2_MCK,TIM15_CH1 ,TIM1_CH2N ,TSC_G6_IO4,USART3_RTS ,I2C2_SDA , , ,,,,,,,,, +PortB,PB15,SPI2_MOSI/I2S2_SD ,TIM15_CH2 ,TIM1_CH3N ,TIM15_CH1N, , , , ,,,,,,,,, +PortC,PC0 ,EVENTOUT ,USART7_TX ,USART6_TX , , , , , ,,,,,,,,,ADC1_IN10 +PortC,PC1 ,EVENTOUT ,USART7_RX ,USART6_RX , , , , , ,,,,,,,,,ADC1_IN11 +PortC,PC2 ,EVENTOUT ,SPI2_MISO/I2S2_MCK ,USART8_TX , , , , , ,,,,,,,,,ADC1_IN12 +PortC,PC3 ,EVENTOUT ,SPI2_MOSI/I2S2_SD ,USART8_RX , , , , , ,,,,,,,,,ADC1_IN13 +PortC,PC4 ,EVENTOUT ,USART3_TX , , , , , , ,,,,,,,,,ADC1_IN14 +PortC,PC5 ,TSC_G3_IO1 ,USART3_RX , , , , , , ,,,,,,,,,ADC1_IN15 +PortC,PC6 ,TIM3_CH1 ,USART7_TX , , , , , , ,,,,,,,,, +PortC,PC7 ,TIM3_CH2 ,USART7_RX , , , , , , ,,,,,,,,, +PortC,PC8 ,TIM3_CH3 ,USART8_TX , , , , , , ,,,,,,,,, +PortC,PC9 ,TIM3_CH4 ,USART8_RX , , , , , , ,,,,,,,,, +PortC,PC10,USART4_TX ,USART3_TX , , , , , , ,,,,,,,,, +PortC,PC11,USART4_RX ,USART3_RX , , , , , , ,,,,,,,,, +PortC,PC12,USART4_CK ,USART3_CK ,USART5_TX , , , , , ,,,,,,,,, +PortC,PC13, , , , , , , , ,,,,,,,,, +PortC,PC14, , , , , , , , ,,,,,,,,, +PortC,PC15, , , , , , , , ,,,,,,,,, +PortD,PD0 ,CAN1_RX ,SPI2_NSS/I2S2_WS , , , , , , ,,,,,,,,, +PortD,PD1 ,CAN1_TX ,SPI2_SCK/I2S2_CK , , , , , , ,,,,,,,,, +PortD,PD2 ,TIM3_ETR ,USART3_RTS ,USART5_RX , , , , , ,,,,,,,,, +PortD,PD3 ,USART2_CTS ,SPI2_MISO/I2S2_MCK , , , , , , ,,,,,,,,, +PortD,PD4 ,USART2_RTS ,SPI2_MOSI/I2S2_SD , , , , , , ,,,,,,,,, +PortD,PD5 ,USART2_TX , , , , , , , ,,,,,,,,, +PortD,PD6 ,USART2_RX , , , , , , , ,,,,,,,,, +PortD,PD7 ,USART2_CK , , , , , , , ,,,,,,,,, +PortD,PD8 ,USART3_TX , , , , , , , ,,,,,,,,, +PortD,PD9 ,USART3_RX , , , , , , , ,,,,,,,,, +PortD,PD10,USART3_CK , , , , , , , ,,,,,,,,, +PortD,PD11,USART3_CTS , , , , , , , ,,,,,,,,, +PortD,PD12,USART3_RTS ,TSC_G8_IO1 ,USART8_CK/USART8_RTS, , , , , ,,,,,,,,, +PortD,PD13,USART8_TX ,TSC_G8_IO2 , , , , , , ,,,,,,,,, +PortD,PD14,USART8_RX ,TSC_G8_IO3 , , , , , , ,,,,,,,,, +PortD,PD15,CRS_SYNC ,TSC_G8_IO4 ,USART7_CK/USART7_RTS, , , , , ,,,,,,,,, +PortE,PE0 ,TIM16_CH1 ,EVENTOUT , , , , , , ,,,,,,,,, +PortE,PE1 ,TIM17_CH1 ,EVENTOUT , , , , , , ,,,,,,,,, +PortE,PE2 ,TIM3_ETR ,TSC_G7_IO1 , , , , , , ,,,,,,,,, +PortE,PE3 ,TIM3_CH1 ,TSC_G7_IO2 , , , , , , ,,,,,,,,, +PortE,PE4 ,TIM3_CH2 ,TSC_G7_IO3 , , , , , , ,,,,,,,,, +PortE,PE5 ,TIM3_CH3 ,TSC_G7_IO4 , , , , , , ,,,,,,,,, +PortE,PE6 ,TIM3_CH4 , , , , , , , ,,,,,,,,, +PortE,PE7 ,TIM1_ETR ,USART5_CK/USART5_RTS, , , , , , ,,,,,,,,, +PortE,PE8 ,TIM1_CH1N ,USART4_TX , , , , , , ,,,,,,,,, +PortE,PE9 ,TIM1_CH1 ,USART4_RX , , , , , , ,,,,,,,,, +PortE,PE10,TIM1_CH2N ,USART5_TX , , , , , , ,,,,,,,,, +PortE,PE11,TIM1_CH2 ,USART5_RX , , , , , , ,,,,,,,,, +PortE,PE12,TIM1_CH3N ,SPI1_NSS/I2S1_WS , , , , , , ,,,,,,,,, +PortE,PE13,TIM1_CH3 ,SPI1_SCK/I2S1_CK , , , , , , ,,,,,,,,, +PortE,PE14,TIM1_CH4 ,SPI1_MISO/I2S1_MCK , , , , , , ,,,,,,,,, +PortE,PE15,TIM1_BKIN ,SPI1_MOSI/I2S1_SD , , , , , , ,,,,,,,,, +PortF,PF0 ,CRS_SYNC ,I2C1_SDA , , , , , , ,,,,,,,,, +PortF,PF1 , ,I2C1_SCL , , , , , , ,,,,,,,,, +PortF,PF2 ,EVENTOUT ,USART7_TX ,USART7_CK/USART7_RTS, , , , , ,,,,,,,,, +PortF,PF3 ,EVENTOUT ,USART7_RX ,USART6_CK/USART6_RTS, , , , , ,,,,,,,,, +PortF,PF6 , , , , , , , , ,,,,,,,,, +PortF,PF9 ,TIM15_CH1 ,USART6_TX , , , , , , ,,,,,,,,, +PortF,PF10,TIM15_CH2 ,USART6_RX , , , , , , ,,,,,,,,, +PortF,PF11, , , , , , , , ,,,,,,,,, diff --git a/ports/stm32/boards/stm32f401_af.csv b/ports/stm32/boards/stm32f401_af.csv index 1acb8e4313293..28266da944cf0 100644 --- a/ports/stm32/boards/stm32f401_af.csv +++ b/ports/stm32/boards/stm32f401_af.csv @@ -1,83 +1,83 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM1/TIM2,TIM3/TIM4/TIM5,TIM9/TIM10/TIM11,I2C1/I2C2/I2C3,SPI1/SPI2/I2S2/SPI3/I2S3/SPI4,SPI2/I2S2/SPI3/I2S3,SPI3/I2S3/USART1/USART2,USART6,I2C2/I2C3,OTG1_FS,,SDIO,,,,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,,,,,USART2_CTS,,,,,,,,EVENTOUT,ADC1_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,,,,,,,,EVENTOUT,ADC1_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,,,,,,,,EVENTOUT,ADC1_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,,,,,,EVENTOUT,ADC1_IN3 -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,,,,EVENTOUT,ADC1_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,,,SPI1_SCK,,,,,,,,,,EVENTOUT,ADC1_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,,,SPI1_MISO,,,,,,,,,,EVENTOUT,ADC1_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,,,SPI1_MOSI,,,,,,,,,,EVENTOUT,ADC1_IN7 -PortA,PA8,MCO_1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,,,USART1_TX,,,OTG_FS_VBUS,,,,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,USART6_TX,,OTG_FS_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,USART6_RX,,OTG_FS_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,,,,,,,,,,,,,EVENTOUT,ADC1_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,,,,,,,,,,,,,EVENTOUT,ADC1_IN9 -PortB,PB2,,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK/I2S3_CK,,,I2C2_SDA,,,,,,EVENTOUT, -PortB,PB4,JTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,,I2C3_SDA,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,,,,,,,,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,,,,,,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,,,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,,,,SDIO_D4,,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,,,,SDIO_D5,,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,,,,,,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,,,,,,,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,,,,,,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,,,SPI2_MISO,I2S2ext_SD,,,,,,,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,,,SPI2_MOSI/I2S2_SD,,,,,,,,,,EVENTOUT, -PortC,PC0,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN10 -PortC,PC1,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2ext_SD,,,,,,,,,EVENTOUT,ADC1_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,,,,,,EVENTOUT,ADC1_IN13 -PortC,PC4,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN14 -PortC,PC5,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN15 -PortC,PC6,,,TIM3_CH1,,,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,,,,I2S3_MCK,,USART6_RX,,,,SDIO_D7,,,EVENTOUT, -PortC,PC8,,,TIM3_CH3,,,,,,USART6_CK,,,,SDIO_D0,,,EVENTOUT, -PortC,PC9,MCO_2,,TIM3_CH4,,I2C3_SDA,I2S_CKIN,,,,,,,SDIO_D1,,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,,,,,,SDIO_D2,,,EVENTOUT, -PortC,PC11,,,,,,I2S3ext_SD,SPI3_MISO,,,,,,SDIO_D3,,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,,,,,,SDIO_CK,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD1,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,,,,,SDIO_CMD,,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,,,,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,,USART2_RX,,,,,,,,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,,,,,EVENTOUT, -PortD,PD8,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD9,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD10,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD11,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,,,,,,,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,,,,,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,,,,,,,,EVENTOUT, -PortE,PE1,,TIM1_CH2N,,,,,,,,,,,,,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,,,,,,,,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,,,,,,,,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,,,,,,,,,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,,,,,,,,,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI,,,,,,,,,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,,,,,,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,,,,,,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,,,,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,,,,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,,,,,,,,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,,,,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,,,,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,,,,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12 ,AF13,AF14,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2 ,TIM3/TIM4/TIM5,TIM9/TIM10/TIM11,I2C1/I2C2/I2C3,SPI1/SPI2/I2S2/SPI3/I2S3/SPI4,SPI2/I2S2/SPI3/I2S3,SPI3/I2S3/USART1/USART2,USART6 ,I2C2/I2C3,OTG1_FS , ,SDIO , , , ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1 , , , , ,USART2_CTS , , , , , , , ,EVENTOUT,ADC1_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , , , , ,USART2_RTS , , , , , , , ,EVENTOUT,ADC1_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,TIM9_CH1 , , , ,USART2_TX , , , , , , , ,EVENTOUT,ADC1_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,TIM9_CH2 , , , ,USART2_RX , , , , , , , ,EVENTOUT,ADC1_IN3 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , , , , ,EVENTOUT,ADC1_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, , , ,SPI1_SCK , , , , , , , , , ,EVENTOUT,ADC1_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 , , ,SPI1_MISO , , , , , , , , , ,EVENTOUT,ADC1_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 , , ,SPI1_MOSI , , , , , , , , , ,EVENTOUT,ADC1_IN7 +PortA,PA8 ,MCO_1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA , , ,USART1_TX , , ,OTG_FS_VBUS, , , , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , , , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS ,USART6_TX, ,OTG_FS_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS ,USART6_RX, ,OTG_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS , , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 , , , , , , , , , , , , ,EVENTOUT,ADC1_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 , , , , , , , , , , , , ,EVENTOUT,ADC1_IN9 +PortB,PB2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK/I2S3_CK , , ,I2C2_SDA , , , , , ,EVENTOUT, +PortB,PB4 ,JTRST , ,TIM3_CH1 , , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD , ,I2C3_SDA , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2 , ,I2C1_SMBA ,SPI1_MOSI ,SPI3_MOSI/I2S3_SD , , , , , , , , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1 , ,I2C1_SCL , , ,USART1_TX , , , , , , , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2 , ,I2C1_SDA , , ,USART1_RX , , , , , , , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3 ,TIM10_CH1 ,I2C1_SCL , , , , , , , ,SDIO_D4 , , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4 ,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , , , , ,SDIO_D5 , , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , , , , , , , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS , , , , , , , , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , , , , , , , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , , , ,SPI2_MISO ,I2S2ext_SD , , , , , , , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , , , ,SPI2_MOSI/I2S2_SD , , , , , , , , , ,EVENTOUT, +PortC,PC0 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN10 +PortC,PC1 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2ext_SD , , , , , , , , ,EVENTOUT,ADC1_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD , , , , , , , , , ,EVENTOUT,ADC1_IN13 +PortC,PC4 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN14 +PortC,PC5 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN15 +PortC,PC6 , , ,TIM3_CH1 , , ,I2S2_MCK , , ,USART6_TX, , , ,SDIO_D6 , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 , , , ,I2S3_MCK , ,USART6_RX, , , ,SDIO_D7 , , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 , , , , , ,USART6_CK, , , ,SDIO_D0 , , ,EVENTOUT, +PortC,PC9 ,MCO_2 , ,TIM3_CH4 , ,I2C3_SDA ,I2S_CKIN , , , , , , ,SDIO_D1 , , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK , , , , , ,SDIO_D2 , , ,EVENTOUT, +PortC,PC11, , , , , ,I2S3ext_SD ,SPI3_MISO , , , , , ,SDIO_D3 , , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD , , , , , ,SDIO_CK , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR , , , , , , , , , ,SDIO_CMD, , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , , , , ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , , , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , , , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD , ,USART2_RX , , , , , , , ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , , , , , ,EVENTOUT, +PortD,PD8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD9 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD10, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD11, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR , , , , , , , , , , , , ,EVENTOUT, +PortE,PE1 , ,TIM1_CH2N , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK , , , , , , , , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS , , , , , , , , , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO , , , , , , , , , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI , , , , , , , , , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS , , , , , , , , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , , , , , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , , , , , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , , , , , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f405_af.csv b/ports/stm32/boards/stm32f405_af.csv index 2602db877504d..d30779d45f189 100644 --- a/ports/stm32/boards/stm32f405_af.csv +++ b/ports/stm32/boards/stm32f405_af.csv @@ -1,142 +1,142 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11,I2C1/2/3,SPI1/SPI2/I2S2/I2S2ext,SPI3/I2Sext/I2S3,USART1/2/3/I2S3ext,UART4/5/USART6,CAN1/CAN2/TIM12/13/14,OTG_FS/OTG_HS,ETH,FSMC/SDIO/OTG_FS,DCMI,,,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,ETH_MII_CRS,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,,,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,,,,ETH_MDIO,,,,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,OTG_HS_ULPI_D0,ETH_MII_COL,,,,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,DCMI_HSYNC,,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK,,,,,OTG_HS_ULPI_CK,,,,,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,,TIM13_CH1,,,,DCMI_PIXCK,,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI,,,,TIM14_CH1,,ETH_MII_RX_DV/ETH_RMII_CRS_DV,,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,,,USART1_TX,,,,,,DCMI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,DCMI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,,CAN1_TX,OTG_FS_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,,,,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,,,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,,DCMI_D10,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,CAN2_TX,,,,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,FSMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,,ETH_MII_TXD3,SDIO_D4,DCMI_D6,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,CAN1_TX,,,SDIO_D5,DCMI_D7,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,I2S2ext_SD,USART3_RTS,,TIM12_CH1,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,,,,,OTG_HS_ULPI_STP,,,,,EVENTOUT,ADC123_IN10 -PortC,PC1,,,,,,,,,,,,ETH_MDC,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2ext_SD,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,,,,,,,ETH_MII_RXD0/ETH_RMII_RXD0,,,,EVENTOUT,ADC123_IN14 -PortC,PC5,,,,,,,,,,,,ETH_MII_RXD1/ETH_RMII_RXD1,,,,EVENTOUT,ADC123_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,DCMI_D0,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,,USART6_RX,,,,SDIO_D7,DCMI_D1,,EVENTOUT, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,,USART6_CK,,,,SDIO_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,,,,,,SDIO_D1,DCMI_D3,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,,,,SDIO_D2,DCMI_D8,,EVENTOUT, -PortC,PC11,,,,,,I2S3ext_SD,SPI3_MISO,USART3_RX,UART4_RX,,,,SDIO_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDIO_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FSMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FSMC_D3,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,UART5_RX,,,,SDIO_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,,,,,USART2_CTS,,,,,FSMC_CLK,,,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FSMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FSMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,,,USART2_RX,,,,,FSMC_NWAIT,,,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,,FSMC_NE1/FSMC_NCE2,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FSMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FSMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FSMC_D15,,,EVENTOUT, -PortD,PD11,,,,,,,,USART3_CTS,,,,,FSMC_A16,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS,,,,,FSMC_A17,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,,,,FSMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,FSMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,FSMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,,,,,FSMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,,,,,,,,,,FSMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,,,,,,,ETH_MII_TXD3,FSMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,,,,,,,FSMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,,,,,,,,FSMC_A20,DCMI_D4,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,,,,,,,,FSMC_A21,DCMI_D6,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,,,,,,,,FSMC_A22,DCMI_D7,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,,,,,FSMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,,,,,FSMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,,,FSMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,,,FSMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,,,,,,,,FSMC_D8,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,,,,,,,,FSMC_D9,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,,,,,,,,FSMC_D10,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,,,,,,,,FSMC_D11,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FSMC_D12,,,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FSMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FSMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FSMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FSMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FSMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FSMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,,,,,,,,FSMC_NIORD,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,,,,,,,,FSMC_NREG,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,,,,,TIM13_CH1,,,FSMC_NIOWR,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,,,,,TIM14_CH1,,,FSMC_CD,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,,,,FSMC_INTR,,,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,,,,,,,,,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FSMC_A6,,,EVENTOUT, -PortF,PF13,,,,,,,,,,,,,FSMC_A7,,,EVENTOUT, -PortF,PF14,,,,,,,,,,,,,FSMC_A8,,,EVENTOUT, -PortF,PF15,,,,,,,,,,,,,FSMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FSMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FSMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FSMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FSMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FSMC_A14,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FSMC_A15,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,FSMC_INT2,,,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,FSMC_INT3,,,EVENTOUT, -PortG,PG8,,,,,,,,,USART6_RTS,,,ETH_PPS_OUT,,,,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,,,,FSMC_NE2/FSMC_NCE3,,,EVENTOUT, -PortG,PG10,,,,,,,,,,,,,FSMC_NCE4_1/FSMC_NE3,,,EVENTOUT, -PortG,PG11,,,,,,,,,,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,FSMC_NCE4_2,,,EVENTOUT, -PortG,PG12,,,,,,,,,USART6_RTS,,,,FSMC_NE4,,,EVENTOUT, -PortG,PG13,,,,,,,,,USART6_CTS,,,ETH_MII_TXD0/ETH_RMII_TXD0,FSMC_A24,,,EVENTOUT, -PortG,PG14,,,,,,,,,USART6_TX,,,ETH_MII_TXD1/ETH_RMII_TXD1,FSMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,,,,,,,,,ETH_MII_CRS,,,,EVENTOUT, -PortH,PH3,,,,,,,,,,,,ETH_MII_COL,,,,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,,OTG_HS_ULPI_NXT,,,,,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,,,,,,,,,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,,,,,TIM12_CH1,,ETH_MII_RXD2,,,,EVENTOUT, -PortH,PH7,,,,,I2C3_SCL,,,,,,,ETH_MII_RXD3,,,,EVENTOUT, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,,DCMI_HSYNC,,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,,DCMI_D0,,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,,,,,,,,,,DCMI_D1,,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,,,,,,,,,,DCMI_D2,,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,,,,,,,,,,DCMI_D3,,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,,CAN1_TX,,,,,,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,,,,,,DCMI_D4,,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,,DCMI_D11,,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,,DCMI_D13,,EVENTOUT, -PortI,PI1,,,,,,SPI2_SCK/I2S2_CK,,,,,,,,DCMI_D8,,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,I2S2ext_SD,,,,,,,DCMI_D9,,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,,,,DCMI_D5,,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,,,,DCMI_VSYNC,,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,,,,DCMI_D6,,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,,,,DCMI_D7,,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,,CAN1_RX,,,,,,EVENTOUT, -PortI,PI10,,,,,,,,,,,,ETH_MII_RX_ER,,,,EVENTOUT, -PortI,PI11,,,,,,,,,,,OTG_HS_ULPI_DIR,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11,I2C1/2/3 ,SPI1/SPI2/I2S2/I2S2ext,SPI3/I2Sext/I2S3 ,USART1/2/3/I2S3ext,UART4/5/USART6,CAN1/CAN2/TIM12/13/14,OTG_FS/OTG_HS ,ETH ,FSMC/SDIO/OTG_FS ,DCMI , , ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , ,ETH_MII_CRS , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX , , ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK, , , ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX , , , ,ETH_MDIO , , , ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , , ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , , ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF ,DCMI_HSYNC, ,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK , , , , ,OTG_HS_ULPI_CK , , , , ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , , ,TIM13_CH1 , , , ,DCMI_PIXCK, ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI , , , ,TIM14_CH1 , ,ETH_MII_RX_DV/ETH_RMII_CRS_DV , , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA, , ,USART1_TX , , , , , ,DCMI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , ,DCMI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS , ,CAN1_TX ,OTG_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS , , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , , , , ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , , ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , , ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA,SPI1_MOSI ,SPI3_MOSI/I2S3_SD, , ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT , ,DCMI_D10 , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1, ,I2C1_SCL , , ,USART1_TX , ,CAN2_TX , , , ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX , , , , ,FSMC_NL ,DCMI_VSYNC, ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX , ,ETH_MII_TXD3 ,SDIO_D4 ,DCMI_D6 , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,CAN1_TX , , ,SDIO_D5 ,DCMI_D7 , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , , ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA,SPI2_NSS/I2S2_WS , ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO ,I2S2ext_SD ,USART3_RTS , ,TIM12_CH1 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD , , , ,TIM12_CH2 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , , , , , ,OTG_HS_ULPI_STP, , , , ,EVENTOUT,ADC123_IN10 +PortC,PC1 , , , , , , , , , , , ,ETH_MDC , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2ext_SD , , , ,OTG_HS_ULPI_DIR,ETH_MII_TXD2 , , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD , , , , ,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK , , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , , , , , , , ,ETH_MII_RXD0/ETH_RMII_RXD0 , , , ,EVENTOUT,ADC123_IN14 +PortC,PC5 , , , , , , , , , , , ,ETH_MII_RXD1/ETH_RMII_RXD1 , , , ,EVENTOUT,ADC123_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , , ,USART6_TX , , , ,SDIO_D6 ,DCMI_D0 , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK , ,USART6_RX , , , ,SDIO_D7 ,DCMI_D1 , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3,TIM8_CH3 , , , , ,USART6_CK , , , ,SDIO_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , , , , , , ,SDIO_D1 ,DCMI_D3 , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX , , , ,SDIO_D2 ,DCMI_D8 , ,EVENTOUT, +PortC,PC11, , , , , ,I2S3ext_SD ,SPI3_MISO ,USART3_RX ,UART4_RX , , , ,SDIO_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , ,SDIO_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FSMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FSMC_D3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDIO_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , , , , , ,USART2_CTS , , , , ,FSMC_CLK , , ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FSMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FSMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , , , ,USART2_RX , , , , ,FSMC_NWAIT , , ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , , ,FSMC_NE1/FSMC_NCE2 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FSMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FSMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FSMC_D15 , , ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , , , , ,FSMC_A16 , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1, , , , ,USART3_RTS , , , , ,FSMC_A17 , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2, , , , , , , , , ,FSMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , , , , , ,FSMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , , , , , ,FSMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR, , , , , , , , , ,FSMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , , , , , , , , , , ,FSMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , , , , , , , ,ETH_MII_TXD3 ,FSMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , , , , , , , ,FSMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , , , , , , , , ,FSMC_A20 ,DCMI_D4 , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , , , , , , , , ,FSMC_A21 ,DCMI_D6 , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , , , , , , , , ,FSMC_A22 ,DCMI_D7 , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , , , , , ,FSMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , , , , , ,FSMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , , , ,FSMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , , , ,FSMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , , , , , , , , ,FSMC_D8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , , , , , , , , ,FSMC_D9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , , , , , , , , ,FSMC_D10 , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , , , , , , , , ,FSMC_D11 , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FSMC_D12 , , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FSMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FSMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA, , , , , , , ,FSMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FSMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FSMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FSMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , , , , , , , , ,FSMC_NIORD , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , , , , , , , , ,FSMC_NREG , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , , , , , ,TIM13_CH1 , , ,FSMC_NIOWR , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , , , , , ,TIM14_CH1 , , ,FSMC_CD , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , , , , ,FSMC_INTR , , ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , , , , , , , , , ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FSMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , , , , , , , , , ,FSMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , , , , , , , , , ,FSMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , , , , , , , , , ,FSMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FSMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FSMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FSMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FSMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FSMC_A14 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FSMC_A15 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , ,FSMC_INT2 , , ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , ,FSMC_INT3 , , ,EVENTOUT, +PortG,PG8 , , , , , , , , ,USART6_RTS , , ,ETH_PPS_OUT , , , ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX , , , ,FSMC_NE2/FSMC_NCE3 , , ,EVENTOUT, +PortG,PG10, , , , , , , , , , , , ,FSMC_NCE4_1/FSMC_NE3, , ,EVENTOUT, +PortG,PG11, , , , , , , , , , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN ,FSMC_NCE4_2 , , ,EVENTOUT, +PortG,PG12, , , , , , , , ,USART6_RTS , , , ,FSMC_NE4 , , ,EVENTOUT, +PortG,PG13, , , , , , , , ,USART6_CTS , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FSMC_A24 , , ,EVENTOUT, +PortG,PG14, , , , , , , , ,USART6_TX , , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FSMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , , ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , , , , , , , , , ,ETH_MII_CRS , , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , ,ETH_MII_COL , , , ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , , ,OTG_HS_ULPI_NXT, , , , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA , , , , , , , , , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA, , , , ,TIM12_CH1 , ,ETH_MII_RXD2 , , , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL , , , , , , ,ETH_MII_RXD3 , , , ,EVENTOUT, +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , , ,DCMI_HSYNC, ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA, , , , ,TIM12_CH2 , , , ,DCMI_D0 , ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, , , , , , , , , , ,DCMI_D1 , ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, , , , , , , , , , ,DCMI_D2 , ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, , , , , , , , , , ,DCMI_D3 , ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , , ,CAN1_TX , , , , , ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , , , , , , ,DCMI_D4 , ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , , ,DCMI_D11 , ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , , ,DCMI_D13 , ,EVENTOUT, +PortI,PI1 , , , , , ,SPI2_SCK/I2S2_CK , , , , , , , ,DCMI_D8 , ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO ,I2S2ext_SD , , , , , , ,DCMI_D9 , ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD , , , , , , , ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , , , , ,DCMI_D5 , ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , , , , ,DCMI_VSYNC, ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , , , , ,DCMI_D6 , ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , , , , ,DCMI_D7 , ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , , ,CAN1_RX , , , , , ,EVENTOUT, +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER , , , ,EVENTOUT, +PortI,PI11, , , , , , , , , , ,OTG_HS_ULPI_DIR, , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f411_af.csv b/ports/stm32/boards/stm32f411_af.csv index d5b7a61deb53e..752048a40501f 100644 --- a/ports/stm32/boards/stm32f411_af.csv +++ b/ports/stm32/boards/stm32f411_af.csv @@ -1,84 +1,84 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM1/TIM2,TIM3/TIM4/TIM5,TIM9/TIM10/TIM11,I2C1/I2C2/I2C3,SPI1/I2S1/SPI2/I2S2/SPI3/I2S3,SPI2/I2S2/SPI3/I2S3/SPI4/I2S4/SPI5/I2S5,SPI3/I2S3/USART1/USART2,USART6,I2C2/I2C3,,,SDIO,,,,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,,,,,USART2_CTS,,,,,,,,EVENTOUT,ADC1_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,SPI4_MOSI/I2S4_SD,,USART2_RTS,,,,,,,,EVENTOUT,ADC1_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,I2S2_CKIN,,USART2_TX,,,,,,,,EVENTOUT,ADC1_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,I2S2_MCK,,USART2_RX,,,,,,,,EVENTOUT,ADC1_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,,,,EVENTOUT,ADC1_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,,,SPI1_SCK/I2S1_CK,,,,,,,,,,EVENTOUT,ADC1_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,,,SPI1_MISO,I2S2_MCK,,,,,,SDIO_CMD,,,EVENTOUT,ADC1_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,,,SPI1_MOSI/I2S1_SD,,,,,,,,,,EVENTOUT,ADC1_IN7 -PortA,PA8,MCO_1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,USB_FS_SOF,,SDIO_D1,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,,,USART1_TX,,,USB_FS_VBUS,,SDIO_D2,,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,SPI5_MOSI/I2S5_SD,USART1_RX,,,USB_FS_ID,,,,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,SPI4_MISO,USART1_CTS,USART6_TX,,USB_FS_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,SPI5_MISO,USART1_RTS,USART6_RX,,USB_FS_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART1_TX,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,,,,SPI5_SCK/I2S5_CK,,,,,,,,,EVENTOUT,ADC1_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,,,,SPI5_NSS/I2S5_WS,,,,,,,,,EVENTOUT,ADC1_IN9 -PortB,PB2,,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,USART1_RX,,I2C2_SDA,,,,,,EVENTOUT, -PortB,PB4,JTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,,I2C3_SDA,,,SDIO_D0,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,,,,,SDIO_D3,,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,,,,,,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,SDIO_D0,,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,SPI5_MOSI/I2S5_SD,,,I2C3_SDA,,,SDIO_D4,,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,I2C2_SDA,,,SDIO_D5,,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,I2S3_MCK,,,,,,SDIO_D7,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,I2S2_CKIN,,,,,,,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,SPI4_NSS/I2S4_WS,SPI3_SCK/I2S3_CK,,,,,,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,SPI4_SCK/I2S4_CK,,,,,,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,,,SPI2_MISO,I2S2ext_SD,,,,,,SDIO_D6,,,EVENTOUT, -PortB,PB15,RTC_50Hz,TIM1_CH3N,,,,SPI2_MOSI/I2S2_SD,,,,,,,SDIO_CK,,,EVENTOUT, -PortC,PC0,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN10 -PortC,PC1,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2ext_SD,,,,,,,,,EVENTOUT,ADC1_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,,,,,,EVENTOUT,ADC1_IN13 -PortC,PC4,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN14 -PortC,PC5,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN15 -PortC,PC6,,,TIM3_CH1,,,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,,,SPI2_SCK/I2S2_CK,I2S3_MCK,,USART6_RX,,,,SDIO_D7,,,EVENTOUT, -PortC,PC8,,,TIM3_CH3,,,,,,USART6_CK,,,,SDIO_D0,,,EVENTOUT, -PortC,PC9,MCO_2,,TIM3_CH4,,I2C3_SDA,I2S2_CKIN,,,,,,,SDIO_D1,,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,,,,,,SDIO_D2,,,EVENTOUT, -PortC,PC11,,,,,,I2S3ext_SD,SPI3_MISO,,,,,,SDIO_D3,,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,,,,,,SDIO_CK,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD1,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,,,,,SDIO_CMD,,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,,,,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,,USART2_RX,,,,,,,,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,,,,,EVENTOUT, -PortD,PD8,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD9,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD10,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD11,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,,,,,,,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,,,,,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,,,,,,,,EVENTOUT, -PortE,PE1,,,,,,,,,,,,,,,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK/I2S4_CK,SPI5_SCK/I2S5_CK,,,,,,,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,,,,,,,,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS/I2S4_WS,SPI5_NSS/I2S5_WS,,,,,,,,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SPI5_MISO,,,,,,,,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI/I2S4_SD,SPI5_MOSI/I2S5_SD,,,,,,,,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,,,,,,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,,,,,,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,,,,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,,,,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS/I2S4_WS,SPI5_NSS/I2S5_WS,,,,,,,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK/I2S4_CK,SPI5_SCK/I2S5_CK,,,,,,,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,SPI5_MISO,,,,,,,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI/I2S4_SD,SPI5_MOSI/I2S5_SD,,,,,,,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12 ,AF13,AF14,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2 ,TIM3/TIM4/TIM5,TIM9/TIM10/TIM11,I2C1/I2C2/I2C3,SPI1/I2S1/SPI2/I2S2/SPI3/I2S3,SPI2/I2S2/SPI3/I2S3/SPI4/I2S4/SPI5/I2S5,SPI3/I2S3/USART1/USART2,USART6 ,I2C2/I2C3, , ,SDIO , , , ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1 , , , , ,USART2_CTS , , , , , , , ,EVENTOUT,ADC1_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , , ,SPI4_MOSI/I2S4_SD , ,USART2_RTS , , , , , , , ,EVENTOUT,ADC1_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,TIM9_CH1 , ,I2S2_CKIN , ,USART2_TX , , , , , , , ,EVENTOUT,ADC1_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,TIM9_CH2 , ,I2S2_MCK , ,USART2_RX , , , , , , , ,EVENTOUT,ADC1_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , , , , ,EVENTOUT,ADC1_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, , , ,SPI1_SCK/I2S1_CK , , , , , , , , , ,EVENTOUT,ADC1_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 , , ,SPI1_MISO ,I2S2_MCK , , , , , ,SDIO_CMD, , ,EVENTOUT,ADC1_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 , , ,SPI1_MOSI/I2S1_SD , , , , , , , , , ,EVENTOUT,ADC1_IN7 +PortA,PA8 ,MCO_1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,USB_FS_SOF , ,SDIO_D1 , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA , , ,USART1_TX , , ,USB_FS_VBUS, ,SDIO_D2 , , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , ,SPI5_MOSI/I2S5_SD ,USART1_RX , , ,USB_FS_ID , , , , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , ,SPI4_MISO ,USART1_CTS ,USART6_TX, ,USB_FS_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , ,SPI5_MISO ,USART1_RTS ,USART6_RX, ,USB_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART1_TX , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 , , , ,SPI5_SCK/I2S5_CK , , , , , , , , ,EVENTOUT,ADC1_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 , , , ,SPI5_NSS/I2S5_WS , , , , , , , , ,EVENTOUT,ADC1_IN9 +PortB,PB2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK ,USART1_RX , ,I2C2_SDA , , , , , ,EVENTOUT, +PortB,PB4 ,JTRST , ,TIM3_CH1 , , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD , ,I2C3_SDA , , ,SDIO_D0 , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2 , ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD ,SPI3_MOSI/I2S3_SD , , , , , ,SDIO_D3 , , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1 , ,I2C1_SCL , , ,USART1_TX , , , , , , , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2 , ,I2C1_SDA , , ,USART1_RX , , , , ,SDIO_D0 , , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3 ,TIM10_CH1 ,I2C1_SCL , ,SPI5_MOSI/I2S5_SD , , ,I2C3_SDA , , ,SDIO_D4 , , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4 ,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,I2C2_SDA , , ,SDIO_D5 , , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,I2S3_MCK , , , , , ,SDIO_D7 , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA ,I2S2_CKIN , , , , , , , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,SPI4_NSS/I2S4_WS ,SPI3_SCK/I2S3_CK , , , , , , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK ,SPI4_SCK/I2S4_CK , , , , , , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , , , ,SPI2_MISO ,I2S2ext_SD , , , , , ,SDIO_D6 , , ,EVENTOUT, +PortB,PB15,RTC_50Hz ,TIM1_CH3N , , , ,SPI2_MOSI/I2S2_SD , , , , , , ,SDIO_CK , , ,EVENTOUT, +PortC,PC0 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN10 +PortC,PC1 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2ext_SD , , , , , , , , ,EVENTOUT,ADC1_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD , , , , , , , , , ,EVENTOUT,ADC1_IN13 +PortC,PC4 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN14 +PortC,PC5 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN15 +PortC,PC6 , , ,TIM3_CH1 , , ,I2S2_MCK , , ,USART6_TX, , , ,SDIO_D6 , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 , , ,SPI2_SCK/I2S2_CK ,I2S3_MCK , ,USART6_RX, , , ,SDIO_D7 , , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 , , , , , ,USART6_CK, , , ,SDIO_D0 , , ,EVENTOUT, +PortC,PC9 ,MCO_2 , ,TIM3_CH4 , ,I2C3_SDA ,I2S2_CKIN , , , , , , ,SDIO_D1 , , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK , , , , , ,SDIO_D2 , , ,EVENTOUT, +PortC,PC11, , , , , ,I2S3ext_SD ,SPI3_MISO , , , , , ,SDIO_D3 , , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD , , , , , ,SDIO_CK , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR , , , , , , , , , ,SDIO_CMD, , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , , , , ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , , , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , , , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD , ,USART2_RX , , , , , , , ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , , , , , ,EVENTOUT, +PortD,PD8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD9 , , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD10, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD11, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR , , , , , , , , , , , , ,EVENTOUT, +PortE,PE1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK/I2S4_CK ,SPI5_SCK/I2S5_CK , , , , , , , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS/I2S4_WS ,SPI5_NSS/I2S5_WS , , , , , , , , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SPI5_MISO , , , , , , , , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI/I2S4_SD ,SPI5_MOSI/I2S5_SD , , , , , , , , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS/I2S4_WS ,SPI5_NSS/I2S5_WS , , , , , , , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK/I2S4_CK ,SPI5_SCK/I2S5_CK , , , , , , , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO ,SPI5_MISO , , , , , , , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI/I2S4_SD ,SPI5_MOSI/I2S5_SD , , , , , , , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f412_af.csv b/ports/stm32/boards/stm32f412_af.csv index 90eb3d1df6503..b6281c1e420bc 100644 --- a/ports/stm32/boards/stm32f412_af.csv +++ b/ports/stm32/boards/stm32f412_af.csv @@ -1,116 +1,116 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM1/TIM2,TIM3/TIM4/TIM5,TIM8/9/10/11,I2C1/2/3/I2CFMP1,SPI1/2/3/4/I2S1/2/3/4,SPI2/3/4/5/I2S2/3/4/5/DFSDM1/2,SPI3/I2S3/USART1/2/3,USART3/6/CAN1/DFSDM1,I2C2/I2C3/I2CFMP1/CAN1/2/TIM12/13/14/QUADSPI,DFSDM1/QUADSPI/FSMC/OTG1_FS,,FSMC /SDIO,,,SYS_AF,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,,,,,,,,EVENTOUT,ADC1_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,SPI4_MOSI/I2S4_SD,,USART2_RTS,,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC1_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,I2S2_CKIN,,USART2_TX,,,,,FSMC_D4,,,EVENTOUT,ADC1_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,I2S2_MCK,,USART2_RX,,,,,FSMC_D5,,,EVENTOUT,ADC1_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,DFSDM1_DATIN1,,,,FSMC_D6,,,EVENTOUT,ADC1_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,DFSDM1_CKIN1,,,,FSMC_D7,,,EVENTOUT,ADC1_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,I2S2_MCK,,,TIM13_CH1,QUADSPI_BK2_IO0,,SDIO_CMD,,,EVENTOUT,ADC1_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SD,,,,TIM14_CH1,QUADSPI_BK2_IO1,,,,,EVENTOUT,ADC1_IN7 -PortA,PA8,MCO_1,TIM1_CH1,,,I2C3_SCL,,DFSDM1_CKOUT,USART1_CK,,,USB_FS_SOF,,SDIO_D1,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,USB_FS_VBUS,,SDIO_D2,,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,SPI2_MOSI/I2S2_SD,SPI5_MOSI/I2S5_SD,USART1_RX,,,USB_FS_ID,,,,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,SPI2_NSS/I2S2_WS,SPI4_MISO,USART1_CTS,USART6_TX,CAN1_RX,USB_FS_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,SPI2_MISO,SPI5_MISO,USART1_RTS,USART6_RX,CAN1_TX,USB_FS_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART1_TX,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,SPI5_SCK/I2S5_CK,,,,,,,,,EVENTOUT,ADC1_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,SPI5_NSS/I2S5_WS,,DFSDM1_DATIN0,QUADSPI_CLK,,,,,,EVENTOUT,ADC1_IN9 -PortB,PB2,,,,,,,DFSDM1_CKIN0,,,QUADSPI_CLK,,,,,,EVENTOUT, -PortB,PB3,JTDO,TIM2_CH2,,,I2CFMP1_SDA,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,USART1_RX,UART7_RX,I2C2_SDA,,,,,,EVENTOUT, -PortB,PB4,JTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,UART7_TX,I2C3_SDA,,,SDIO_D0,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,,CAN2_RX,,,SDIO_D3,,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,DFSDM2_CKIN7,USART1_TX,,CAN2_TX,QUADSPI_BK1_NCS,,SDIO_D0,,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,DFSDM2_DATIN7,USART1_RX,,,,,FSMC_NL,,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,SPI5_MOSI/I2S5_SD,,CAN1_RX,I2C3_SDA,,,SDIO_D4,,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,DFSDM2_DATIN1,,CAN1_TX,I2C2_SDA,,,SDIO_D5,,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,I2S3_MCK,USART3_TX,,I2CFMP4_SCL,,,SDIO_D7,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,I2S2_CKIN,,USART3_RX,,,,,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,SPI4_NSS/I2S4_WS,SPI3_SCK/I2S3_CK,USART3__CK,CAN2_RX,DFSDM1_DATIN1,,FSMC_D13/FSMC_DA13,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,I2CFMP1_SMBA,SPI2_SCK/I2S2_CK,SPI4_SCK/I2S4_CK,,USART3_CTS,CAN2_TX,DFSDM1_CKIN1,,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,I2CFMP1_SDA,SPI2_MISO,I2S2ext_SD,USART3_RTS,DFSDM1_DATIN2,TIM12_CH1,FSMC_D0,,SDIO_D6,,,EVENTOUT, -PortB,PB15,RTC_50HZ,TIM1_CH3N,,TIM8_CH3N,I2CFMP1_SCL,SPI2_MOSI/I2S2_SD,,,DFSDM1_CKIN2,TIM12_CH2,,,SDIO_CK,,,EVENTOUT, -PortC,PC0,,,,,,,,SAI1_MCLK_B,,,,,,,,EVENTOUT,ADC1_IN10 -PortC,PC1,,,,,,,,SAI1_SD_B,,,,,,,,EVENTOUT,ADC1_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2ext_SD,SAI1_SCK_B,DFSDM1_CKOUT,,,,FSMC_NWE,,,EVENTOUT,ADC1_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,SAI1_FS_B,,,,,FSMC_A0,,,EVENTOUT,ADC1_IN13 -PortC,PC4,,,,,,I2S1_MCK,,,,,QUADSPI_BK2_IO2,,FSMC_NE4,,,EVENTOUT,ADC1_IN14 -PortC,PC5,,,,,I2CFMP1_SMBA,,,USART3_RX,,,QUADSPI_BK2_IO3,,FSMC_NOE,,,EVENTOUT,ADC1_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,2CFMP1_SCL,I2S2_MCK,DFSDM1_CKIN3,,USART6_TX,,FSMC_D1,,SDIO_D6,,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,I2CFMP1_SDA,SPI2_SCK/I2S2_CK,I2S3_MCK,,USART6_RX,,DFSDM1_DATIN3,,SDIO_D7,,,EVENTOUT, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,,USART6_CK,QUADSPI_BK1_IO2,,,SDIO_D0,,,EVENTOUT, -PortC,PC9,MCO_2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S2_CKIN,,,,QUADSPI_BK1_IO0,,,SDIO_D1,,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,,QUADSPI_BK1_IO1,,,SDIO_D2,,,EVENTOUT, -PortC,PC11,,,,,,I2S3ext_SD,SPI3_MISO,USART3_RX,,QUADSPI_BK2_NCS,FSMC_D2,,SDIO_D3,,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,,,FSMC_D3,,SDIO_CK,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FSMC_D2/FSMC_DA2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FSMC_D3/FSMC_DA3,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,,,FSMC_NWE,,SDIO_CMD,,,EVENTOUT, -PortD,PD3,TRACED1,,,,,SPI2_SCK/I2S2_CK,DFSDM1_DATIN0,USART2_CTS,,QUADSPI_CLK,,,FSMC_CLK,,,EVENTOUT, -PortD,PD4,,,,,,,DFSDM1_CKIN0,USART2_RTS,,,,,FSMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FSMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,DFSDM1_DATIN1,USART2_RX,,,,,FSMC_NWAIT,,,EVENTOUT, -PortD,PD7,,,,,,,DFSDM1_CKIN1,USART2_CK,,,,,FSMC_NE1,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FSMC_D13/FSMC_DA13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FSMC_D14/FSMC_DA14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FSMC_D15/FSMC_DA15,,,EVENTOUT, -PortD,PD11,,,,,I2CFMP1_SMBA,,,USART3_CTS,,QUADSPI_BK1_IO0,,,FSMC_A16,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,I2CFMP1_SCL,,,USART3_RTS,,QUADSPI_BK1_IO1,,,FSMC_A17,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,I2CFMP1_SDA,,,,,QUADSPI_BK1_IO3,,,FSMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,I2CFMP1_SCL,,,,,,,,FSMC_D0/FSMC_DA0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,I2CFMP1_SDA,,,,,,,,FSMC_D1/FSMC_DA1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,,,,,FSMC_NBL0,,,EVENTOUT, -PortE,PE1,,,,,,,,,,,,,FSMC_NBL1,,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK/I2S4_CK,SPI5_SCK/I2S5_CK,SAI1_MCLK_A,,QUADSPI_BK1_IO2,,,FSMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,,SAI1_SD_B,,,,,FSMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS/I2S4_WS,SPI5_NSS/I2S5_WS,SAI1_SD_A,DFSDM1_DATIN3,,,,FSMC_A20,,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SPI5_MISO,SAI1_SCK_A,DFSDM1_CKIN3,,,,FSMC_A21,,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI/I2S4_SD,SPI5_MOSI/I2S5_SD,SAI1_FS_A,,,,,FSMC_A22,,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,DFSDM1_DATIN2,,,,QUADSPI_BK2_IO0,,FSMC_D4/FSMC_DA4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,DFSDM1_CKIN2,,,,QUADSPI_BK2_IO1,,FSMC_D5/FSMC_DA5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,DFSDM1_CKOUT,,,,QUADSPI_BK2_IO2,,FSMC_D6/FSMC_DA6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,QUADSPI_BK2_IO3,,FSMC_D7/FSMC_DA7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS/I2S4_WS,SPI5_NSS/I2S5_WS,,,,,,FSMC_D8/FSMC_DA8,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK/I2S4_CK,SPI5_SCK/I2S5_CK,,,,,,FSMC_D9/FSMC_DA9,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,SPI5_MISO,,,,,,FSMC_D10/FSMC_DA10,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI/I2S4_SD,SPI5_MOSI/I2S5_SD,,,,,,FSMC_D11/FSMC_DA11,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FSMC_D12/FSMC_DA12,,,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FSMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FSMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FSMC_A2,,,EVENTOUT, -PortF,PF3,,,TIM5_CH1,,,,,,,,,,FSMC_A3,,,EVENTOUT, -PortF,PF4,,,TIM5_CH2,,,,,,,,,,FSMC_A4,,,EVENTOUT, -PortF,PF5,,,TIM5_CH3,,,,,,,,,,FSMC_A5,,,EVENTOUT, -PortF,PF6,TRACED0,,,TIM10_CH1,,,,SAI1_SD_B,,QUADSPI_BK1_IO3,,,,,,EVENTOUT, -PortF,PF7,TRACED1,,,TIM11_CH1,,,,SAI1_MCLK_B,,QUADSPI_BK1_IO2,,,,,,EVENTOUT, -PortF,PF8,,,,,,,,SAI1_SCK_B,,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT, -PortF,PF9,,,,,,,,SAI1_FS_B,,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT, -PortF,PF10,,TIM1_ETR,TIM5_CH4,,,,,,,,,,,,,EVENTOUT, -PortF,PF11,,,,TIM8_ETR,,,,,,,,,,,,EVENTOUT, -PortF,PF12,,,,TIM8_BKIN,,,,,,,,,FSMC_A6,,,EVENTOUT, -PortF,PF13,,,,,I2CFMP1_SMBA,,,,,,,,FSMC_A7,,,EVENTOUT, -PortF,PF14,,,,,I2CFMP1_SCL,,,,,,,,FSMC_A8,,,EVENTOUT, -PortF,PF15,,,,,I2CFMP1_SDA,,,,,,,,FSMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,CAN1_RX,,,FSMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,CAN1_TX,,,FSMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FSMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FSMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FSMC_A14,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FSMC_A15,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,QUADSPI_BK1_NCS,,,,,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,,,,EVENTOUT, -PortG,PG8,,,,,,,,,USART6_RTS,,,,,,,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,QUADSPI_BK2_IO2,,,FSMC_NE2,,,EVENTOUT, -PortG,PG10,,,,,,,,,,,,,FSMC_NE3,,,EVENTOUT, -PortG,PG11,,,,,,,,,,CAN2_RX,,,,,,EVENTOUT, -PortG,PG12,,,,,,,,,USART6_RTS,CAN2_TX,,,FSMC_NE4,,,EVENTOUT, -PortG,PG13,TRACED2,,,,,,,,USART6_CTS,,,,FSMC_A24,,,EVENTOUT, -PortG,PG14,TRACED3,,,,,,,,USART6_TX,QUADSPI_BK2_IO3,,,FSMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12 ,AF13,AF14,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2 ,TIM3/TIM4/TIM5,TIM8/9/10/11,I2C1/2/3/I2CFMP1,SPI1/2/3/4/I2S1/2/3/4,SPI2/3/4/5/I2S2/3/4/5/DFSDM1/2,SPI3/I2S3/USART1/2/3,USART3/6/CAN1/DFSDM1,I2C2/I2C3/I2CFMP1/CAN1/2/TIM12/13/14/QUADSPI,DFSDM1/QUADSPI/FSMC/OTG1_FS, ,FSMC /SDIO , , ,SYS_AF ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1 ,TIM8_ETR , , , ,USART2_CTS , , , , , , , ,EVENTOUT,ADC1_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , , ,SPI4_MOSI/I2S4_SD , ,USART2_RTS , ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC1_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,TIM9_CH1 , ,I2S2_CKIN , ,USART2_TX , , , , ,FSMC_D4 , , ,EVENTOUT,ADC1_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,TIM9_CH2 , ,I2S2_MCK , ,USART2_RX , , , , ,FSMC_D5 , , ,EVENTOUT,ADC1_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK ,DFSDM1_DATIN1 , , , ,FSMC_D6 , , ,EVENTOUT,ADC1_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , ,DFSDM1_CKIN1 , , , ,FSMC_D7 , , ,EVENTOUT,ADC1_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,SPI1_MISO ,I2S2_MCK , , ,TIM13_CH1 ,QUADSPI_BK2_IO0 , ,SDIO_CMD , , ,EVENTOUT,ADC1_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,SPI1_MOSI/I2S1_SD , , , ,TIM14_CH1 ,QUADSPI_BK2_IO1 , , , , ,EVENTOUT,ADC1_IN7 +PortA,PA8 ,MCO_1 ,TIM1_CH1 , , ,I2C3_SCL , ,DFSDM1_CKOUT ,USART1_CK , , ,USB_FS_SOF , ,SDIO_D1 , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , , ,USB_FS_VBUS , ,SDIO_D2 , , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , ,SPI2_MOSI/I2S2_SD ,SPI5_MOSI/I2S5_SD ,USART1_RX , , ,USB_FS_ID , , , , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , ,SPI2_NSS/I2S2_WS ,SPI4_MISO ,USART1_CTS ,USART6_TX ,CAN1_RX ,USB_FS_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , ,SPI2_MISO ,SPI5_MISO ,USART1_RTS ,USART6_RX ,CAN1_TX ,USB_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART1_TX , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , , ,SPI5_SCK/I2S5_CK , , , , , , , , ,EVENTOUT,ADC1_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,SPI5_NSS/I2S5_WS , ,DFSDM1_DATIN0 ,QUADSPI_CLK , , , , , ,EVENTOUT,ADC1_IN9 +PortB,PB2 , , , , , , ,DFSDM1_CKIN0 , , ,QUADSPI_CLK , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO ,TIM2_CH2 , , ,I2CFMP1_SDA ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK ,USART1_RX ,UART7_RX ,I2C2_SDA , , , , , ,EVENTOUT, +PortB,PB4 ,JTRST , ,TIM3_CH1 , , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD ,UART7_TX ,I2C3_SDA , , ,SDIO_D0 , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2 , ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD ,SPI3_MOSI/I2S3_SD , , ,CAN2_RX , , ,SDIO_D3 , , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1 , ,I2C1_SCL , ,DFSDM2_CKIN7 ,USART1_TX , ,CAN2_TX ,QUADSPI_BK1_NCS , ,SDIO_D0 , , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2 , ,I2C1_SDA , ,DFSDM2_DATIN7 ,USART1_RX , , , , ,FSMC_NL , , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3 ,TIM10_CH1 ,I2C1_SCL , ,SPI5_MOSI/I2S5_SD , ,CAN1_RX ,I2C3_SDA , , ,SDIO_D4 , , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4 ,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,DFSDM2_DATIN1 , ,CAN1_TX ,I2C2_SDA , , ,SDIO_D5 , , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,I2S3_MCK ,USART3_TX , ,I2CFMP4_SCL , , ,SDIO_D7 , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA ,I2S2_CKIN , ,USART3_RX , , , , , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,SPI4_NSS/I2S4_WS ,SPI3_SCK/I2S3_CK ,USART3__CK ,CAN2_RX ,DFSDM1_DATIN1 , ,FSMC_D13/FSMC_DA13, , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2CFMP1_SMBA ,SPI2_SCK/I2S2_CK ,SPI4_SCK/I2S4_CK , ,USART3_CTS ,CAN2_TX ,DFSDM1_CKIN1 , , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N ,I2CFMP1_SDA ,SPI2_MISO ,I2S2ext_SD ,USART3_RTS ,DFSDM1_DATIN2 ,TIM12_CH1 ,FSMC_D0 , ,SDIO_D6 , , ,EVENTOUT, +PortB,PB15,RTC_50HZ ,TIM1_CH3N , ,TIM8_CH3N ,I2CFMP1_SCL ,SPI2_MOSI/I2S2_SD , , ,DFSDM1_CKIN2 ,TIM12_CH2 , , ,SDIO_CK , , ,EVENTOUT, +PortC,PC0 , , , , , , , ,SAI1_MCLK_B , , , , , , , ,EVENTOUT,ADC1_IN10 +PortC,PC1 , , , , , , , ,SAI1_SD_B , , , , , , , ,EVENTOUT,ADC1_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2ext_SD ,SAI1_SCK_B ,DFSDM1_CKOUT , , , ,FSMC_NWE , , ,EVENTOUT,ADC1_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD , ,SAI1_FS_B , , , , ,FSMC_A0 , , ,EVENTOUT,ADC1_IN13 +PortC,PC4 , , , , , ,I2S1_MCK , , , , ,QUADSPI_BK2_IO2 , ,FSMC_NE4 , , ,EVENTOUT,ADC1_IN14 +PortC,PC5 , , , , ,I2CFMP1_SMBA , , ,USART3_RX , , ,QUADSPI_BK2_IO3 , ,FSMC_NOE , , ,EVENTOUT,ADC1_IN15 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 ,2CFMP1_SCL ,I2S2_MCK ,DFSDM1_CKIN3 , ,USART6_TX , ,FSMC_D1 , ,SDIO_D6 , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 ,TIM8_CH2 ,I2CFMP1_SDA ,SPI2_SCK/I2S2_CK ,I2S3_MCK , ,USART6_RX , ,DFSDM1_DATIN3 , ,SDIO_D7 , , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 ,TIM8_CH3 , , , , ,USART6_CK ,QUADSPI_BK1_IO2 , , ,SDIO_D0 , , ,EVENTOUT, +PortC,PC9 ,MCO_2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,I2S2_CKIN , , , ,QUADSPI_BK1_IO0 , , ,SDIO_D1 , , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX , ,QUADSPI_BK1_IO1 , , ,SDIO_D2 , , ,EVENTOUT, +PortC,PC11, , , , , ,I2S3ext_SD ,SPI3_MISO ,USART3_RX , ,QUADSPI_BK2_NCS ,FSMC_D2 , ,SDIO_D3 , , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD ,USART3_CK , , ,FSMC_D3 , ,SDIO_CK , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FSMC_D2/FSMC_DA2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FSMC_D3/FSMC_DA3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR , , , , , , , ,FSMC_NWE , ,SDIO_CMD , , ,EVENTOUT, +PortD,PD3 ,TRACED1 , , , , ,SPI2_SCK/I2S2_CK ,DFSDM1_DATIN0 ,USART2_CTS , ,QUADSPI_CLK , , ,FSMC_CLK , , ,EVENTOUT, +PortD,PD4 , , , , , , ,DFSDM1_CKIN0 ,USART2_RTS , , , , ,FSMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FSMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD ,DFSDM1_DATIN1 ,USART2_RX , , , , ,FSMC_NWAIT , , ,EVENTOUT, +PortD,PD7 , , , , , , ,DFSDM1_CKIN1 ,USART2_CK , , , , ,FSMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FSMC_D13/FSMC_DA13, , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FSMC_D14/FSMC_DA14, , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FSMC_D15/FSMC_DA15, , ,EVENTOUT, +PortD,PD11, , , , ,I2CFMP1_SMBA , , ,USART3_CTS , ,QUADSPI_BK1_IO0 , , ,FSMC_A16 , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 , ,I2CFMP1_SCL , , ,USART3_RTS , ,QUADSPI_BK1_IO1 , , ,FSMC_A17 , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , ,I2CFMP1_SDA , , , , ,QUADSPI_BK1_IO3 , , ,FSMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , ,I2CFMP1_SCL , , , , , , , ,FSMC_D0/FSMC_DA0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , ,I2CFMP1_SDA , , , , , , , ,FSMC_D1/FSMC_DA1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR , , , , , , , , , ,FSMC_NBL0 , , ,EVENTOUT, +PortE,PE1 , , , , , , , , , , , , ,FSMC_NBL1 , , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK/I2S4_CK ,SPI5_SCK/I2S5_CK ,SAI1_MCLK_A , ,QUADSPI_BK1_IO2 , , ,FSMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , , ,SAI1_SD_B , , , , ,FSMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS/I2S4_WS ,SPI5_NSS/I2S5_WS ,SAI1_SD_A ,DFSDM1_DATIN3 , , , ,FSMC_A20 , , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SPI5_MISO ,SAI1_SCK_A ,DFSDM1_CKIN3 , , , ,FSMC_A21 , , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI/I2S4_SD ,SPI5_MOSI/I2S5_SD ,SAI1_FS_A , , , , ,FSMC_A22 , , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,DFSDM1_DATIN2 , , , ,QUADSPI_BK2_IO0 , ,FSMC_D4/FSMC_DA4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,DFSDM1_CKIN2 , , , ,QUADSPI_BK2_IO1 , ,FSMC_D5/FSMC_DA5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,DFSDM1_CKOUT , , , ,QUADSPI_BK2_IO2 , ,FSMC_D6/FSMC_DA6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , ,QUADSPI_BK2_IO3 , ,FSMC_D7/FSMC_DA7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS/I2S4_WS ,SPI5_NSS/I2S5_WS , , , , , ,FSMC_D8/FSMC_DA8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK/I2S4_CK ,SPI5_SCK/I2S5_CK , , , , , ,FSMC_D9/FSMC_DA9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO ,SPI5_MISO , , , , , ,FSMC_D10/FSMC_DA10, , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI/I2S4_SD ,SPI5_MOSI/I2S5_SD , , , , , ,FSMC_D11/FSMC_DA11, , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FSMC_D12/FSMC_DA12, , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FSMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FSMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FSMC_A2 , , ,EVENTOUT, +PortF,PF3 , , ,TIM5_CH1 , , , , , , , , , ,FSMC_A3 , , ,EVENTOUT, +PortF,PF4 , , ,TIM5_CH2 , , , , , , , , , ,FSMC_A4 , , ,EVENTOUT, +PortF,PF5 , , ,TIM5_CH3 , , , , , , , , , ,FSMC_A5 , , ,EVENTOUT, +PortF,PF6 ,TRACED0 , , ,TIM10_CH1 , , , ,SAI1_SD_B , ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT, +PortF,PF7 ,TRACED1 , , ,TIM11_CH1 , , , ,SAI1_MCLK_B , ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT, +PortF,PF8 , , , , , , , ,SAI1_SCK_B , ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT, +PortF,PF9 , , , , , , , ,SAI1_FS_B , ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT, +PortF,PF10, ,TIM1_ETR ,TIM5_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortF,PF11, , , ,TIM8_ETR , , , , , , , , , , , ,EVENTOUT, +PortF,PF12, , , ,TIM8_BKIN , , , , , , , , ,FSMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , ,I2CFMP1_SMBA , , , , , , , ,FSMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , ,I2CFMP1_SCL , , , , , , , ,FSMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , ,I2CFMP1_SDA , , , , , , , ,FSMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , ,CAN1_RX , , ,FSMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , ,CAN1_TX , , ,FSMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FSMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FSMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FSMC_A14 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FSMC_A15 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , ,QUADSPI_BK1_NCS , , , , ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , , , , ,EVENTOUT, +PortG,PG8 , , , , , , , , ,USART6_RTS , , , , , , ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX ,QUADSPI_BK2_IO2 , , ,FSMC_NE2 , , ,EVENTOUT, +PortG,PG10, , , , , , , , , , , , ,FSMC_NE3 , , ,EVENTOUT, +PortG,PG11, , , , , , , , , ,CAN2_RX , , , , , ,EVENTOUT, +PortG,PG12, , , , , , , , ,USART6_RTS ,CAN2_TX , , ,FSMC_NE4 , , ,EVENTOUT, +PortG,PG13,TRACED2 , , , , , , , ,USART6_CTS , , , ,FSMC_A24 , , ,EVENTOUT, +PortG,PG14,TRACED3 , , , , , , , ,USART6_TX ,QUADSPI_BK2_IO3 , , ,FSMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f413_af.csv b/ports/stm32/boards/stm32f413_af.csv index 428ce44cfcbbe..c564ea090b45a 100644 --- a/ports/stm32/boards/stm32f413_af.csv +++ b/ports/stm32/boards/stm32f413_af.csv @@ -1,116 +1,116 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM1/TIM2/LPTIM1,TIM3/TIM4/TIM5,TIM8/9/10/11/DFSDM2,I2C1/2/3/I2CFMP1,SPI1/2/3/4/I2S1/2/3/4,SPI2/3/4/5/I2S2/3/4/5/DFSDM1/2,SPI3/I2S3/USART1/2/3/DFSDM2,USART3/4/5/6/7/8/CAN1/DFSDM1,I2C2/I2C3/I2CFMP1/CAN1/2/TIM12/13/14/QUADSPI,SAI1/DFSDM1/DFSDM2/QUADSPI/FSMC/OTG1_FS,UART4/5/9/10/CAN3,FSMC /SDIO,,RNG,SYS_AF,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,,,,,EVENTOUT,ADC1_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,SPI4_MOSI/I2S4_SD,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC1_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,I2S2_CKIN,,USART2_TX,,,,,FSMC_D4,,,EVENTOUT,ADC1_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,I2S2_MCK,,USART2_RX,,,SAI1_SD_B,,FSMC_D5,,,EVENTOUT,ADC1_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,DFSDM1_DATIN1,,,,FSMC_D6,,,EVENTOUT,ADC1_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,DFSDM1_CKIN1,,,,FSMC_D7,,,EVENTOUT,ADC1_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,I2S2_MCK,DFSDM2_CKIN1,,TIM13_CH1,QUADSPI_BK2_IO0,,SDIO_CMD,,,EVENTOUT,ADC1_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SD,,DFSDM2_DATIN1,,TIM14_CH1,QUADSPI_BK2_IO1,,,,,EVENTOUT,ADC1_IN7 -PortA,PA8,MCO_1,TIM1_CH1,,,I2C3_SCL,,DFSDM1_CKOUT,USART1_CK,UART7_RX,,USB_FS_SOF,CAN3_RX,SDIO_D1,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,DFSDM2_CKIN3,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,USB_FS_VBUS,,SDIO_D2,,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,DFSDM2_DATIN3,,SPI2_MOSI/I2S2_SD,SPI5_MOSI/I2S5_SD,USART1_RX,,,USB_FS_ID,,,,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,DFSDM2_CKIN5,,SPI2_NSS/I2S2_WS,SPI4_MISO,USART1_CTS,USART6_TX,CAN1_RX,USB_FS_DM,UART4_RX,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,DFSDM2_DATIN5,,SPI2_MISO,SPI5_MISO,USART1_RTS,USART6_RX,CAN1_TX,USB_FS_DP,UART4_TX,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART1_TX,UART7_TX,,SAI1_MCLK_A,CAN3_TX,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,SPI5_SCK/I2S5_CK,,,,,,,,,EVENTOUT,ADC1_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,SPI5_NSS/I2S5_WS,,DFSDM1_DATIN0,QUADSPI_CLK,,,,,,EVENTOUT,ADC1_IN9 -PortB,PB2,,LPTIM1_OUT,,,,,DFSDM1_CKIN0,,,QUADSPI_CLK,,,,,,EVENTOUT, -PortB,PB3,JTDO,TIM2_CH2,,,I2CFMP1_SDA,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,USART1_RX,UART7_RX,I2C2_SDA,SAI1_SD_A,CAN3_RX,,,,EVENTOUT, -PortB,PB4,JTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,UART7_TX,I2C3_SDA,SAI1_SCK_A,CAN3_TX,SDIO_D0,,,EVENTOUT, -PortB,PB5,,LPTIM1_IN1,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,,CAN2_RX,SAI1_FS_A,UART5_RX,SDIO_D3,,,EVENTOUT, -PortB,PB6,,LPTIM1_ETR,TIM4_CH1,,I2C1_SCL,,DFSDM2_CKIN7,USART1_TX,,CAN2_TX,QUADSPI_BK1_NCS,UART5_TX,SDIO_D0,,,EVENTOUT, -PortB,PB7,,LPTIM1_IN2,TIM4_CH2,,I2C1_SDA,,DFSDM2_DATIN7,USART1_RX,,,,,FSMC_NL,,,EVENTOUT, -PortB,PB8,,LPTIM1_OUT,TIM4_CH3,TIM10_CH1,I2C1_SCL,,SPI5_MOSI/I2S5_SD,DFSDM2_CKIN1,CAN1_RX,I2C3_SDA,,UART5_RX,SDIO_D4,,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,DFSDM2_DATIN1,,CAN1_TX,I2C2_SDA,,UART5_TX,SDIO_D5,,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,I2S3_MCK,USART3_TX,,I2CFMP4_SCL,DFSDM2_CKOUT,,SDIO_D7,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,I2S2_CKIN,,USART3_RX,,,,,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,SPI4_NSS/I2S4_WS,SPI3_SCK/I2S3_CK,USART3__CK,CAN2_RX,DFSDM1_DATIN1,UART5_RX,FSMC_D13/FSMC_DA13,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,I2CFMP1_SMBA,SPI2_SCK/I2S2_CK,SPI4_SCK/I2S4_CK,,USART3_CTS,CAN2_TX,DFSDM1_CKIN1,UART5_TX,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,I2CFMP1_SDA,SPI2_MISO,I2S2ext_SD,USART3_RTS,DFSDM1_DATIN2,TIM12_CH1,FSMC_D0,,SDIO_D6,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,I2CFMP1_SCL,SPI2_MOSI/I2S2_SD,,,DFSDM1_CKIN2,TIM12_CH2,,,SDIO_CK,,,EVENTOUT, -PortC,PC0,,LPTIM1_IN1,,DFSDM2_CKIN4,,,,SAI1_MCLK_B,,,,,,,,EVENTOUT,ADC1_IN10 -PortC,PC1,,LPTIM1_OUT,,DFSDM2_DATIN4,,,,SAI1_SD_B,,,,,,,,EVENTOUT,ADC1_IN11 -PortC,PC2,,LPTIM1_IN2,,DFSDM2_DATIN7,,SPI2_MISO,I2S2ext_SD,SAI1_SCK_B,DFSDM1_CKOUT,,,,FSMC_NWE,,,EVENTOUT,ADC1_IN12 -PortC,PC3,,LPTIM1_ETR,,DFSDM2_CKIN7,,SPI2_MOSI/I2S2_SD,,SAI1_FS_B,,,,,FSMC_A0,,,EVENTOUT,ADC1_IN13 -PortC,PC4,,,,DFSDM2_CKIN2,,I2S1_MCK,,,,,QUADSPI_BK2_IO2,,FSMC_NE4,,,EVENTOUT,ADC1_IN14 -PortC,PC5,,,,DFSDM2_DATIN2,I2CFMP1_SMBA,,,USART3_RX,,,QUADSPI_BK2_IO3,,FSMC_NOE,,,EVENTOUT,ADC1_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,2CFMP1_SCL,I2S2_MCK,DFSDM1_CKIN3,DFSDM2_DATIN6,USART6_TX,,FSMC_D1,,SDIO_D6,,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,I2CFMP1_SDA,SPI2_SCK/I2S2_CK,I2S3_MCK,DFSDM2_CKIN6,USART6_RX,,DFSDM1_DATIN3,,SDIO_D7,,,EVENTOUT, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,DFSDM2_CKIN3,USART6_CK,QUADSPI_BK1_IO2,,,SDIO_D0,,,EVENTOUT, -PortC,PC9,MCO_2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S2_CKIN,,DFSDM2_DATIN3,,QUADSPI_BK1_IO0,,,SDIO_D1,,,EVENTOUT, -PortC,PC10,,,,DFSDM2_CKIN5,,,SPI3_SCK/I2S3_CK,USART3_TX,,QUADSPI_BK1_IO1,,,SDIO_D2,,,EVENTOUT, -PortC,PC11,,,,DFSDM2_DATIN5,,I2S3ext_SD,SPI3_MISO,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,FSMC_D2,,SDIO_D3,,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,FSMC_D3,,SDIO_CK,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,DFSDM2_CKIN6,,,,,,CAN1_RX,,UART4_RX,FSMC_D2/FSMC_DA2,,,EVENTOUT, -PortD,PD1,,,,DFSDM2_DATIN6,,,,,,CAN1_TX,,UART4_TX,FSMC_D3/FSMC_DA3,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,DFSDM2_CKOUT,,,,,UART5_RX,,FSMC_NWE,,SDIO_CMD,,,EVENTOUT, -PortD,PD3,TRACED1,,,,,SPI2_SCK/I2S2_CK,DFSDM1_DATIN0,USART2_CTS,,QUADSPI_CLK,,,FSMC_CLK,,,EVENTOUT, -PortD,PD4,,,,,,,DFSDM1_CKIN0,USART2_RTS,,,,,FSMC_NOE,,,EVENTOUT, -PortD,PD5,,,,DFSDM2_CKOUT,,,,USART2_TX,,,,,FSMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,DFSDM1_DATIN1,USART2_RX,,,,,FSMC_NWAIT,,,EVENTOUT, -PortD,PD7,,,,,,,DFSDM1_CKIN1,USART2_CK,,,,,FSMC_NE1,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FSMC_D13/FSMC_DA13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FSMC_D14/FSMC_DA14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,UART4_TX,,,,FSMC_D15/FSMC_DA15,,,EVENTOUT, -PortD,PD11,,,,DFSDM2_DATIN2,I2CFMP1_SMBA,,,USART3_CTS,,QUADSPI_BK1_IO0,,,FSMC_A16,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,DFSDM2_CKIN2,I2CFMP1_SCL,,,USART3_RTS,,QUADSPI_BK1_IO1,,,FSMC_A17,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,I2CFMP1_SDA,,,,,QUADSPI_BK1_IO3,,,FSMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,I2CFMP1_SCL,,,,,,DFSDM2_CKIN0,UART9_RX,FSMC_D0/FSMC_DA0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,I2CFMP1_SDA,,,,,,DFSDM2_DATIN0,UART9_TX,FSMC_D1/FSMC_DA1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,DFSDM2_CKIN4,,,,,UART8_RX,,,,FSMC_NBL0,,,EVENTOUT, -PortE,PE1,,,,DFSDM2_DATIN4,,,,,UART8_TX,,,,FSMC_NBL1,,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK/I2S4_CK,SPI5_SCK/I2S5_CK,SAI1_MCLK_A,,QUADSPI_BK1_IO2,,UART10_RX,FSMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,,SAI1_SD_B,,,,UART10_TX,FSMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS/I2S4_WS,SPI5_NSS/I2S5_WS,SAI1_SD_A,DFSDM1_DATIN3,,,,FSMC_A20,,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SPI5_MISO,SAI1_SCK_A,DFSDM1_CKIN3,,,,FSMC_A21,,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI/I2S4_SD,SPI5_MOSI/I2S5_SD,SAI1_FS_A,,,,,FSMC_A22,,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,DFSDM1_DATIN2,,UART7_RX,,QUADSPI_BK2_IO0,,FSMC_D4/FSMC_DA4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,DFSDM1_CKIN2,,UART7_TX,,QUADSPI_BK2_IO1,,FSMC_D5/FSMC_DA5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,DFSDM1_CKOUT,,,,QUADSPI_BK2_IO2,,FSMC_D6/FSMC_DA6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,DFSDM2_DATIN0,,,,,,,QUADSPI_BK2_IO3,,FSMC_D7/FSMC_DA7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,DFSDM2_CKIN0,,SPI4_NSS/I2S4_WS,SPI5_NSS/I2S5_WS,,,,,,FSMC_D8/FSMC_DA8,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,DFSDM2_DATIN7,,SPI4_SCK/I2S4_CK,SPI5_SCK/I2S5_CK,,,,,,FSMC_D9/FSMC_DA9,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,DFSDM2_CKIN7,,SPI4_MISO,SPI5_MISO,,,,,,FSMC_D10/FSMC_DA10,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI/I2S4_SD,SPI5_MOSI/I2S5_SD,,,,DFSDM2_DATIN1,,FSMC_D11/FSMC_DA11,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,DFSDM2_CKIN1,,FSMC_D12/FSMC_DA12,,,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FSMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FSMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FSMC_A2,,,EVENTOUT, -PortF,PF3,,,TIM5_CH1,,,,,,,,,,FSMC_A3,,,EVENTOUT, -PortF,PF4,,,TIM5_CH2,,,,,,,,,,FSMC_A4,,,EVENTOUT, -PortF,PF5,,,TIM5_CH3,,,,,,,,,,FSMC_A5,,,EVENTOUT, -PortF,PF6,TRACED0,,,TIM10_CH1,,,,SAI1_SD_B,UART7_RX,QUADSPI_BK1_IO3,,,,,,EVENTOUT, -PortF,PF7,TRACED1,,,TIM11_CH1,,,,SAI1_MCLK_B,UART7_TX,QUADSPI_BK1_IO2,,,,,,EVENTOUT, -PortF,PF8,,,,,,,,SAI1_SCK_B,UART8_RX,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT, -PortF,PF9,,,,,,,,SAI1_FS_B,UART8_TX,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT, -PortF,PF10,,TIM1_ETR,TIM5_CH4,,,,,,,,,,,,,EVENTOUT, -PortF,PF11,,,,TIM8_ETR,,,,,,,,,,,,EVENTOUT, -PortF,PF12,,,,TIM8_BKIN,,,,,,,,,FSMC_A6,,,EVENTOUT, -PortF,PF13,,,,,I2CFMP1_SMBA,,,,,,,,FSMC_A7,,,EVENTOUT, -PortF,PF14,,,,,I2CFMP1_SCL,,,,,,,,FSMC_A8,,,EVENTOUT, -PortF,PF15,,,,,I2CFMP1_SDA,,,,,,,,FSMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,CAN1_RX,,UART9_RX,FSMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,CAN1_TX,,UART9_TX,FSMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FSMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FSMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FSMC_A14,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FSMC_A15,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,QUADSPI_BK1_NCS,,,,,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,,,,EVENTOUT, -PortG,PG8,,,,,,,,,USART6_RTS,,,,,,,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,QUADSPI_BK2_IO2,,,FSMC_NE2,,,EVENTOUT, -PortG,PG10,,,,,,,,,,,,,FSMC_NE3,,,EVENTOUT, -PortG,PG11,,,,,,,,,,CAN2_RX,,UART10_RX,,,,EVENTOUT, -PortG,PG12,,,,,,,,,USART6_RTS,CAN2_TX,,UART10_TX,FSMC_NE4,,,EVENTOUT, -PortG,PG13,TRACED2,,,,,,,,USART6_CTS,,,,FSMC_A24,,,EVENTOUT, -PortG,PG14,TRACED3,,,,,,,,USART6_TX,QUADSPI_BK2_IO3,,,FSMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13,AF14,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/LPTIM1 ,TIM3/TIM4/TIM5,TIM8/9/10/11/DFSDM2,I2C1/2/3/I2CFMP1,SPI1/2/3/4/I2S1/2/3/4,SPI2/3/4/5/I2S2/3/4/5/DFSDM1/2,SPI3/I2S3/USART1/2/3/DFSDM2,USART3/4/5/6/7/8/CAN1/DFSDM1,I2C2/I2C3/I2CFMP1/CAN1/2/TIM12/13/14/QUADSPI,SAI1/DFSDM1/DFSDM2/QUADSPI/FSMC/OTG1_FS,UART4/5/9/10/CAN3,FSMC /SDIO , ,RNG ,SYS_AF ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1 ,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , , , , , ,EVENTOUT,ADC1_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , , ,SPI4_MOSI/I2S4_SD , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC1_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,TIM9_CH1 , ,I2S2_CKIN , ,USART2_TX , , , , ,FSMC_D4 , , ,EVENTOUT,ADC1_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,TIM9_CH2 , ,I2S2_MCK , ,USART2_RX , , ,SAI1_SD_B , ,FSMC_D5 , , ,EVENTOUT,ADC1_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK ,DFSDM1_DATIN1 , , , ,FSMC_D6 , , ,EVENTOUT,ADC1_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , ,DFSDM1_CKIN1 , , , ,FSMC_D7 , , ,EVENTOUT,ADC1_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,SPI1_MISO ,I2S2_MCK ,DFSDM2_CKIN1 , ,TIM13_CH1 ,QUADSPI_BK2_IO0 , ,SDIO_CMD , , ,EVENTOUT,ADC1_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,SPI1_MOSI/I2S1_SD , ,DFSDM2_DATIN1 , ,TIM14_CH1 ,QUADSPI_BK2_IO1 , , , , ,EVENTOUT,ADC1_IN7 +PortA,PA8 ,MCO_1 ,TIM1_CH1 , , ,I2C3_SCL , ,DFSDM1_CKOUT ,USART1_CK ,UART7_RX , ,USB_FS_SOF ,CAN3_RX ,SDIO_D1 , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , ,DFSDM2_CKIN3 ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , , ,USB_FS_VBUS , ,SDIO_D2 , , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , ,DFSDM2_DATIN3 , ,SPI2_MOSI/I2S2_SD ,SPI5_MOSI/I2S5_SD ,USART1_RX , , ,USB_FS_ID , , , , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , ,DFSDM2_CKIN5 , ,SPI2_NSS/I2S2_WS ,SPI4_MISO ,USART1_CTS ,USART6_TX ,CAN1_RX ,USB_FS_DM ,UART4_RX , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , ,DFSDM2_DATIN5 , ,SPI2_MISO ,SPI5_MISO ,USART1_RTS ,USART6_RX ,CAN1_TX ,USB_FS_DP ,UART4_TX , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART1_TX ,UART7_TX , ,SAI1_MCLK_A ,CAN3_TX , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , , ,SPI5_SCK/I2S5_CK , , , , , , , , ,EVENTOUT,ADC1_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,SPI5_NSS/I2S5_WS , ,DFSDM1_DATIN0 ,QUADSPI_CLK , , , , , ,EVENTOUT,ADC1_IN9 +PortB,PB2 , ,LPTIM1_OUT , , , , ,DFSDM1_CKIN0 , , ,QUADSPI_CLK , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO ,TIM2_CH2 , , ,I2CFMP1_SDA ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK ,USART1_RX ,UART7_RX ,I2C2_SDA ,SAI1_SD_A ,CAN3_RX , , , ,EVENTOUT, +PortB,PB4 ,JTRST , ,TIM3_CH1 , , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD ,UART7_TX ,I2C3_SDA ,SAI1_SCK_A ,CAN3_TX ,SDIO_D0 , , ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 ,TIM3_CH2 , ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD ,SPI3_MOSI/I2S3_SD , , ,CAN2_RX ,SAI1_FS_A ,UART5_RX ,SDIO_D3 , , ,EVENTOUT, +PortB,PB6 , ,LPTIM1_ETR ,TIM4_CH1 , ,I2C1_SCL , ,DFSDM2_CKIN7 ,USART1_TX , ,CAN2_TX ,QUADSPI_BK1_NCS ,UART5_TX ,SDIO_D0 , , ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 ,TIM4_CH2 , ,I2C1_SDA , ,DFSDM2_DATIN7 ,USART1_RX , , , , ,FSMC_NL , , ,EVENTOUT, +PortB,PB8 , ,LPTIM1_OUT ,TIM4_CH3 ,TIM10_CH1 ,I2C1_SCL , ,SPI5_MOSI/I2S5_SD ,DFSDM2_CKIN1 ,CAN1_RX ,I2C3_SDA , ,UART5_RX ,SDIO_D4 , , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4 ,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,DFSDM2_DATIN1 , ,CAN1_TX ,I2C2_SDA , ,UART5_TX ,SDIO_D5 , , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,I2S3_MCK ,USART3_TX , ,I2CFMP4_SCL ,DFSDM2_CKOUT , ,SDIO_D7 , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA ,I2S2_CKIN , ,USART3_RX , , , , , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,SPI4_NSS/I2S4_WS ,SPI3_SCK/I2S3_CK ,USART3__CK ,CAN2_RX ,DFSDM1_DATIN1 ,UART5_RX ,FSMC_D13/FSMC_DA13, , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2CFMP1_SMBA ,SPI2_SCK/I2S2_CK ,SPI4_SCK/I2S4_CK , ,USART3_CTS ,CAN2_TX ,DFSDM1_CKIN1 ,UART5_TX , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N ,I2CFMP1_SDA ,SPI2_MISO ,I2S2ext_SD ,USART3_RTS ,DFSDM1_DATIN2 ,TIM12_CH1 ,FSMC_D0 , ,SDIO_D6 , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N ,I2CFMP1_SCL ,SPI2_MOSI/I2S2_SD , , ,DFSDM1_CKIN2 ,TIM12_CH2 , , ,SDIO_CK , , ,EVENTOUT, +PortC,PC0 , ,LPTIM1_IN1 , ,DFSDM2_CKIN4 , , , ,SAI1_MCLK_B , , , , , , , ,EVENTOUT,ADC1_IN10 +PortC,PC1 , ,LPTIM1_OUT , ,DFSDM2_DATIN4 , , , ,SAI1_SD_B , , , , , , , ,EVENTOUT,ADC1_IN11 +PortC,PC2 , ,LPTIM1_IN2 , ,DFSDM2_DATIN7 , ,SPI2_MISO ,I2S2ext_SD ,SAI1_SCK_B ,DFSDM1_CKOUT , , , ,FSMC_NWE , , ,EVENTOUT,ADC1_IN12 +PortC,PC3 , ,LPTIM1_ETR , ,DFSDM2_CKIN7 , ,SPI2_MOSI/I2S2_SD , ,SAI1_FS_B , , , , ,FSMC_A0 , , ,EVENTOUT,ADC1_IN13 +PortC,PC4 , , , ,DFSDM2_CKIN2 , ,I2S1_MCK , , , , ,QUADSPI_BK2_IO2 , ,FSMC_NE4 , , ,EVENTOUT,ADC1_IN14 +PortC,PC5 , , , ,DFSDM2_DATIN2 ,I2CFMP1_SMBA , , ,USART3_RX , , ,QUADSPI_BK2_IO3 , ,FSMC_NOE , , ,EVENTOUT,ADC1_IN15 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 ,2CFMP1_SCL ,I2S2_MCK ,DFSDM1_CKIN3 ,DFSDM2_DATIN6 ,USART6_TX , ,FSMC_D1 , ,SDIO_D6 , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 ,TIM8_CH2 ,I2CFMP1_SDA ,SPI2_SCK/I2S2_CK ,I2S3_MCK ,DFSDM2_CKIN6 ,USART6_RX , ,DFSDM1_DATIN3 , ,SDIO_D7 , , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 ,TIM8_CH3 , , , ,DFSDM2_CKIN3 ,USART6_CK ,QUADSPI_BK1_IO2 , , ,SDIO_D0 , , ,EVENTOUT, +PortC,PC9 ,MCO_2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,I2S2_CKIN , ,DFSDM2_DATIN3 , ,QUADSPI_BK1_IO0 , , ,SDIO_D1 , , ,EVENTOUT, +PortC,PC10, , , ,DFSDM2_CKIN5 , , ,SPI3_SCK/I2S3_CK ,USART3_TX , ,QUADSPI_BK1_IO1 , , ,SDIO_D2 , , ,EVENTOUT, +PortC,PC11, , , ,DFSDM2_DATIN5 , ,I2S3ext_SD ,SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS ,FSMC_D2 , ,SDIO_D3 , , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD ,USART3_CK ,UART5_TX , ,FSMC_D3 , ,SDIO_CK , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,DFSDM2_CKIN6 , , , , , ,CAN1_RX , ,UART4_RX ,FSMC_D2/FSMC_DA2 , , ,EVENTOUT, +PortD,PD1 , , , ,DFSDM2_DATIN6 , , , , , ,CAN1_TX , ,UART4_TX ,FSMC_D3/FSMC_DA3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR ,DFSDM2_CKOUT , , , , ,UART5_RX , ,FSMC_NWE , ,SDIO_CMD , , ,EVENTOUT, +PortD,PD3 ,TRACED1 , , , , ,SPI2_SCK/I2S2_CK ,DFSDM1_DATIN0 ,USART2_CTS , ,QUADSPI_CLK , , ,FSMC_CLK , , ,EVENTOUT, +PortD,PD4 , , , , , , ,DFSDM1_CKIN0 ,USART2_RTS , , , , ,FSMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , ,DFSDM2_CKOUT , , , ,USART2_TX , , , , ,FSMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD ,DFSDM1_DATIN1 ,USART2_RX , , , , ,FSMC_NWAIT , , ,EVENTOUT, +PortD,PD7 , , , , , , ,DFSDM1_CKIN1 ,USART2_CK , , , , ,FSMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FSMC_D13/FSMC_DA13, , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FSMC_D14/FSMC_DA14, , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK ,UART4_TX , , , ,FSMC_D15/FSMC_DA15, , ,EVENTOUT, +PortD,PD11, , , ,DFSDM2_DATIN2 ,I2CFMP1_SMBA , , ,USART3_CTS , ,QUADSPI_BK1_IO0 , , ,FSMC_A16 , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 ,DFSDM2_CKIN2 ,I2CFMP1_SCL , , ,USART3_RTS , ,QUADSPI_BK1_IO1 , , ,FSMC_A17 , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , ,I2CFMP1_SDA , , , , ,QUADSPI_BK1_IO3 , , ,FSMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , ,I2CFMP1_SCL , , , , , ,DFSDM2_CKIN0 ,UART9_RX ,FSMC_D0/FSMC_DA0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , ,I2CFMP1_SDA , , , , , ,DFSDM2_DATIN0 ,UART9_TX ,FSMC_D1/FSMC_DA1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR ,DFSDM2_CKIN4 , , , , ,UART8_RX , , , ,FSMC_NBL0 , , ,EVENTOUT, +PortE,PE1 , , , ,DFSDM2_DATIN4 , , , , ,UART8_TX , , , ,FSMC_NBL1 , , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK/I2S4_CK ,SPI5_SCK/I2S5_CK ,SAI1_MCLK_A , ,QUADSPI_BK1_IO2 , ,UART10_RX ,FSMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , , ,SAI1_SD_B , , , ,UART10_TX ,FSMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS/I2S4_WS ,SPI5_NSS/I2S5_WS ,SAI1_SD_A ,DFSDM1_DATIN3 , , , ,FSMC_A20 , , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SPI5_MISO ,SAI1_SCK_A ,DFSDM1_CKIN3 , , , ,FSMC_A21 , , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI/I2S4_SD ,SPI5_MOSI/I2S5_SD ,SAI1_FS_A , , , , ,FSMC_A22 , , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,DFSDM1_DATIN2 , ,UART7_RX , ,QUADSPI_BK2_IO0 , ,FSMC_D4/FSMC_DA4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,DFSDM1_CKIN2 , ,UART7_TX , ,QUADSPI_BK2_IO1 , ,FSMC_D5/FSMC_DA5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,DFSDM1_CKOUT , , , ,QUADSPI_BK2_IO2 , ,FSMC_D6/FSMC_DA6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , ,DFSDM2_DATIN0 , , , , , , ,QUADSPI_BK2_IO3 , ,FSMC_D7/FSMC_DA7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , ,DFSDM2_CKIN0 , ,SPI4_NSS/I2S4_WS ,SPI5_NSS/I2S5_WS , , , , , ,FSMC_D8/FSMC_DA8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , ,DFSDM2_DATIN7 , ,SPI4_SCK/I2S4_CK ,SPI5_SCK/I2S5_CK , , , , , ,FSMC_D9/FSMC_DA9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , ,DFSDM2_CKIN7 , ,SPI4_MISO ,SPI5_MISO , , , , , ,FSMC_D10/FSMC_DA10, , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI/I2S4_SD ,SPI5_MOSI/I2S5_SD , , , ,DFSDM2_DATIN1 , ,FSMC_D11/FSMC_DA11, , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , ,DFSDM2_CKIN1 , ,FSMC_D12/FSMC_DA12, , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FSMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FSMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FSMC_A2 , , ,EVENTOUT, +PortF,PF3 , , ,TIM5_CH1 , , , , , , , , , ,FSMC_A3 , , ,EVENTOUT, +PortF,PF4 , , ,TIM5_CH2 , , , , , , , , , ,FSMC_A4 , , ,EVENTOUT, +PortF,PF5 , , ,TIM5_CH3 , , , , , , , , , ,FSMC_A5 , , ,EVENTOUT, +PortF,PF6 ,TRACED0 , , ,TIM10_CH1 , , , ,SAI1_SD_B ,UART7_RX ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT, +PortF,PF7 ,TRACED1 , , ,TIM11_CH1 , , , ,SAI1_MCLK_B ,UART7_TX ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT, +PortF,PF8 , , , , , , , ,SAI1_SCK_B ,UART8_RX ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT, +PortF,PF9 , , , , , , , ,SAI1_FS_B ,UART8_TX ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT, +PortF,PF10, ,TIM1_ETR ,TIM5_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortF,PF11, , , ,TIM8_ETR , , , , , , , , , , , ,EVENTOUT, +PortF,PF12, , , ,TIM8_BKIN , , , , , , , , ,FSMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , ,I2CFMP1_SMBA , , , , , , , ,FSMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , ,I2CFMP1_SCL , , , , , , , ,FSMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , ,I2CFMP1_SDA , , , , , , , ,FSMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , ,CAN1_RX , ,UART9_RX ,FSMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , ,CAN1_TX , ,UART9_TX ,FSMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FSMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FSMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FSMC_A14 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FSMC_A15 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , ,QUADSPI_BK1_NCS , , , , ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , , , , ,EVENTOUT, +PortG,PG8 , , , , , , , , ,USART6_RTS , , , , , , ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX ,QUADSPI_BK2_IO2 , , ,FSMC_NE2 , , ,EVENTOUT, +PortG,PG10, , , , , , , , , , , , ,FSMC_NE3 , , ,EVENTOUT, +PortG,PG11, , , , , , , , , ,CAN2_RX , ,UART10_RX , , , ,EVENTOUT, +PortG,PG12, , , , , , , , ,USART6_RTS ,CAN2_TX , ,UART10_TX ,FSMC_NE4 , , ,EVENTOUT, +PortG,PG13,TRACED2 , , , , , , , ,USART6_CTS , , , ,FSMC_A24 , , ,EVENTOUT, +PortG,PG14,TRACED3 , , , , , , , ,USART6_TX ,QUADSPI_BK2_IO3 , , ,FSMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f429_af.csv b/ports/stm32/boards/stm32f429_af.csv index 002d634a20eac..e9cf2880b4699 100644 --- a/ports/stm32/boards/stm32f429_af.csv +++ b/ports/stm32/boards/stm32f429_af.csv @@ -1,170 +1,170 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11,I2C1/2/3,SPI1/2/3/4/5/6,SPI2/3/SAI1,SPI3/USART1/2/3,USART6/UART4/5/7/8,CAN1/2/TIM12/13/14/LCD,OTG2_HS/OTG1_FS,ETH,FMC/SDIO/OTG2_FS,DCMI,LCD,SYS, -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,ETH_MII_CRS,,,,EVENTOUT, -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,,,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,,,,ETH_MDIO,,,,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,OTG_HS_ULPI_D0,ETH_MII_COL,,,LCD_B5,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,DCMI_HSYNC,LCD_VSYNC,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK,,,,,OTG_HS_ULPI_CK,,,,,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,,TIM13_CH1,,,,DCMI_PIXCLK,LCD_G2,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI,,,,TIM14_CH1,,ETH_MII_RX_DV/ETH_RMII_CRS_DV,,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,,,USART1_TX,,,,,,DCMI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,DCMI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,,CAN1_TX,OTG_FS_DP,,,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,,,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,,,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,CAN2_TX,,,FMC_SDNE1,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,,ETH_MII_TXD3,SDIO_D4,DCMI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,CAN1_TX,,,SDIO_D5,DCMI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,I2S2ext_SD,USART3_RTS,,TIM12_CH1,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,,,,,OTG_HS_ULPI_STP,,FMC_SDNWE,,,EVENTOUT,ADC123_IN10 -PortC,PC1,,,,,,,,,,,,ETH_MDC,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2ext_SD,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,,,,,,,ETH_MII_RXD0/ETH_RMII_RXD0,,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,,,,,ETH_MII_RXD1/ETH_RMII_RXD1,,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,DCMI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,,USART6_RX,,,,SDIO_D7,DCMI_D1,LCD_G6,EVENTOUT, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,,USART6_CK,,,,SDIO_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,,,,,,SDIO_D1,DCMI_D3,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,,,,SDIO_D2,DCMI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,,,,I2S3ext_SD,SPI3_MISO,USART3_RX,UART4_RX,,,,SDIO_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDIO_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,UART5_RX,,,,SDIO_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,FMC_CLK,DCMI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,USART2_RX,,,,,FMC_NWAIT,DCMI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,,FMC_NE1/FMC_NCE2,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,,,,,USART3_CTS,,,,,FMC_A16,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS,,,,,FMC_A17,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,,,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,UART8_RX,,,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,,,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,,,FMC_A22,DCMI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,UART7_RX,,,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,UART7_TX,,,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,,,,,,,FMC_D8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,,,FMC_D9,,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,,,FMC_D10,,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,,,FMC_D11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,SPI5_NSS,SAI1_SD_B,,UART7_RX,,,,FMC_NIORD,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,SPI5_SCK,SAI1_MCLK_B,,UART7_TX,,,,FMC_NREG,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,SPI5_MISO,SAI1_SCK_B,,,TIM13_CH1,,,FMC_NIOWR,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,SPI5_MOSI,SAI1_FS_B,,,TIM14_CH1,,,FMC_CD,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,,,,FMC_INTR,DCMI_D11,LCD_DE,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,SPI5_MOSI,,,,,,,FMC_SDNRAS,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,,,,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,,,,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,FMC_INT2,DCMI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,FMC_INT3,DCMI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,,,SPI6_NSS,,,USART6_RTS,,,ETH_PPS_OUT,FMC_SDCLK,,,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,,,,FMC_NE2/FMC_NCE3,DCMI_VSYNC(1),,EVENTOUT, -PortG,PG10,,,,,,,,,,LCD_G3,,,FMC_NCE4_1/FMC_NE3,DCMI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,,,,,,,,,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,FMC_NCE4_2,DCMI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,,,,,SPI6_MISO,,,USART6_RTS,LCD_B4,,,FMC_NE4,,LCD_B1,EVENTOUT, -PortG,PG13,,,,,,SPI6_SCK,,,USART6_CTS,,,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,,,EVENTOUT, -PortG,PG14,,,,,,SPI6_MOSI,,,USART6_TX,,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,,,,,,,,,ETH_MII_CRS,FMC_SDCKE0,,LCD_R0,EVENTOUT, -PortH,PH3,,,,,,,,,,,,ETH_MII_COL,FMC_SDNE0,,LCD_R1,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,,OTG_HS_ULPI_NXT,,,,,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,SPI5_SCK,,,,TIM12_CH1,,,FMC_SDNE1,DCMI_D8,,, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9,,, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC,LCD_R2,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,FMC_D17,DCMI_D0,LCD_R3,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,,,,,,,,,FMC_D18,DCMI_D1,LCD_R4,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,,,,,,,,,FMC_D19,DCMI_D2,LCD_R5,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,,,,,,,,,FMC_D20,DCMI_D3,LCD_R6,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,,CAN1_TX,,,FMC_D21,,LCD_G2,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,,,,,FMC_D22,DCMI_D4,LCD_G3,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,DCMI_D11,LCD_G4,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,FMC_D24,DCMI_D13,LCD_G5,EVENTOUT, -PortI,PI1,,,,,,SPI2_SCK/I2S2_CK,,,,,,,FMC_D25,DCMI_D8,LCD_G6,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,I2S2ext_SD,,,,,,FMC_D26,DCMI_D9,LCD_G7,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,FMC_D27,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,,,FMC_NBL2,DCMI_D5,LCD_B4,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,,,FMC_NBL3,DCMI_VSYNC,LCD_B5,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,,,FMC_D28,DCMI_D6,LCD_B6,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,,,FMC_D29,DCMI_D7,LCD_B7,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,,CAN1_RX,,,FMC_D30,,LCD_VSYNC,EVENTOUT, -PortI,PI10,,,,,,,,,,,,ETH_MII_RX_ER,FMC_D31,,LCD_HSYNC,EVENTOUT, -PortI,PI11,,,,,,,,,,,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,,,,LCD_HSYNC,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,LCD_VSYNC,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,LCD_CLK,EVENTOUT, -PortI,PI15,,,,,,,,,,,,,,,LCD_R0,EVENTOUT, -PortJ,PJ0,,,,,,,,,,,,,,,LCD_R1,EVENTOUT, -PortJ,PJ1,,,,,,,,,,,,,,,LCD_R2,EVENTOUT, -PortJ,PJ2,,,,,,,,,,,,,,,LCD_R3,EVENTOUT, -PortJ,PJ3,,,,,,,,,,,,,,,LCD_R4,EVENTOUT, -PortJ,PJ4,,,,,,,,,,,,,,,LCD_R5,EVENTOUT, -PortJ,PJ5,,,,,,,,,,,,,,,LCD_R6,EVENTOUT, -PortJ,PJ6,,,,,,,,,,,,,,,LCD_R7,EVENTOUT, -PortJ,PJ7,,,,,,,,,,,,,,,LCD_G0,EVENTOUT, -PortJ,PJ8,,,,,,,,,,,,,,,LCD_G1,EVENTOUT, -PortJ,PJ9,,,,,,,,,,,,,,,LCD_G2,EVENTOUT, -PortJ,PJ10,,,,,,,,,,,,,,,LCD_G3,EVENTOUT, -PortJ,PJ11,,,,,,,,,,,,,,,LCD_G4,EVENTOUT, -PortJ,PJ12,,,,,,,,,,,,,,,LCD_B0,EVENTOUT, -PortJ,PJ13,,,,,,,,,,,,,,,LCD_B1,EVENTOUT, -PortJ,PJ14,,,,,,,,,,,,,,,LCD_B2,EVENTOUT, -PortJ,PJ15,,,,,,,,,,,,,,,LCD_B3,EVENTOUT, -PortK,PK0,,,,,,,,,,,,,,,LCD_G5,EVENTOUT, -PortK,PK1,,,,,,,,,,,,,,,LCD_G6,EVENTOUT, -PortK,PK2,,,,,,,,,,,,,,,LCD_G7,EVENTOUT, -PortK,PK3,,,,,,,,,,,,,,,LCD_B4,EVENTOUT, -PortK,PK4,,,,,,,,,,,,,,,LCD_B5,EVENTOUT, -PortK,PK5,,,,,,,,,,,,,,,LCD_B6,EVENTOUT, -PortK,PK6,,,,,,,,,,,,,,,LCD_B7,EVENTOUT, -PortK,PK7,,,,,,,,,,,,,,,LCD_DE,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11,I2C1/2/3 ,SPI1/2/3/4/5/6 ,SPI2/3/SAI1 ,SPI3/USART1/2/3,USART6/UART4/5/7/8,CAN1/2/TIM12/13/14/LCD,OTG2_HS/OTG1_FS,ETH ,FMC/SDIO/OTG2_FS ,DCMI ,LCD ,SYS , +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , ,ETH_MII_CRS , , , ,EVENTOUT, +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX , , ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK, , , ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX , , , ,ETH_MDIO , , , ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , , ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LCD_B5 ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF ,DCMI_HSYNC ,LCD_VSYNC,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK , , , , ,OTG_HS_ULPI_CK , , , , ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , , ,TIM13_CH1 , , , ,DCMI_PIXCLK ,LCD_G2 ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI , , , ,TIM14_CH1 , ,ETH_MII_RX_DV/ETH_RMII_CRS_DV , , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA, , ,USART1_TX , , , , , ,DCMI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , ,DCMI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS , ,CAN1_TX ,OTG_FS_DP , , , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS , , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , , , ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , , ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA,SPI1_MOSI ,SPI3_MOSI/I2S3_SD, , ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1, ,I2C1_SCL , , ,USART1_TX , ,CAN2_TX , , ,FMC_SDNE1 ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX , , , , ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX , ,ETH_MII_TXD3 ,SDIO_D4 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,CAN1_TX , , ,SDIO_D5 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , , ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , , ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA,SPI2_NSS/I2S2_WS , ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO ,I2S2ext_SD ,USART3_RTS , ,TIM12_CH1 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD, , , ,TIM12_CH2 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , , , , , ,OTG_HS_ULPI_STP, ,FMC_SDNWE , , ,EVENTOUT,ADC123_IN10 +PortC,PC1 , , , , , , , , , , , ,ETH_MDC , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2ext_SD , , , ,OTG_HS_ULPI_DIR,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD, , , , ,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , , , , , , , ,ETH_MII_RXD0/ETH_RMII_RXD0 , , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , , , , , ,ETH_MII_RXD1/ETH_RMII_RXD1 , , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , , ,USART6_TX , , , ,SDIO_D6 ,DCMI_D0 ,LCD_HSYNC,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK , ,USART6_RX , , , ,SDIO_D7 ,DCMI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3,TIM8_CH3 , , , , ,USART6_CK , , , ,SDIO_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , , , , , , ,SDIO_D1 ,DCMI_D3 , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX , , , ,SDIO_D2 ,DCMI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , , , , ,I2S3ext_SD ,SPI3_MISO ,USART3_RX ,UART4_RX , , , ,SDIO_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , ,SDIO_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDIO_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , ,FMC_CLK ,DCMI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD,SAI1_SD_A ,USART2_RX , , , , ,FMC_NWAIT ,DCMI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , , ,FMC_NE1/FMC_NCE2 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , , , , ,FMC_A16 , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1, , , , ,USART3_RTS , , , , ,FMC_A17 , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2, , , , , , , , , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , , , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , , , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR, , , , , ,UART8_RX , , , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , , , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , , , ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , , , ,FMC_A22 ,DCMI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , ,UART7_RX , , , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , ,UART7_TX , , , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , , , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , , , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS , , , , , , ,FMC_D8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , , , ,FMC_D9 , ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , , , ,FMC_D10 , ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , , , ,FMC_D11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA, , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , ,SPI5_NSS ,SAI1_SD_B , ,UART7_RX , , , ,FMC_NIORD , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , ,SPI5_SCK ,SAI1_MCLK_B , ,UART7_TX , , , ,FMC_NREG , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , ,SPI5_MISO ,SAI1_SCK_B , , ,TIM13_CH1 , , ,FMC_NIOWR , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , ,SPI5_MOSI ,SAI1_FS_B , , ,TIM14_CH1 , , ,FMC_CD , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , , , , ,FMC_INTR ,DCMI_D11 ,LCD_DE ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , ,SPI5_MOSI , , , , , , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , , , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , , , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , , , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , ,FMC_INT2 ,DCMI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , ,FMC_INT3 ,DCMI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , , , ,SPI6_NSS , , ,USART6_RTS , , ,ETH_PPS_OUT ,FMC_SDCLK , , ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX , , , ,FMC_NE2/FMC_NCE3 ,DCMI_VSYNC(1), ,EVENTOUT, +PortG,PG10, , , , , , , , , ,LCD_G3 , , ,FMC_NCE4_1/FMC_NE3,DCMI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, , , , , , , , , , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN ,FMC_NCE4_2 ,DCMI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, , , , , ,SPI6_MISO , , ,USART6_RTS ,LCD_B4 , , ,FMC_NE4 , ,LCD_B1 ,EVENTOUT, +PortG,PG13, , , , , ,SPI6_SCK , , ,USART6_CTS , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , , ,EVENTOUT, +PortG,PG14, , , , , ,SPI6_MOSI , , ,USART6_TX , , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , , , , , , , , , ,ETH_MII_CRS ,FMC_SDCKE0 , ,LCD_R0 ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , ,ETH_MII_COL ,FMC_SDNE0 , ,LCD_R1 ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , , ,OTG_HS_ULPI_NXT, , , , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA,SPI5_SCK , , , ,TIM12_CH1 , , ,FMC_SDNE1 ,DCMI_D8 , , , +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , , , +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LCD_R2 ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA, , , , ,TIM12_CH2 , , ,FMC_D17 ,DCMI_D0 ,LCD_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, , , , , , , , , ,FMC_D18 ,DCMI_D1 ,LCD_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, , , , , , , , , ,FMC_D19 ,DCMI_D2 ,LCD_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, , , , , , , , , ,FMC_D20 ,DCMI_D3 ,LCD_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , , ,CAN1_TX , , ,FMC_D21 , ,LCD_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , , , , , ,FMC_D22 ,DCMI_D4 ,LCD_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11 ,LCD_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , ,FMC_D24 ,DCMI_D13 ,LCD_G5 ,EVENTOUT, +PortI,PI1 , , , , , ,SPI2_SCK/I2S2_CK , , , , , , ,FMC_D25 ,DCMI_D8 ,LCD_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO ,I2S2ext_SD , , , , , ,FMC_D26 ,DCMI_D9 ,LCD_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD, , , , , , ,FMC_D27 ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , , , ,FMC_NBL2 ,DCMI_D5 ,LCD_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , , , ,FMC_NBL3 ,DCMI_VSYNC ,LCD_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , , , ,FMC_D28 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , , , ,FMC_D29 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , , ,CAN1_RX , , ,FMC_D30 , ,LCD_VSYNC,EVENTOUT, +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER ,FMC_D31 , ,LCD_HSYNC,EVENTOUT, +PortI,PI11, , , , , , , , , , ,OTG_HS_ULPI_DIR, , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , , , , ,LCD_HSYNC,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , ,LCD_VSYNC,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , ,LCD_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , , , , , , ,LCD_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , , , , , , ,LCD_R1 ,EVENTOUT, +PortJ,PJ1 , , , , , , , , , , , , , , ,LCD_R2 ,EVENTOUT, +PortJ,PJ2 , , , , , , , , , , , , , , ,LCD_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , , , , ,LCD_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , , , , ,LCD_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LCD_R6 ,EVENTOUT, +PortJ,PJ6 , , , , , , , , , , , , , , ,LCD_R7 ,EVENTOUT, +PortJ,PJ7 , , , , , , , , , , , , , , ,LCD_G0 ,EVENTOUT, +PortJ,PJ8 , , , , , , , , , , , , , , ,LCD_G1 ,EVENTOUT, +PortJ,PJ9 , , , , , , , , , , , , , , ,LCD_G2 ,EVENTOUT, +PortJ,PJ10, , , , , , , , , , , , , , ,LCD_G3 ,EVENTOUT, +PortJ,PJ11, , , , , , , , , , , , , , ,LCD_G4 ,EVENTOUT, +PortJ,PJ12, , , , , , , , , , , , , , ,LCD_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , , , , , , ,LCD_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LCD_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LCD_B3 ,EVENTOUT, +PortK,PK0 , , , , , , , , , , , , , , ,LCD_G5 ,EVENTOUT, +PortK,PK1 , , , , , , , , , , , , , , ,LCD_G6 ,EVENTOUT, +PortK,PK2 , , , , , , , , , , , , , , ,LCD_G7 ,EVENTOUT, +PortK,PK3 , , , , , , , , , , , , , , ,LCD_B4 ,EVENTOUT, +PortK,PK4 , , , , , , , , , , , , , , ,LCD_B5 ,EVENTOUT, +PortK,PK5 , , , , , , , , , , , , , , ,LCD_B6 ,EVENTOUT, +PortK,PK6 , , , , , , , , , , , , , , ,LCD_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LCD_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f439_af.csv b/ports/stm32/boards/stm32f439_af.csv index 4fc1f1116c633..94466c6c1a0b6 100644 --- a/ports/stm32/boards/stm32f439_af.csv +++ b/ports/stm32/boards/stm32f439_af.csv @@ -1,170 +1,170 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11,I2C1/2/3,SPI1/2/3/4/5/6,SPI2/3/SAI1,SPI3/USART1/2/3,USART6/UART4/5/7/8,CAN1/2/TIM12/13/14/LCD,OTG2_HS/OTG1_FS,ETH,FMC/SDIO/OTG2_FS,DCMI,LCD,SYS, -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,ETH_MII_CRS,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,,,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,,,,ETH_MDIO,,,,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,OTG_HS_ULPI_D0,ETH_MII_COL,,,LCD_B5,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,DCMI_HSYNC,LCD_VSYNC,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK,,,,,OTG_HS_ULPI_CK,,,,,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,,TIM13_CH1,,,,DCMI_PIXCLK,LCD_G2,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI,,,,TIM14_CH1,,ETH_MII_RX_DV/ETH_RMII_CRS_DV,,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,,,USART1_TX,,,,,,DCMI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,DCMI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,,CAN1_TX,OTG_FS_DP,,,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,,,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3ext_SD,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,,,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,CAN2_TX,,,FMC_SDNE1,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,,ETH_MII_TXD3,SDIO_D4,DCMI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,CAN1_TX,,,SDIO_D5,DCMI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,I2S2ext_SD,USART3_RTS,,TIM12_CH1,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,,,,,OTG_HS_ULPI_STP,,FMC_SDNWE,,,EVENTOUT,ADC123_IN10 -PortC,PC1,,,,,,,,,,,,ETH_MDC,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2ext_SD,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,,,,,,,ETH_MII_RXD0/ETH_RMII_RXD0,,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,,,,,ETH_MII_RXD1/ETH_RMII_RXD1,,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,DCMI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,,USART6_RX,,,,SDIO_D7,DCMI_D1,LCD_G6,EVENTOUT, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,,USART6_CK,,,,SDIO_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,,,,,,SDIO_D1,DCMI_D3,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,,,,SDIO_D2,DCMI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,,,,I2S3ext_SD,SPI3_MISO,USART3_RX,UART4_RX,,,,SDIO_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDIO_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,UART5_RX,,,,SDIO_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,FMC_CLK,DCMI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,I2S3_SD,SAI1_SD_A,USART2_RX,,,,,FMC_NWAIT,DCMI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,,FMC_NE1/FMC_NCE2,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,,,,,USART3_CTS,,,,,FMC_A16,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS,,,,,FMC_A17,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,,,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,UART8_RX,,,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,,,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,,,FMC_A22,DCMI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,UART7_RX,,,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,UART7_TX,,,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,SPI3_NSS,,,,,,FMC_D8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,SPI3_SCK,,,,,,FMC_D9,,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,SPI3_MISO,,,,,,FMC_D10,,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,SP3_MOSI,,,,,,FMC_D11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,SPI5_NSS,SAI1_SD_B,,UART7_RX,,,,FMC_NIORD,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,SPI5_SCK,SAI1_MCLK_B,,UART7_TX,,,,FMC_NREG,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,SPI5_MISO,SAI1_SCK_B,,,TIM13_CH1,,,FMC_NIOWR,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,SPI5_MOSI,SAI1_FS_B,,,TIM14_CH1,,,FMC_CD,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,,,,FMC_INTR,DCMI_D11,LCD_DE,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,SPI5_MOSI,,,,,,,FMC_SDNRAS,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,,,,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,,,,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,FMC_INT2,DCMI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,FMC_INT3,DCMI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,,,SPI6_NSS,,,USART6_RTS,,,ETH_PPS_OUT,FMC_SDCLK,,,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,,,,FMC_NE2/FMC_NCE3,DCMI_VSYNC(1),,EVENTOUT, -PortG,PG10,,,,,,,,,,LCD_G3,,,FMC_NCE4_1/FMC_NE3,DCMI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,,,,,,,,,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,FMC_NCE4_2,DCMI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,,,,,SPI6_MISO,,,USART6_RTS,LCD_B4,,,FMC_NE4,,LCD_B1,EVENTOUT, -PortG,PG13,,,,,,SPI6_SCK,,,USART6_CTS,,,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,,,EVENTOUT, -PortG,PG14,,,,,,SPI6_MOSI,,,USART6_TX,,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,,,,,,,,,ETH_MII_CRS,FMC_SDCKE0,,LCD_R0,EVENTOUT, -PortH,PH3,,,,,,,,,,,,ETH_MII_COL,FMC_SDNE0,,LCD_R1,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,,OTG_HS_ULPI_NXT,,,,,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,SPI5_SCK,,,,TIM12_CH1,,,FMC_SDNE1,DCMI_D8,,, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9,,, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC,LCD_R2,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,FMC_D17,DCMI_D0,LCD_R3,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,,,,,,,,,FMC_D18,DCMI_D1,LCD_R4,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,,,,,,,,,FMC_D19,DCMI_D2,LCD_R5,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,,,,,,,,,FMC_D20,DCMI_D3,LCD_R6,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,,CAN1_TX,,,FMC_D21,,LCD_G2,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,,,,,FMC_D22,DCMI_D4,LCD_G3,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,DCMI_D11,LCD_G4,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,FMC_D24,DCMI_D13,LCD_G5,EVENTOUT, -PortI,PI1,,,,,,SPI2_SCK/I2S2_CK,,,,,,,FMC_D25,DCMI_D8,LCD_G6,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,I2S2ext_SD,,,,,,FMC_D26,DCMI_D9,LCD_G7,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,FMC_D27,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,,,FMC_NBL2,DCMI_D5,LCD_B4,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,,,FMC_NBL3,DCMI_VSYNC,LCD_B5,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,,,FMC_D28,DCMI_D6,LCD_B6,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,,,FMC_D29,DCMI_D7,LCD_B7,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,,CAN1_RX,,,FMC_D30,,LCD_VSYNC,EVENTOUT, -PortI,PI10,,,,,,,,,,,,ETH_MII_RX_ER,FMC_D31,,LCD_HSYNC,EVENTOUT, -PortI,PI11,,,,,,,,,,,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,,,,LCD_HSYNC,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,LCD_VSYNC,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,LCD_CLK,EVENTOUT, -PortI,PI15,,,,,,,,,,,,,,,LCD_R0,EVENTOUT, -PortJ,PJ0,,,,,,,,,,,,,,,LCD_R1,EVENTOUT, -PortJ,PJ1,,,,,,,,,,,,,,,LCD_R2,EVENTOUT, -PortJ,PJ2,,,,,,,,,,,,,,,LCD_R3,EVENTOUT, -PortJ,PJ3,,,,,,,,,,,,,,,LCD_R4,EVENTOUT, -PortJ,PJ4,,,,,,,,,,,,,,,LCD_R5,EVENTOUT, -PortJ,PJ5,,,,,,,,,,,,,,,LCD_R6,EVENTOUT, -PortJ,PJ6,,,,,,,,,,,,,,,LCD_R7,EVENTOUT, -PortJ,PJ7,,,,,,,,,,,,,,,LCD_G0,EVENTOUT, -PortJ,PJ8,,,,,,,,,,,,,,,LCD_G1,EVENTOUT, -PortJ,PJ9,,,,,,,,,,,,,,,LCD_G2,EVENTOUT, -PortJ,PJ10,,,,,,,,,,,,,,,LCD_G3,EVENTOUT, -PortJ,PJ11,,,,,,,,,,,,,,,LCD_G4,EVENTOUT, -PortJ,PJ12,,,,,,,,,,,,,,,LCD_B0,EVENTOUT, -PortJ,PJ13,,,,,,,,,,,,,,,LCD_B1,EVENTOUT, -PortJ,PJ14,,,,,,,,,,,,,,,LCD_B2,EVENTOUT, -PortJ,PJ15,,,,,,,,,,,,,,,LCD_B3,EVENTOUT, -PortK,PK0,,,,,,,,,,,,,,,LCD_G5,EVENTOUT, -PortK,PK1,,,,,,,,,,,,,,,LCD_G6,EVENTOUT, -PortK,PK2,,,,,,,,,,,,,,,LCD_G7,EVENTOUT, -PortK,PK3,,,,,,,,,,,,,,,LCD_B4,EVENTOUT, -PortK,PK4,,,,,,,,,,,,,,,LCD_B5,EVENTOUT, -PortK,PK5,,,,,,,,,,,,,,,LCD_B6,EVENTOUT, -PortK,PK6,,,,,,,,,,,,,,,LCD_B7,EVENTOUT, -PortK,PK7,,,,,,,,,,,,,,,LCD_DE,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11,I2C1/2/3 ,SPI1/2/3/4/5/6 ,SPI2/3/SAI1 ,SPI3/USART1/2/3,USART6/UART4/5/7/8,CAN1/2/TIM12/13/14/LCD,OTG2_HS/OTG1_FS,ETH ,FMC/SDIO/OTG2_FS ,DCMI ,LCD ,SYS , +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , ,ETH_MII_CRS , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX , , ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK, , , ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX , , , ,ETH_MDIO , , , ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , , ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LCD_B5 ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF ,DCMI_HSYNC ,LCD_VSYNC,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK , , , , ,OTG_HS_ULPI_CK , , , , ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , , ,TIM13_CH1 , , , ,DCMI_PIXCLK ,LCD_G2 ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI , , , ,TIM14_CH1 , ,ETH_MII_RX_DV/ETH_RMII_CRS_DV , , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA, , ,USART1_TX , , , , , ,DCMI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , ,DCMI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS , ,CAN1_TX ,OTG_FS_DP , , , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS , , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , , , ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , , ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,I2S3ext_SD , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA,SPI1_MOSI ,SPI3_MOSI/I2S3_SD, , ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1, ,I2C1_SCL , , ,USART1_TX , ,CAN2_TX , , ,FMC_SDNE1 ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX , , , , ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX , ,ETH_MII_TXD3 ,SDIO_D4 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,CAN1_TX , , ,SDIO_D5 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , , ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , , ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA,SPI2_NSS/I2S2_WS , ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO ,I2S2ext_SD ,USART3_RTS , ,TIM12_CH1 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD, , , ,TIM12_CH2 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , , , , , ,OTG_HS_ULPI_STP, ,FMC_SDNWE , , ,EVENTOUT,ADC123_IN10 +PortC,PC1 , , , , , , , , , , , ,ETH_MDC , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2ext_SD , , , ,OTG_HS_ULPI_DIR,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD, , , , ,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , , , , , , , ,ETH_MII_RXD0/ETH_RMII_RXD0 , , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , , , , , ,ETH_MII_RXD1/ETH_RMII_RXD1 , , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , , ,USART6_TX , , , ,SDIO_D6 ,DCMI_D0 ,LCD_HSYNC,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK , ,USART6_RX , , , ,SDIO_D7 ,DCMI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3,TIM8_CH3 , , , , ,USART6_CK , , , ,SDIO_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , , , , , , ,SDIO_D1 ,DCMI_D3 , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX , , , ,SDIO_D2 ,DCMI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , , , , ,I2S3ext_SD ,SPI3_MISO ,USART3_RX ,UART4_RX , , , ,SDIO_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , ,SDIO_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDIO_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , ,FMC_CLK ,DCMI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,I2S3_SD ,SAI1_SD_A ,USART2_RX , , , , ,FMC_NWAIT ,DCMI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , , ,FMC_NE1/FMC_NCE2 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , , , , ,FMC_A16 , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1, , , , ,USART3_RTS , , , , ,FMC_A17 , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2, , , , , , , , , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , , , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , , , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR, , , , , ,UART8_RX , , , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , , , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , , , ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , , , ,FMC_A22 ,DCMI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , ,UART7_RX , , , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , ,UART7_TX , , , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , , , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , , , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS ,SPI3_NSS , , , , , ,FMC_D8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK ,SPI3_SCK , , , , , ,FMC_D9 , ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO ,SPI3_MISO , , , , , ,FMC_D10 , ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI ,SP3_MOSI , , , , , ,FMC_D11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA, , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , ,SPI5_NSS ,SAI1_SD_B , ,UART7_RX , , , ,FMC_NIORD , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , ,SPI5_SCK ,SAI1_MCLK_B , ,UART7_TX , , , ,FMC_NREG , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , ,SPI5_MISO ,SAI1_SCK_B , , ,TIM13_CH1 , , ,FMC_NIOWR , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , ,SPI5_MOSI ,SAI1_FS_B , , ,TIM14_CH1 , , ,FMC_CD , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , , , , ,FMC_INTR ,DCMI_D11 ,LCD_DE ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , ,SPI5_MOSI , , , , , , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , , , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , , , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , , , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , ,FMC_INT2 ,DCMI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , ,FMC_INT3 ,DCMI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , , , ,SPI6_NSS , , ,USART6_RTS , , ,ETH_PPS_OUT ,FMC_SDCLK , , ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX , , , ,FMC_NE2/FMC_NCE3 ,DCMI_VSYNC(1), ,EVENTOUT, +PortG,PG10, , , , , , , , , ,LCD_G3 , , ,FMC_NCE4_1/FMC_NE3,DCMI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, , , , , , , , , , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN ,FMC_NCE4_2 ,DCMI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, , , , , ,SPI6_MISO , , ,USART6_RTS ,LCD_B4 , , ,FMC_NE4 , ,LCD_B1 ,EVENTOUT, +PortG,PG13, , , , , ,SPI6_SCK , , ,USART6_CTS , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , , ,EVENTOUT, +PortG,PG14, , , , , ,SPI6_MOSI , , ,USART6_TX , , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , , , , , , , , , ,ETH_MII_CRS ,FMC_SDCKE0 , ,LCD_R0 ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , ,ETH_MII_COL ,FMC_SDNE0 , ,LCD_R1 ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , , ,OTG_HS_ULPI_NXT, , , , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA,SPI5_SCK , , , ,TIM12_CH1 , , ,FMC_SDNE1 ,DCMI_D8 , , , +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , , , +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LCD_R2 ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA, , , , ,TIM12_CH2 , , ,FMC_D17 ,DCMI_D0 ,LCD_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, , , , , , , , , ,FMC_D18 ,DCMI_D1 ,LCD_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, , , , , , , , , ,FMC_D19 ,DCMI_D2 ,LCD_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, , , , , , , , , ,FMC_D20 ,DCMI_D3 ,LCD_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , , ,CAN1_TX , , ,FMC_D21 , ,LCD_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , , , , , ,FMC_D22 ,DCMI_D4 ,LCD_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11 ,LCD_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , ,FMC_D24 ,DCMI_D13 ,LCD_G5 ,EVENTOUT, +PortI,PI1 , , , , , ,SPI2_SCK/I2S2_CK , , , , , , ,FMC_D25 ,DCMI_D8 ,LCD_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO ,I2S2ext_SD , , , , , ,FMC_D26 ,DCMI_D9 ,LCD_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD, , , , , , ,FMC_D27 ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , , , ,FMC_NBL2 ,DCMI_D5 ,LCD_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , , , ,FMC_NBL3 ,DCMI_VSYNC ,LCD_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , , , ,FMC_D28 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , , , ,FMC_D29 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , , ,CAN1_RX , , ,FMC_D30 , ,LCD_VSYNC,EVENTOUT, +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER ,FMC_D31 , ,LCD_HSYNC,EVENTOUT, +PortI,PI11, , , , , , , , , , ,OTG_HS_ULPI_DIR, , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , , , , ,LCD_HSYNC,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , ,LCD_VSYNC,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , ,LCD_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , , , , , , ,LCD_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , , , , , , ,LCD_R1 ,EVENTOUT, +PortJ,PJ1 , , , , , , , , , , , , , , ,LCD_R2 ,EVENTOUT, +PortJ,PJ2 , , , , , , , , , , , , , , ,LCD_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , , , , ,LCD_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , , , , ,LCD_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LCD_R6 ,EVENTOUT, +PortJ,PJ6 , , , , , , , , , , , , , , ,LCD_R7 ,EVENTOUT, +PortJ,PJ7 , , , , , , , , , , , , , , ,LCD_G0 ,EVENTOUT, +PortJ,PJ8 , , , , , , , , , , , , , , ,LCD_G1 ,EVENTOUT, +PortJ,PJ9 , , , , , , , , , , , , , , ,LCD_G2 ,EVENTOUT, +PortJ,PJ10, , , , , , , , , , , , , , ,LCD_G3 ,EVENTOUT, +PortJ,PJ11, , , , , , , , , , , , , , ,LCD_G4 ,EVENTOUT, +PortJ,PJ12, , , , , , , , , , , , , , ,LCD_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , , , , , , ,LCD_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LCD_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LCD_B3 ,EVENTOUT, +PortK,PK0 , , , , , , , , , , , , , , ,LCD_G5 ,EVENTOUT, +PortK,PK1 , , , , , , , , , , , , , , ,LCD_G6 ,EVENTOUT, +PortK,PK2 , , , , , , , , , , , , , , ,LCD_G7 ,EVENTOUT, +PortK,PK3 , , , , , , , , , , , , , , ,LCD_B4 ,EVENTOUT, +PortK,PK4 , , , , , , , , , , , , , , ,LCD_B5 ,EVENTOUT, +PortK,PK5 , , , , , , , , , , , , , , ,LCD_B6 ,EVENTOUT, +PortK,PK6 , , , , , , , , , , , , , , ,LCD_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LCD_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f446_af.csv b/ports/stm32/boards/stm32f446_af.csv index 0838ed089d8f2..0e80bbb9b0ad2 100644 --- a/ports/stm32/boards/stm32f446_af.csv +++ b/ports/stm32/boards/stm32f446_af.csv @@ -1,116 +1,116 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11/CEC,I2C1/2/3/4/CEC,SPI1/2/3/4,SPI2/3/4/SAI1,SPI2/3/USART1/2/3/UART5/SPDIFRX,SAI/USART6/UART4/5/SPDIFRX,CAN1/2/TIM12/13/14/QUADSPI,SAI2/QUADSPI/OTG2_HS/OTG1_FS,OTG1_FS,FMC/SDIO/OTG2_FS,DCMI,,SYS, -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,SAI2_MCLK_B,,,,,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,SAI2_SCK_B,,,,,,,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,SAI1_FS_A,USART2_RX,,,OTG_HS_ULPI_D0,,,,,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,DCMI_HSYNC,,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,,,OTG_HS_ULPI_CK,,,,,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,I2S2_MCK,,,TIM13_CH1,,,,DCMI_PIXCLK,,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SD,,,,TIM14_CH1,,,FMC_SDNWE,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,SPI2_SCK/I2S2_CK,SAI1_SD_B,USART1_TX,,,,,,DCMI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,DCMI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,SAI2_FS_B,CAN1_TX,OTG_FS_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,HDMI_CEC,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,,UART4_RTS,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,SPI3_MOSI/I2S3_SD,UART4_CTS,,OTG_HS_ULPI_D1,,SDIO_D1,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,,OTG_HS_ULPI_D2,,SDIO_D2,,,EVENTOUT,ADC12_IN9 -PortB,PB2,,TIM2_CH4,,,,,SAI1_SD_A,SPI3_MOSI/I2S3_SD,,QUADSPI_CLK,OTG_HS_ULPI_D4,,SDIO_CK,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,I2C2_SDA,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,I2C3_SDA,SPI1_MISO,SPI3_MISO,SPI2_NSS/I2S2_WS,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,,CAN2_RX,OTG_HS_ULPI_D7,,FMC_SDCKE1,DCMI_D10,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,HDMI_CEC,I2C1_SCL,,,USART1_TX,,CAN2_TX,QUADSPI_BK1_NCS,,FMC_SDNE1,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,SPDIF_RX0,,,,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,TIM2_CH1/TIM2_ETR,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,,,SDIO_D4,DCMI_D6,,EVENTOUT, -PortB,PB9,,TIM2_CH2,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,SAI1_FS_B,,,CAN1_TX,,,SDIO_D5,DCMI_D7,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,SAI1_SCK_A,USART3_TX,,,OTG_HS_ULPI_D3,,,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,SAI2_SD_A,,,,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,SAI1_SCK_B,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,CAN2_TX,OTG_HS_ULPI_D6,,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,,USART3_RTS,,TIM12_CH1,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,SAI1_MCLK_B,,,,OTG_HS_ULPI_STP,,FMC_SDNWE,,,EVENTOUT,ADC123_IN10 -PortC,PC1,,,,,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,SPI2_MOSI/I2S2_SD,,,,,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,,,,,OTG_HS_ULPI_DIR,,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,I2S1_MCK,,,SPDIF_RX2,,,,FMC_SDNE0,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,USART3_RX,SPDIF_RX3,,,,FMC_SDCKE0,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,FMPI2C1_SCL,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,DCMI_D0,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,FMPI2C1_SDA,SPI2_SCK/I2S2_CK,I2S3_MCK,SPDIF_RX1,USART6_RX,,,,SDIO_D7,DCMI_D1,,EVENTOUT, -PortC,PC8,TRACED0,,TIM3_CH3,TIM8_CH3,,,,UART5_RTS,USART6_CK,,,,SDIO_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,UART5_CTS,,QUADSPI_BK1_IO0,,,SDIO_D1,DCMI_D3,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,QUADSPI_BK1_IO1,,,SDIO_D2,DCMI_D8,,EVENTOUT, -PortC,PC11,,,,,,,SPI3_MISO,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,,,SDIO_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,,,,,I2C2_SDA,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDIO_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,SPI4_MISO,SPI3_MOSI/I2S3_SD,,,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,SPI2_NSS/I2S2_WS,,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,UART5_RX,,,,SDIO_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,TRACED1,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,QUADSPI_CLK,,,FMC_CLK,DCMI_D5,,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,USART2_RX,,,,,FMC_NWAIT,DCMI_D10,,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,SPDIF_RX0,,,,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,SPDIF_RX1,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,,EVENTOUT, -PortD,PD11,,,,,FMPI2C1_SMBA,,,USART3_CTS,,QUADSPI_BK1_IO0,SAI2_SD_A,,FMC_A16,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,FMPI2C1_SCL,,,USART3_RTS,,QUADSPI_BK1_IO1,SAI2_FS_A,,FMC_A17,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,FMPI2C1_SDA,,,,,QUADSPI_BK1_IO3,SAI2_SCK_A,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,FMPI2C1_SCL,,,,SAI2_SCK_A,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,FMPI2C1_SDA,,,,,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,,,SAI2_MCLK_A,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,,,,,,,,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,QUADSPI_BK1_IO2,,,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,,,FMC_A22,DCMI_D7,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,UART5_RX,,QUADSPI_BK2_IO0,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,UART5_TX,,QUADSPI_BK2_IO1,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,QUADSPI_BK2_IO2,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,QUADSPI_BK2_IO3,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,,,,,SAI2_SD_B,,FMC_D8,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,SAI2_SCK_B,,FMC_D9,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,SAI2_FS_B,,FMC_D10,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCLK_B,,FMC_D11,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,,SAI1_SD_B,,,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,,SAI1_MCLK_B,,,QUADSPI_BK1_IO2,,,,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,,SAI1_SCK_B,,,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,,SAI1_FS_B,,,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,,,,,DCMI_D11,,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,,,,,,SAI2_SD_B,,FMC_SDNRAS,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,FMPI2C1_SMBA,,,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,FMPI2C1_SCL,,,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,FMPI2C1_SDA,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,QUADSPI_BK1_NCS,,,DCMI_D12,,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,FMC_INT,DCMI_D13,,EVENTOUT, -PortG,PG8,,,,,,,,SPDIFRX_IN2,USART6_RTS,,,,FMC_SDCLK,,,EVENTOUT, -PortG,PG9,,,,,,,,SPDIFRX_IN3,USART6_RX,QUADSPI_BK2_IO2,SAI2_FS_B,,FMC_NE2/FMC_NCE3,DCMI_VSYNC,,EVENTOUT, -PortG,PG10,,,,,,,,,,,SAI2_SD_B,,FMC_NE3,DCMI_D2,,EVENTOUT, -PortG,PG11,,,,,,,SPI4_SCK,SPDIFRX_IN0,,,,,,DCMI_D3,,EVENTOUT, -PortG,PG12,,,,,,,SPI4_MISO,SPDIFRX_IN1,USART6_RTS,,,,FMC_NE4,,,EVENTOUT, -PortG,PG13,TRACED2,,,,,,SPI4_MOSI,,USART6_CTS,,,,FMC_A24,,,EVENTOUT, -PortG,PG14,TRACED3,,,,,,SPI4_NSS,,USART6_TX,QUADSPI_BK2_IO3,,,FMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11/CEC,I2C1/2/3/4/CEC,SPI1/2/3/4 ,SPI2/3/4/SAI1 ,SPI2/3/USART1/2/3/UART5/SPDIFRX,SAI/USART6/UART4/5/SPDIFRX,CAN1/2/TIM12/13/14/QUADSPI,SAI2/QUADSPI/OTG2_HS/OTG1_FS,OTG1_FS,FMC/SDIO/OTG2_FS,DCMI , ,SYS , +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , , , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 ,SAI2_MCLK_B , , , , ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX ,SAI2_SCK_B , , , , , , ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , ,SAI1_FS_A ,USART2_RX , , ,OTG_HS_ULPI_D0 , , , , ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF ,DCMI_HSYNC , ,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , , , ,OTG_HS_ULPI_CK , , , , ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO ,I2S2_MCK , , ,TIM13_CH1 , , , ,DCMI_PIXCLK, ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI/I2S1_SD, , , ,TIM14_CH1 , , ,FMC_SDNWE , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA ,SPI2_SCK/I2S2_CK ,SAI1_SD_B ,USART1_TX , , , , , ,DCMI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , ,DCMI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS ,SAI2_FS_B ,CAN1_TX ,OTG_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , ,HDMI_CEC ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS , ,UART4_RTS , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , ,SPI3_MOSI/I2S3_SD ,UART4_CTS , ,OTG_HS_ULPI_D1 , ,SDIO_D1 , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , , ,OTG_HS_ULPI_D2 , ,SDIO_D2 , , ,EVENTOUT,ADC12_IN9 +PortB,PB2 , ,TIM2_CH4 , , , , ,SAI1_SD_A ,SPI3_MOSI/I2S3_SD , ,QUADSPI_CLK ,OTG_HS_ULPI_D4 , ,SDIO_CK , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , ,I2C2_SDA ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, ,I2C3_SDA ,SPI1_MISO ,SPI3_MISO ,SPI2_NSS/I2S2_WS , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD, , ,CAN2_RX ,OTG_HS_ULPI_D7 , ,FMC_SDCKE1 ,DCMI_D10 , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1,HDMI_CEC ,I2C1_SCL , , ,USART1_TX , ,CAN2_TX ,QUADSPI_BK1_NCS , ,FMC_SDNE1 ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX ,SPDIF_RX0 , , , ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , ,TIM2_CH1/TIM2_ETR,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX , , ,SDIO_D4 ,DCMI_D6 , ,EVENTOUT, +PortB,PB9 , ,TIM2_CH2 ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,SAI1_FS_B , , ,CAN1_TX , , ,SDIO_D5 ,DCMI_D7 , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,SAI1_SCK_A ,USART3_TX , , ,OTG_HS_ULPI_D3 , , , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX ,SAI2_SD_A , , , , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,SAI1_SCK_B ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 , ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , ,CAN2_TX ,OTG_HS_ULPI_D6 , , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO , ,USART3_RTS , ,TIM12_CH1 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD, , , ,TIM12_CH2 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , ,SAI1_MCLK_B , , , ,OTG_HS_ULPI_STP , ,FMC_SDNWE , , ,EVENTOUT,ADC123_IN10 +PortC,PC1 , , , , , ,SPI3_MOSI/I2S3_SD,SAI1_SD_A ,SPI2_MOSI/I2S2_SD , , , , , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO , , , , ,OTG_HS_ULPI_DIR , ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD, , , , ,OTG_HS_ULPI_NXT , ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , ,I2S1_MCK , , ,SPDIF_RX2 , , , ,FMC_SDNE0 , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , ,USART3_RX ,SPDIF_RX3 , , , ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 ,FMPI2C1_SCL ,I2S2_MCK , , ,USART6_TX , , , ,SDIO_D6 ,DCMI_D0 , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 ,FMPI2C1_SDA ,SPI2_SCK/I2S2_CK ,I2S3_MCK ,SPDIF_RX1 ,USART6_RX , , , ,SDIO_D7 ,DCMI_D1 , ,EVENTOUT, +PortC,PC8 ,TRACED0 , ,TIM3_CH3,TIM8_CH3 , , , ,UART5_RTS ,USART6_CK , , , ,SDIO_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , ,UART5_CTS , ,QUADSPI_BK1_IO0 , , ,SDIO_D1 ,DCMI_D3 , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDIO_D2 ,DCMI_D8 , ,EVENTOUT, +PortC,PC11, , , , , , ,SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDIO_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12, , , , ,I2C2_SDA , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , ,SDIO_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , ,SPI4_MISO ,SPI3_MOSI/I2S3_SD, , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , ,SPI2_NSS/I2S2_WS , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDIO_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 ,TRACED1 , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , ,QUADSPI_CLK , , ,FMC_CLK ,DCMI_D5 , ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD,SAI1_SD_A ,USART2_RX , , , , ,FMC_NWAIT ,DCMI_D10 , ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK ,SPDIF_RX0 , , , ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX ,SPDIF_RX1 , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , , ,EVENTOUT, +PortD,PD11, , , , ,FMPI2C1_SMBA , , ,USART3_CTS , ,QUADSPI_BK1_IO0 ,SAI2_SD_A , ,FMC_A16 , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1, ,FMPI2C1_SCL , , ,USART3_RTS , ,QUADSPI_BK1_IO1 ,SAI2_FS_A , ,FMC_A17 , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2, ,FMPI2C1_SDA , , , , ,QUADSPI_BK1_IO3 ,SAI2_SCK_A , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, ,FMPI2C1_SCL , , , ,SAI2_SCK_A , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, ,FMPI2C1_SDA , , , , , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR, , , , , , , ,SAI2_MCLK_A , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , , , , , , , , , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , ,QUADSPI_BK1_IO2 , , ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4 , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6 , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , , , ,FMC_A22 ,DCMI_D7 , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , ,UART5_RX , ,QUADSPI_BK2_IO0 , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , ,UART5_TX , ,QUADSPI_BK2_IO1 , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , ,QUADSPI_BK2_IO2 , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , ,QUADSPI_BK2_IO3 , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS , , , , ,SAI2_SD_B , ,FMC_D8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10 , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCLK_B , ,FMC_D11 , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , , ,SAI1_SD_B , , ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , , ,SAI1_MCLK_B , , ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , , ,SAI1_SCK_B , , ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , , ,SAI1_FS_B , , ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , , , , , ,DCMI_D11 , ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , , , , , , ,SAI2_SD_B , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , ,FMPI2C1_SMBA , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , ,FMPI2C1_SCL , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , ,FMPI2C1_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , ,QUADSPI_BK1_NCS , , ,DCMI_D12 , ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , ,FMC_INT ,DCMI_D13 , ,EVENTOUT, +PortG,PG8 , , , , , , , ,SPDIFRX_IN2 ,USART6_RTS , , , ,FMC_SDCLK , , ,EVENTOUT, +PortG,PG9 , , , , , , , ,SPDIFRX_IN3 ,USART6_RX ,QUADSPI_BK2_IO2 ,SAI2_FS_B , ,FMC_NE2/FMC_NCE3,DCMI_VSYNC , ,EVENTOUT, +PortG,PG10, , , , , , , , , , ,SAI2_SD_B , ,FMC_NE3 ,DCMI_D2 , ,EVENTOUT, +PortG,PG11, , , , , , ,SPI4_SCK ,SPDIFRX_IN0 , , , , , ,DCMI_D3 , ,EVENTOUT, +PortG,PG12, , , , , , ,SPI4_MISO ,SPDIFRX_IN1 ,USART6_RTS , , , ,FMC_NE4 , , ,EVENTOUT, +PortG,PG13,TRACED2 , , , , , ,SPI4_MOSI , ,USART6_CTS , , , ,FMC_A24 , , ,EVENTOUT, +PortG,PG14,TRACED3 , , , , , ,SPI4_NSS , ,USART6_TX ,QUADSPI_BK2_IO3 , , ,FMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f479_af.csv b/ports/stm32/boards/stm32f479_af.csv index 7cbb242a52ef3..a86926a84c265 100644 --- a/ports/stm32/boards/stm32f479_af.csv +++ b/ports/stm32/boards/stm32f479_af.csv @@ -1,161 +1,161 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11,I2C1/2/3,SPI1/2/3/4/5/6,SPI2/3/SAI1,SPI2/3/USART1/2/3,USART6/UART4/5/7/8,CAN1/2/TIM12/13/14/QUADSPI/LCD,QUADSPI/OTG2_HS/OTG1_FS,ETH,FMC/SDIO/OTG2_FS,DCMI/DSIHOST,LCD,SYS,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,ETH_MII_CRS,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,LCD_R2,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,,,,ETH_MDIO,,,LCD_R1,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,LCD_B2,OTG_HS_ULPI_D0,ETH_MII_COL,,,LCD_B5,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,DCMI_HSYNC,LCD_VSYNC,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK,,,,,OTG_HS_ULPI_CK,,,,LCD_R4,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,,TIM13_CH1,,,,DCMI_PIXCLK,LCD_G2,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI,,,,TIM14_CH1,QUADSPI_CLK,ETH_MII_RX_DV/ETH_RMII_CRS_DV,FMC_SDNWE,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,,,,DCMI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,DCMI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,,CAN1_TX,OTG_FS_DP,,,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,,,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,,,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,LCD_G1,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,LCD_G0,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,I2S3_EXTSD,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,,,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10,LCD_G7,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,CAN2_TX,QUADSPI_BK1_NCS,,FMC_SDNE1,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,,ETH_MII_TXD3,SDIO_D4,DCMI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,CAN1_TX,,,SDIO_D5,DCMI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,QUADSPI_BK1_NCS,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DSIHOST_TE,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,I2S2_EXTSD,USART3_RTS,,TIM12_CH1,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,,,,,OTG_HS_ULPI_STP,,FMC_SDNWE,,LCD_R5,EVENTOUT,ADC123_IN10 -PortC,PC1,TRACED0,,,,,SPI2_MOSI/I2S2_SD,SAI1_SD_A,,,,,ETH_MDC,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,I2S2_EXTSD,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,,,,,,,ETH_MII_RXD0/ETH_RMII_RXD0,FMC_SDNE0,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,,,,,ETH_MII_RXD1/ETH_RMII_RXD1,FMC_SDCKE0,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,,USART6_TX,,,,SDIO_D6,DCMI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,,USART6_RX,,,,SDIO_D7,DCMI_D1,LCD_G6,EVENTOUT, -PortC,PC8,TRACED1,,TIM3_CH3,TIM8_CH3,,,,,USART6_CK,,,,SDIO_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,,,QUADSPI_BK1_IO0,,,SDIO_D1,DCMI_D3,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,QUADSPI_BK1_IO1,,,SDIO_D2,DCMI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,,,,I2S3_EXTSD,SPI3_MISO,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,,,SDIO_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,TRACED3,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDIO_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,,UART5_RX,,,,SDIO_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,FMC_CLK,DCMI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,USART2_RX,,,,,FMC_NWAIT,DCMI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,,,,,USART3_CTS,,QUADSPI_BK1_IO0,,,FMC_A16/FMC_CLE,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS,,QUADSPI_BK1_IO1,,,FMC_A17/FMC_ALE,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,QUADSPI_BK1_IO3,,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,,,,,,UART8_RX,,,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,QUADSPI_BK1_IO2,,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,,,FMC_A22,DCMI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,UART7_RX,,QUADSPI_BK2_IO0,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,UART7_TX,,QUADSPI_BK2_IO1,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,,,QUADSPI_BK2_IO2,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,,,QUADSPI_BK2_IO3,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,,,,,,,FMC_D8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,,,FMC_D9,,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,,,FMC_D10,,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,,,FMC_D11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,SPI5_NSS,SAI1_SD_B,,UART7_RX,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,SPI5_SCK,SAI1_MCLK_B,,UART7_TX,QUADSPI_BK1_IO2,,,,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,SPI5_MISO,SAI1_SCK_B,,,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,SPI5_MOSI,SAI1_FS_B,,,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,QUADSPI_CLK,,,,DCMI_D11,LCD_DE,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,SPI5_MOSI,,,,,,,FMC_SDNRAS,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,,,,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,,,,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,,DCMI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,,,,,SAI1_MCLK_A,,USART6_CK,,,,FMC_INT,DCMI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,,,SPI6_NSS,,,USART6_RTS,,,ETH_PPS_OUT,FMC_SDCLK,,LCD_G7,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,QUADSPI_BK2_IO2,,,FMC_NE2/FMC_NCE,DCMI_VSYNC,,EVENTOUT, -PortG,PG10,,,,,,,,,,LCD_G3,,,FMC_NE3,DCMI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,,,,,,,,,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DCMI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,,,,,SPI6_MISO,,,USART6_RTS,LCD_B4,,,FMC_NE4,,LCD_B1,EVENTOUT, -PortG,PG13,TRACED0,,,,,SPI6_SCK,,,USART6_CTS,,,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,,LCD_R0,EVENTOUT, -PortG,PG14,TRACED1,,,,,SPI6_MOSI,,,USART6_TX,QUADSPI_BK2_IO3,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,,LCD_B0,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,,,,,,,QUADSPI_BK2_IO0,,ETH_MII_CRS,FMC_SDCKE0,,LCD_R0,EVENTOUT, -PortH,PH3,,,,,,,,,,QUADSPI_BK2_IO1,,ETH_MII_COL,FMC_SDNE0,,LCD_R1,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,LCD_G5,OTG_HS_ULPI_NXT,,,,LCD_G4,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,SPI5_SCK,,,,TIM12_CH1,,ETH_MII_RXD2,FMC_SDNE1,,,EVENTOUT, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9,,EVENTOUT, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC,LCD_R2,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,FMC_D17,DCMI_D0,LCD_R3,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,,,,,,,,,FMC_D18,DCMI_D1,LCD_R4,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,,,,,,,,,FMC_D19,DCMI_D2,LCD_R5,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,,,,,,,,,FMC_D20,DCMI_D3,LCD_R6,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,,CAN1_TX,,,FMC_D21,,LCD_G2,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,,,,,FMC_D22,DCMI_D4,LCD_G3,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,DCMI_D11,LCD_G4,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,FMC_D24,DCMI_D13,LCD_G5,EVENTOUT, -PortI,PI1,,,,,,SPI2_SCK/I2S2_CK,,,,,,,FMC_D25,DCMI_D8,LCD_G6,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,I2S2_EXTSD,,,,,,FMC_D26,DCMI_D9,LCD_G7,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,FMC_D27,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,,,FMC_NBL2,DCMI_D5,LCD_B4,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,,,FMC_NBL3,DCMI_VSYNC,LCD_B5,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,,,FMC_D28,DCMI_D6,LCD_B6,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,,,FMC_D29,DCMI_D7,LCD_B7,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,,CAN1_RX,,,FMC_D30,,LCD_VSYNC,EVENTOUT, -PortI,PI10,,,,,,,,,,,,ETH_MII_RX_ER,FMC_D31,,LCD_HSYNC,EVENTOUT, -PortI,PI11,,,,,,,,,,LCD_G6,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,,,,LCD_HSYNC,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,LCD_VSYNC,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,LCD_CLK,EVENTOUT, -PortI,PI15,,,,,,,,,,LCD_G2,,,,,LCD_R0,EVENTOUT, -PortJ,PJ0,,,,,,,,,,LCD_R7,,,,,LCD_R1,EVENTOUT, -PortJ,PJ1,,,,,,,,,,,,,,,LCD_R2,EVENTOUT, -PortJ,PJ2,,,,,,,,,,,,,,DSIHOST_TE,LCD_R3,EVENTOUT, -PortJ,PJ3,,,,,,,,,,,,,,,LCD_R4,EVENTOUT, -PortJ,PJ4,,,,,,,,,,,,,,,LCD_R5,EVENTOUT, -PortJ,PJ5,,,,,,,,,,,,,,,LCD_R6,EVENTOUT, -PortJ,PJ12,,,,,,,,,,LCD_G3,,,,,LCD_B0,EVENTOUT, -PortJ,PJ13,,,,,,,,,,LCD_G4,,,,,LCD_B1,EVENTOUT, -PortJ,PJ14,,,,,,,,,,,,,,,LCD_B2,EVENTOUT, -PortJ,PJ15,,,,,,,,,,,,,,,LCD_B3,EVENTOUT, -PortK,PK3,,,,,,,,,,,,,,,LCD_B4,EVENTOUT, -PortK,PK4,,,,,,,,,,,,,,,LCD_B5,EVENTOUT, -PortK,PK5,,,,,,,,,,,,,,,LCD_B6,EVENTOUT, -PortK,PK6,,,,,,,,,,,,,,,LCD_B7,EVENTOUT, -PortK,PK7,,,,,,,,,,,,,,,LCD_DE,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11,I2C1/2/3 ,SPI1/2/3/4/5/6 ,SPI2/3/SAI1 ,SPI2/3/USART1/2/3,USART6/UART4/5/7/8,CAN1/2/TIM12/13/14/QUADSPI/LCD,QUADSPI/OTG2_HS/OTG1_FS,ETH ,FMC/SDIO/OTG2_FS,DCMI/DSIHOST,LCD ,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , ,ETH_MII_CRS , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 , ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK, , ,LCD_R2 ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX , , , ,ETH_MDIO , , ,LCD_R1 ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , ,LCD_B2 ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LCD_B5 ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF ,DCMI_HSYNC ,LCD_VSYNC,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK , , , , ,OTG_HS_ULPI_CK , , , ,LCD_R4 ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , , ,TIM13_CH1 , , , ,DCMI_PIXCLK ,LCD_G2 ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI , , , ,TIM14_CH1 ,QUADSPI_CLK ,ETH_MII_RX_DV/ETH_RMII_CRS_DV ,FMC_SDNWE , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , , ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA,SPI2_SCK/I2S2_CK , ,USART1_TX , , , , , ,DCMI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , ,DCMI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS , ,CAN1_TX ,OTG_FS_DP , , , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS , , , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , , , ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , ,LCD_G1 ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , ,LCD_G0 ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,I2S3_EXTSD , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA,SPI1_MOSI ,SPI3_MOSI/I2S3_SD, , ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 ,LCD_G7 ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1, ,I2C1_SCL , , ,USART1_TX , ,CAN2_TX ,QUADSPI_BK1_NCS , ,FMC_SDNE1 ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX , , , , ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX , ,ETH_MII_TXD3 ,SDIO_D4 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,CAN1_TX , , ,SDIO_D5 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , ,QUADSPI_BK1_NCS ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DSIHOST_TE ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA,SPI2_NSS/I2S2_WS , ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO ,I2S2_EXTSD ,USART3_RTS , ,TIM12_CH1 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD, , , ,TIM12_CH2 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , , , , , ,OTG_HS_ULPI_STP , ,FMC_SDNWE , ,LCD_R5 ,EVENTOUT,ADC123_IN10 +PortC,PC1 ,TRACED0 , , , , ,SPI2_MOSI/I2S2_SD,SAI1_SD_A , , , , ,ETH_MDC , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO ,I2S2_EXTSD , , , ,OTG_HS_ULPI_DIR ,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD, , , , ,OTG_HS_ULPI_NXT ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , , , , , , , ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , , , , , ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , , ,USART6_TX , , , ,SDIO_D6 ,DCMI_D0 ,LCD_HSYNC,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK , ,USART6_RX , , , ,SDIO_D7 ,DCMI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 ,TRACED1 , ,TIM3_CH3,TIM8_CH3 , , , , ,USART6_CK , , , ,SDIO_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , , , ,QUADSPI_BK1_IO0 , , ,SDIO_D1 ,DCMI_D3 , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDIO_D2 ,DCMI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , , , , ,I2S3_EXTSD ,SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDIO_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , ,SDIO_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDIO_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , ,FMC_CLK ,DCMI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD,SAI1_SD_A ,USART2_RX , , , , ,FMC_NWAIT ,DCMI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , , ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , ,QUADSPI_BK1_IO0 , , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1, , , , ,USART3_RTS , ,QUADSPI_BK1_IO1 , , ,FMC_A17/FMC_ALE , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2, , , , , , ,QUADSPI_BK1_IO3 , , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , , , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , , , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR, , , , , ,UART8_RX , , , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , , , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , ,QUADSPI_BK1_IO2 , ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , , , ,FMC_A22 ,DCMI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , ,UART7_RX , ,QUADSPI_BK2_IO0 , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , ,UART7_TX , ,QUADSPI_BK2_IO1 , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , , , ,QUADSPI_BK2_IO2 , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , , ,QUADSPI_BK2_IO3 , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS , , , , , , ,FMC_D8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , , , ,FMC_D9 , ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , , , ,FMC_D10 , ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , , , ,FMC_D11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA, , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , ,SPI5_NSS ,SAI1_SD_B , ,UART7_RX ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , ,SPI5_SCK ,SAI1_MCLK_B , ,UART7_TX ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , ,SPI5_MISO ,SAI1_SCK_B , , ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , ,SPI5_MOSI ,SAI1_FS_B , , ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , ,QUADSPI_CLK , , , ,DCMI_D11 ,LCD_DE ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , ,SPI5_MOSI , , , , , , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , , , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , , , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , , , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , , ,DCMI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , , , , , ,SAI1_MCLK_A , ,USART6_CK , , , ,FMC_INT ,DCMI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , , , ,SPI6_NSS , , ,USART6_RTS , , ,ETH_PPS_OUT ,FMC_SDCLK , ,LCD_G7 ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX ,QUADSPI_BK2_IO2 , , ,FMC_NE2/FMC_NCE ,DCMI_VSYNC , ,EVENTOUT, +PortG,PG10, , , , , , , , , ,LCD_G3 , , ,FMC_NE3 ,DCMI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, , , , , , , , , , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, , , , , ,SPI6_MISO , , ,USART6_RTS ,LCD_B4 , , ,FMC_NE4 , ,LCD_B1 ,EVENTOUT, +PortG,PG13,TRACED0 , , , , ,SPI6_SCK , , ,USART6_CTS , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , ,LCD_R0 ,EVENTOUT, +PortG,PG14,TRACED1 , , , , ,SPI6_MOSI , , ,USART6_TX ,QUADSPI_BK2_IO3 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , ,LCD_B0 ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , , , , , , , ,QUADSPI_BK2_IO0 , ,ETH_MII_CRS ,FMC_SDCKE0 , ,LCD_R0 ,EVENTOUT, +PortH,PH3 , , , , , , , , , ,QUADSPI_BK2_IO1 , ,ETH_MII_COL ,FMC_SDNE0 , ,LCD_R1 ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , ,LCD_G5 ,OTG_HS_ULPI_NXT , , , ,LCD_G4 ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA,SPI5_SCK , , , ,TIM12_CH1 , ,ETH_MII_RXD2 ,FMC_SDNE1 , , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , ,EVENTOUT, +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LCD_R2 ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA, , , , ,TIM12_CH2 , , ,FMC_D17 ,DCMI_D0 ,LCD_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, , , , , , , , , ,FMC_D18 ,DCMI_D1 ,LCD_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, , , , , , , , , ,FMC_D19 ,DCMI_D2 ,LCD_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, , , , , , , , , ,FMC_D20 ,DCMI_D3 ,LCD_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , , ,CAN1_TX , , ,FMC_D21 , ,LCD_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , , , , , ,FMC_D22 ,DCMI_D4 ,LCD_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11 ,LCD_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , ,FMC_D24 ,DCMI_D13 ,LCD_G5 ,EVENTOUT, +PortI,PI1 , , , , , ,SPI2_SCK/I2S2_CK , , , , , , ,FMC_D25 ,DCMI_D8 ,LCD_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO ,I2S2_EXTSD , , , , , ,FMC_D26 ,DCMI_D9 ,LCD_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD, , , , , , ,FMC_D27 ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , , , ,FMC_NBL2 ,DCMI_D5 ,LCD_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , , , ,FMC_NBL3 ,DCMI_VSYNC ,LCD_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , , , ,FMC_D28 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , , , ,FMC_D29 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , , ,CAN1_RX , , ,FMC_D30 , ,LCD_VSYNC,EVENTOUT, +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER ,FMC_D31 , ,LCD_HSYNC,EVENTOUT, +PortI,PI11, , , , , , , , , ,LCD_G6 ,OTG_HS_ULPI_DIR , , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , , , , ,LCD_HSYNC,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , ,LCD_VSYNC,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , ,LCD_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , ,LCD_G2 , , , , ,LCD_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , ,LCD_R7 , , , , ,LCD_R1 ,EVENTOUT, +PortJ,PJ1 , , , , , , , , , , , , , , ,LCD_R2 ,EVENTOUT, +PortJ,PJ2 , , , , , , , , , , , , , ,DSIHOST_TE ,LCD_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , , , , ,LCD_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , , , , ,LCD_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LCD_R6 ,EVENTOUT, +PortJ,PJ12, , , , , , , , , ,LCD_G3 , , , , ,LCD_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , ,LCD_G4 , , , , ,LCD_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LCD_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LCD_B3 ,EVENTOUT, +PortK,PK3 , , , , , , , , , , , , , , ,LCD_B4 ,EVENTOUT, +PortK,PK4 , , , , , , , , , , , , , , ,LCD_B5 ,EVENTOUT, +PortK,PK5 , , , , , , , , , , , , , , ,LCD_B6 ,EVENTOUT, +PortK,PK6 , , , , , , , , , , , , , , ,LCD_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LCD_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f722_af.csv b/ports/stm32/boards/stm32f722_af.csv index 24500f50576eb..f353cde7ddbca 100644 --- a/ports/stm32/boards/stm32f722_af.csv +++ b/ports/stm32/boards/stm32f722_af.csv @@ -1,146 +1,146 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11/LPTIM1,I2C1/2/3/USART1,SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5,SPI2/I2S2/SPI3/I2S3/SPI3/I2S3/SAI1/UART4,SPI2/I2S2/SPI3/I2S3/USART1/2/3/UART5,SAI2/USART6/UART4/5/7/8/OTG1_FS,CAN1/TIM12/13/14/QUADSPI/FMC/OTG2_HS,SAI2/QUADSPI/SDMMC2/OTG2_HS/OTG1_FS,SDMMC2,UART7/FMC/SDMMC1/OTG2_FS,,,SYS,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,SAI2_SD_B,,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,SAI2_MCK_B,,,,,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,SAI2_SCK_B,,,,,,,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,OTG_HS_ULPI_D0,,,,,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,,,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,,,OTG_HS_ULPI_CK,,,,,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,,TIM13_CH1,,,,,,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SD,,,,TIM14_CH1,,,FMC_SDNWE,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,TIM8_BKIN2,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,,,,,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,SAI2_FS_B,CAN1_TX,OTG_FS_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,,UART4_RTS,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,,UART4_CTS,,OTG_HS_ULPI_D1,,,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,,OTG_HS_ULPI_D2,,,,,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,SAI1_SD_A,SPI3_MOSI/I2S3_SD,,QUADSPI_CLK,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,,,,SDMMC2_D2,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,SPI2_NSS/I2S2_WS,,,SDMMC2_D3,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,,,OTG_HS_ULPI_D7,,FMC_SDCKE1,,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,,QUADSPI_BK1_NCS,,FMC_SDNE1,,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,FMC_NL,,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,SDMMC2_D4,,SDMMC1_D4,,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,CAN1_TX,SDMMC2_D5,,SDMMC1_D5,,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,,OTG_HS_ULPI_D3,,,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,OTG_HS_ULPI_D4,,,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,,OTG_HS_ULPI_D5,,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,,OTG_HS_ULPI_D6,,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,,USART3_RTS,,TIM12_CH1,SDMMC2_D0,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,SDMMC2_D1,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,,,SAI2_FS_B,,OTG_HS_ULPI_STP,,FMC_SDNWE,,,EVENTOUT,ADC123_IN10 -PortC,PC1,TRACED0,,,,,SPI2_MOSI/I2S2_SD,SAI1_SD_A,,,,,,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,,,,,OTG_HS_ULPI_DIR,,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,I2S1_MCK,,,,,,,FMC_SDNE0,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,,,,,,FMC_SDCKE0,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,,USART6_TX,,SDMMC2_D6,,SDMMC1_D6,,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,,USART6_RX,,SDMMC2_D7,,SDMMC1_D7,,,EVENTOUT, -PortC,PC8,TRACED1,,TIM3_CH3,TIM8_CH3,,,,UART5_RTS,USART6_CK,,,,SDMMC1_D0,,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,UART5_CTS,,QUADSPI_BK1_IO0,,,SDMMC1_D1,,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,QUADSPI_BK1_IO1,,,SDMMC1_D2,,,EVENTOUT, -PortC,PC11,,,,,,,SPI3_MISO,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,,,SDMMC1_D3,,,EVENTOUT, -PortC,PC12,TRACED3,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDMMC1_CK,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,,UART5_RX,,,,SDMMC1_CMD,,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,FMC_CLK,,,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,USART2_RX,,,,SDMMC2_CK,FMC_NWAIT,,,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,,,,SDMMC2_CMD,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,,EVENTOUT, -PortD,PD11,,,,,,,,USART3_CTS,,QUADSPI_BK1_IO0,SAI2_SD_A,,FMC_A16/FMC_CLE,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,LPTIM1_IN1,,,,USART3_RTS,,QUADSPI_BK1_IO1,SAI2_FS_A,,FMC_A17/FMC_ALE,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,LPTIM1_OUT,,,,,,QUADSPI_BK1_IO3,SAI2_SCK_A,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,UART8_CTS,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,UART8_RTS,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,LPTIM1_ETR,,,,,UART8_RX,,SAI2_MCK_A,,FMC_NBL0,,,EVENTOUT, -PortE,PE1,,,,LPTIM1_IN2,,,,,UART8_TX,,,,FMC_NBL1,,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,QUADSPI_BK1_IO2,,,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,,,EVENTOUT, -PortE,PE6,TRACED3,TIM1_BKIN2,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,SAI2_MCK_B,,FMC_A22,,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,UART7_RX,,QUADSPI_BK2_IO0,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,UART7_TX,,QUADSPI_BK2_IO1,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,UART7_RTS,,QUADSPI_BK2_IO2,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,UART7_CTS,,QUADSPI_BK2_IO3,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,,,,,SAI2_SD_B,,FMC_D8,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,SAI2_SCK_B,,FMC_D9,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,SAI2_FS_B,,FMC_D10,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCK_B,,FMC_D11,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,SPI5_NSS,SAI1_SD_B,,UART7_RX,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,SPI5_SCK,SAI1_MCLK_B,,UART7_TX,QUADSPI_BK1_IO2,,,,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,SPI5_MISO,SAI1_SCK_B,,UART7_RTS,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,SPI5_MOSI,SAI1_FS_B,,UART7_CTS,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,,,,,,,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,SPI5_MOSI,,,,,SAI2_SD_B,,FMC_SDNRAS,,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,,,,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,,,,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,FMC_INT,,,EVENTOUT, -PortG,PG8,,,,,,,,,USART6_RTS,,,,FMC_SDCLK,,,EVENTOUT, -PortG,PG9,,,,,,,,,USART6_RX,QUADSPI_BK2_IO2,SAI2_FS_B,SDMMC2_D0,FMC_NE2/FMC_NCE,,,EVENTOUT, -PortG,PG10,,,,,,,,,,,SAI2_SD_B,SDMMC2_D1,FMC_NE3,,,EVENTOUT, -PortG,PG11,,,,,,,,,,,SDMMC2_D2,,,,,EVENTOUT, -PortG,PG12,,,,LPTIM1_IN1,,,,,USART6_RTS,,,SDMMC2_D3,FMC_NE4,,,EVENTOUT, -PortG,PG13,TRACED0,,,LPTIM1_OUT,,,,,USART6_CTS,,,,FMC_A24,,,EVENTOUT, -PortG,PG14,TRACED1,,,LPTIM1_ETR,,,,,USART6_TX,QUADSPI_BK2_IO3,,,FMC_A25,,,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,LPTIM1_IN2,,,,,,QUADSPI_BK2_IO0,SAI2_SCK_B,,FMC_SDCKE0,,,EVENTOUT, -PortH,PH3,,,,,,,,,,QUADSPI_BK2_IO1,SAI2_MCK_B,,FMC_SDNE0,,,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,,OTG_HS_ULPI_NXT,,,,,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,SPI5_SCK,,,,TIM12_CH1,,,FMC_SDNE1,,,EVENTOUT, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,,FMC_SDCKE1,,,EVENTOUT, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,FMC_D16,,,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,FMC_D17,,,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,,,,,,,,,FMC_D18,,,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,,,,,,,,,FMC_D19,,,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,,,,,,,,,FMC_D20,,,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,UART4_TX,CAN1_TX,,,FMC_D21,,,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,UART4_RX,CAN1_RX,,,FMC_D22,,,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,,,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,FMC_D24,,,EVENTOUT, -PortI,PI1,,,,TIM8_BKIN2,,SPI2_SCK/I2S2_CK,,,,,,,FMC_D25,,,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,,,,,,,FMC_D26,,,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,FMC_D27,,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,SAI2_MCK_A,,FMC_NBL2,,,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,SAI2_SCK_A,,FMC_NBL3,,,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,SAI2_SD_A,,FMC_D28,,,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,SAI2_FS_A,,FMC_D29,,,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,UART4_RX,CAN1_RX,,,FMC_D30,,,EVENTOUT, -PortI,PI10,,,,,,,,,,,,,FMC_D31,,,EVENTOUT, -PortI,PI11,,,,,,,,,,,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI15,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13,AF14,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11/LPTIM1,I2C1/2/3/USART1,SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5,SPI2/I2S2/SPI3/I2S3/SPI3/I2S3/SAI1/UART4,SPI2/I2S2/SPI3/I2S3/USART1/2/3/UART5,SAI2/USART6/UART4/5/7/8/OTG1_FS,CAN1/TIM12/13/14/QUADSPI/FMC/OTG2_HS,SAI2/QUADSPI/SDMMC2/OTG2_HS/OTG1_FS,SDMMC2 ,UART7/FMC/SDMMC1/OTG2_FS, , ,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , ,SAI2_SD_B , , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 ,SAI2_MCK_B , , , , ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX ,SAI2_SCK_B , , , , , , ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , , ,OTG_HS_ULPI_D0 , , , , ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF , , ,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , , , ,OTG_HS_ULPI_CK , , , , ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , , ,TIM13_CH1 , , , , , ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI/I2S1_SD , , , ,TIM14_CH1 , , ,FMC_SDNWE , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , ,TIM8_BKIN2 ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , , , , , , , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , , , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS ,SAI2_FS_B ,CAN1_TX ,OTG_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS , ,UART4_RTS , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , , ,UART4_CTS , ,OTG_HS_ULPI_D1 , , , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , , ,OTG_HS_ULPI_D2 , , , , ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , ,SAI1_SD_A ,SPI3_MOSI/I2S3_SD , ,QUADSPI_CLK , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK , , , ,SDMMC2_D2 , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,SPI2_NSS/I2S2_WS , , ,SDMMC2_D3 , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD ,SPI3_MOSI/I2S3_SD , , , ,OTG_HS_ULPI_D7 , ,FMC_SDCKE1 , , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1, ,I2C1_SCL , , ,USART1_TX , , ,QUADSPI_BK1_NCS , ,FMC_SDNE1 , , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX , , , , ,FMC_NL , , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX ,SDMMC2_D4 , ,SDMMC1_D4 , , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,CAN1_TX ,SDMMC2_D5 , ,SDMMC1_D5 , , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , , ,OTG_HS_ULPI_D3 , , , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , ,OTG_HS_ULPI_D4 , , , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS , ,USART3_CK , , ,OTG_HS_ULPI_D5 , ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , , ,OTG_HS_ULPI_D6 , , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO , ,USART3_RTS , ,TIM12_CH1 ,SDMMC2_D0 , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD , , , ,TIM12_CH2 ,SDMMC2_D1 , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , , , ,SAI2_FS_B , ,OTG_HS_ULPI_STP , ,FMC_SDNWE , , ,EVENTOUT,ADC123_IN10 +PortC,PC1 ,TRACED0 , , , , ,SPI2_MOSI/I2S2_SD ,SAI1_SD_A , , , , , , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO , , , , ,OTG_HS_ULPI_DIR , ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD , , , , ,OTG_HS_ULPI_NXT , ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , ,I2S1_MCK , , , , , , ,FMC_SDNE0 , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , , , , , , ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , , ,USART6_TX , ,SDMMC2_D6 , ,SDMMC1_D6 , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK , ,USART6_RX , ,SDMMC2_D7 , ,SDMMC1_D7 , , ,EVENTOUT, +PortC,PC8 ,TRACED1 , ,TIM3_CH3,TIM8_CH3 , , , ,UART5_RTS ,USART6_CK , , , ,SDMMC1_D0 , , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , ,UART5_CTS , ,QUADSPI_BK1_IO0 , , ,SDMMC1_D1 , , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDMMC1_D2 , , ,EVENTOUT, +PortC,PC11, , , , , , ,SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDMMC1_D3 , , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , ,SPI3_MOSI/I2S3_SD ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDMMC1_CMD , , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , ,FMC_CLK , , ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD ,SAI1_SD_A ,USART2_RX , , , ,SDMMC2_CK ,FMC_NWAIT , , ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK , , , ,SDMMC2_CMD,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , , ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , ,QUADSPI_BK1_IO0 ,SAI2_SD_A , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1,LPTIM1_IN1 , , , ,USART3_RTS , ,QUADSPI_BK1_IO1 ,SAI2_FS_A , ,FMC_A17/FMC_ALE , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2,LPTIM1_OUT , , , , , ,QUADSPI_BK1_IO3 ,SAI2_SCK_A , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , ,UART8_CTS , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , ,UART8_RTS , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR,LPTIM1_ETR , , , , ,UART8_RX , ,SAI2_MCK_A , ,FMC_NBL0 , , ,EVENTOUT, +PortE,PE1 , , , ,LPTIM1_IN2 , , , , ,UART8_TX , , , ,FMC_NBL1 , , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , ,QUADSPI_BK1_IO2 , , ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 , , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 , , ,EVENTOUT, +PortE,PE6 ,TRACED3 ,TIM1_BKIN2 , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , ,SAI2_MCK_B , ,FMC_A22 , , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , ,UART7_RX , ,QUADSPI_BK2_IO0 , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , ,UART7_TX , ,QUADSPI_BK2_IO1 , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , ,UART7_RTS , ,QUADSPI_BK2_IO2 , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , ,UART7_CTS , ,QUADSPI_BK2_IO3 , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS , , , , ,SAI2_SD_B , ,FMC_D8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10 , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCK_B , ,FMC_D11 , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , ,SPI5_NSS ,SAI1_SD_B , ,UART7_RX ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , ,SPI5_SCK ,SAI1_MCLK_B , ,UART7_TX ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , ,SPI5_MISO ,SAI1_SCK_B , ,UART7_RTS ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , ,SPI5_MOSI ,SAI1_FS_B , ,UART7_CTS ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , , , , , , , ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , ,SPI5_MOSI , , , , ,SAI2_SD_B , ,FMC_SDNRAS , , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , , , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , , , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , , , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , ,FMC_INT , , ,EVENTOUT, +PortG,PG8 , , , , , , , , ,USART6_RTS , , , ,FMC_SDCLK , , ,EVENTOUT, +PortG,PG9 , , , , , , , , ,USART6_RX ,QUADSPI_BK2_IO2 ,SAI2_FS_B ,SDMMC2_D0 ,FMC_NE2/FMC_NCE , , ,EVENTOUT, +PortG,PG10, , , , , , , , , , ,SAI2_SD_B ,SDMMC2_D1 ,FMC_NE3 , , ,EVENTOUT, +PortG,PG11, , , , , , , , , , ,SDMMC2_D2 , , , , ,EVENTOUT, +PortG,PG12, , , ,LPTIM1_IN1 , , , , ,USART6_RTS , , ,SDMMC2_D3 ,FMC_NE4 , , ,EVENTOUT, +PortG,PG13,TRACED0 , , ,LPTIM1_OUT , , , , ,USART6_CTS , , , ,FMC_A24 , , ,EVENTOUT, +PortG,PG14,TRACED1 , , ,LPTIM1_ETR , , , , ,USART6_TX ,QUADSPI_BK2_IO3 , , ,FMC_A25 , , ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , ,LPTIM1_IN2 , , , , , ,QUADSPI_BK2_IO0 ,SAI2_SCK_B , ,FMC_SDCKE0 , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , ,QUADSPI_BK2_IO1 ,SAI2_MCK_B , ,FMC_SDNE0 , , ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , , ,OTG_HS_ULPI_NXT , , , , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA ,SPI5_SCK , , , ,TIM12_CH1 , , ,FMC_SDNE1 , , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , , ,FMC_SDCKE1 , , ,EVENTOUT, +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , ,FMC_D16 , , ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA , , , , ,TIM12_CH2 , , ,FMC_D17 , , ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, , , , , , , , , ,FMC_D18 , , ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, , , , , , , , , ,FMC_D19 , , ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, , , , , , , , , ,FMC_D20 , , ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , ,UART4_TX ,CAN1_TX , , ,FMC_D21 , , ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , ,UART4_RX ,CAN1_RX , , ,FMC_D22 , , ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 , , ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , ,FMC_D24 , , ,EVENTOUT, +PortI,PI1 , , , ,TIM8_BKIN2 , ,SPI2_SCK/I2S2_CK , , , , , , ,FMC_D25 , , ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO , , , , , , ,FMC_D26 , , ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD , , , , , , ,FMC_D27 , , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,SAI2_MCK_A , ,FMC_NBL2 , , ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , ,FMC_NBL3 , , ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , ,FMC_D28 , , ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , ,FMC_D29 , , ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , ,UART4_RX ,CAN1_RX , , ,FMC_D30 , , ,EVENTOUT, +PortI,PI10, , , , , , , , , , , , ,FMC_D31 , , ,EVENTOUT, +PortI,PI11, , , , , , , , , , ,OTG_HS_ULPI_DIR , , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI15, , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f746_af.csv b/ports/stm32/boards/stm32f746_af.csv index d9e42008d616f..167feb6d62a0a 100644 --- a/ports/stm32/boards/stm32f746_af.csv +++ b/ports/stm32/boards/stm32f746_af.csv @@ -1,170 +1,170 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2,TIM3/4/5,TIM8/9/10/11/LPTIM1/CEC,I2C1/2/3/4/CEC,SPI1/2/3/4/5/6,SPI3/SAI1,SPI2/3/USART1/2/3/UART5/SPDIFRX,SAI2/USART6/UART4/5/7/8/SPDIFRX,CAN1/2/TIM12/13/14/QUADSPI/LCD,SAI2/QUADSPI/OTG2_HS/OTG1_FS,ETH/OTG1_FS,FMC/SDMMC1/OTG2_FS,DCMI,LCD,SYS,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,SAI2_SD_B,ETH_MII_CRS,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,SAI2_MCK_B,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,LCD_R2,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,SAI2_SCK_B,,,ETH_MDIO,,,LCD_R1,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,OTG_HS_ULPI_D0,ETH_MII_COL,,,LCD_B5,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,OTG_HS_SOF,DCMI_HSYNC,LCD_VSYNC,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,,,OTG_HS_ULPI_CK,,,,LCD_R4,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,,TIM13_CH1,,,,DCMI_PIXCLK,LCD_G2,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SD,,,,TIM14_CH1,,ETH_MII_RX_DV/ETH_RMII_CRS_DV,FMC_SDNWE,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,TIM8_BKIN2,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,,,,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,,,,DCMI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,,,DCMI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS,SAI2_FS_B,CAN1_TX,OTG_FS_DP,,,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,HDMI_CEC,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,,UART4_RTS,,,,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,,UART4_CTS,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,SAI1_SD_A,SPI3_MOSI/I2S3_SD,,QUADSPI_CLK,,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,SPI2_NSS/I2S2_WS,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,HDMI_CEC,I2C1_SCL,,,USART1_TX,,CAN2_TX,QUADSPI_BK1_NCS,,FMC_SDNE1,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,CAN1_RX,,ETH_MII_TXD3,SDMMC1_D4,DCMI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,,,,CAN1_TX,,,SDMMC1_D5,DCMI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,,USART3_CTS,,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,,SPI2_MISO,,USART3_RTS,,TIM12_CH1,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI/I2S2_SD,,,,TIM12_CH2,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,,,,,,SAI2_FS_B,,OTG_HS_ULPI_STP,,FMC_SDNWE,,LCD_R5,EVENTOUT,ADC123_IN10 -PortC,PC1,TRACED0,,,,,SPI2_MOSI/I2S2_SD,SAI1_SD_A,,,,,ETH_MDC,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,,,SPI2_MISO,,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,I2S1_MCK,,,SPDIFRX_IN2,,,ETH_MII_RXD0/ETH_RMII_RXD0,FMC_SDNE0,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,,SPDIFRX_IN3,,,ETH_MII_RXD1/ETH_RMII_RXD1,FMC_SDCKE0,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,,USART6_TX,,,,SDMMC1_D6,DCMI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,,USART6_RX,,,,SDMMC1_D7,DCMI_D1,LCD_G6,EVENTOUT, -PortC,PC8,TRACED1,,TIM3_CH3,TIM8_CH3,,,,UART5_RTS,USART6_CK,,,,SDMMC1_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,UART5_CTS,,QUADSPI_BK1_IO0,,,SDMMC1_D1,DCMI_D3,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,QUADSPI_BK1_IO1,,,SDMMC1_D2,DCMI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,,,,,SPI3_MISO,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,,,SDMMC1_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,TRACED3,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDMMC1_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,,,,,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,,,,,,,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,,UART5_RX,,,,SDMMC1_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS,,,,,FMC_CLK,DCMI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,USART2_RX,,,,,FMC_NWAIT,DCMI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,,,,,USART2_CK,SPDIFRX_IN0,,,,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,SPDIFRX_IN1,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,,I2C4_SMBA,,,USART3_CTS,,QUADSPI_BK1_IO0,SAI2_SD_A,,FMC_A16/FMC_CLE,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,LPTIM1_IN1,I2C4_SCL,,,USART3_RTS,,QUADSPI_BK1_IO1,SAI2_FS_A,,FMC_A17/FMC_ALE,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,LPTIM1_OUT,I2C4_SDA,,,,,QUADSPI_BK1_IO3,SAI2_SCK_A,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,UART8_CTS,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,UART8_RTS,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,LPTIM1_ETR,,,,,UART8_RX,,SAI2_MCK_A,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,LPTIM1_IN2,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,QUADSPI_BK1_IO2,,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,TIM1_BKIN2,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,SAI2_MCK_B,,FMC_A22,DCMI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,,,UART7_RX,,QUADSPI_BK2_IO0,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,,,UART7_TX,,QUADSPI_BK2_IO1,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,,,UART7_RTS,,QUADSPI_BK2_IO2,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,,,UART7_CTS,,QUADSPI_BK2_IO3,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,,,,,SAI2_SD_B,,FMC_D8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,SAI2_SCK_B,,FMC_D9,,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,SAI2_FS_B,,FMC_D10,,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCK_B,,FMC_D11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,SPI5_NSS,SAI1_SD_B,,UART7_RX,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,SPI5_SCK,SAI1_MCLK_B,,UART7_TX,QUADSPI_BK1_IO2,,,,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,SPI5_MISO,SAI1_SCK_B,,UART7_RTS,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,SPI5_MOSI,SAI1_FS_B,,UART7_CTS,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,,,,,DCMI_D11,LCD_DE,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,SPI5_MOSI,,,,,SAI2_SD_B,,FMC_SDNRAS,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,I2C4_SMBA,,,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,I2C4_SCL,,,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,I2C4_SDA,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,,DCMI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,,,,,,,USART6_CK,,,,FMC_INT,DCMI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,,,SPI6_NSS,,SPDIFRX_IN2,USART6_RTS,,,ETH_PPS_OUT,FMC_SDCLK,,,EVENTOUT, -PortG,PG9,,,,,,,,SPDIFRX_IN3,USART6_RX,QUADSPI_BK2_IO2,SAI2_FS_B,,FMC_NE2/FMC_NCE,DCMI_VSYNC,,EVENTOUT, -PortG,PG10,,,,,,,,,,LCD_G3,SAI2_SD_B,,FMC_NE3,DCMI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,,,,,,,SPDIFRX_IN0,,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DCMI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,,,LPTIM1_IN1,,SPI6_MISO,,SPDIFRX_IN1,USART6_RTS,LCD_B4,,,FMC_NE4,,LCD_B1,EVENTOUT, -PortG,PG13,TRACED0,,,LPTIM1_OUT,,SPI6_SCK,,,USART6_CTS,,,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,,LCD_R0,EVENTOUT, -PortG,PG14,TRACED1,,,LPTIM1_ETR,,SPI6_MOSI,,,USART6_TX,QUADSPI_BK2_IO3,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,,LCD_B0,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,LPTIM1_IN2,,,,,,QUADSPI_BK2_IO0,SAI2_SCK_B,ETH_MII_CRS,FMC_SDCKE0,,LCD_R0,EVENTOUT, -PortH,PH3,,,,,,,,,,QUADSPI_BK2_IO1,SAI2_MCK_B,ETH_MII_COL,FMC_SDNE0,,LCD_R1,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,,OTG_HS_ULPI_NXT,,,,,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,SPI5_SCK,,,,TIM12_CH1,,ETH_MII_RXD2,FMC_SDNE1,DCMI_D8,,EVENTOUT, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9,,EVENTOUT, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC,LCD_R2,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,FMC_D17,DCMI_D0,LCD_R3,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,I2C4_SMBA,,,,,,,,FMC_D18,DCMI_D1,LCD_R4,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,I2C4_SCL,,,,,,,,FMC_D19,DCMI_D2,LCD_R5,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,I2C4_SDA,,,,,,,,FMC_D20,DCMI_D3,LCD_R6,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,,CAN1_TX,,,FMC_D21,,LCD_G2,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,,,,,FMC_D22,DCMI_D4,LCD_G3,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,DCMI_D11,LCD_G4,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,FMC_D24,DCMI_D13,LCD_G5,EVENTOUT, -PortI,PI1,,,,TIM8_BKIN2,,SPI2_SCK/I2S2_CK,,,,,,,FMC_D25,DCMI_D8,LCD_G6,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,,,,,,,FMC_D26,DCMI_D9,LCD_G7,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,FMC_D27,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,SAI2_MCK_A,,FMC_NBL2,DCMI_D5,LCD_B4,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,SAI2_SCK_A,,FMC_NBL3,DCMI_VSYNC,LCD_B5,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,SAI2_SD_A,,FMC_D28,DCMI_D6,LCD_B6,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,SAI2_FS_A,,FMC_D29,DCMI_D7,LCD_B7,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,,CAN1_RX,,,FMC_D30,,LCD_VSYNC,EVENTOUT, -PortI,PI10,,,,,,,,,,,,ETH_MII_RX_ER,FMC_D31,,LCD_HSYNC,EVENTOUT, -PortI,PI11,,,,,,,,,,,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,,,,LCD_HSYNC,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,LCD_VSYNC,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,LCD_CLK,EVENTOUT, -PortI,PI15,,,,,,,,,,,,,,,LCD_R0,EVENTOUT, -PortJ,PJ0,,,,,,,,,,,,,,,LCD_R1,EVENTOUT, -PortJ,PJ1,,,,,,,,,,,,,,,LCD_R2,EVENTOUT, -PortJ,PJ2,,,,,,,,,,,,,,,LCD_R3,EVENTOUT, -PortJ,PJ3,,,,,,,,,,,,,,,LCD_R4,EVENTOUT, -PortJ,PJ4,,,,,,,,,,,,,,,LCD_R5,EVENTOUT, -PortJ,PJ5,,,,,,,,,,,,,,,LCD_R6,EVENTOUT, -PortJ,PJ6,,,,,,,,,,,,,,,LCD_R7,EVENTOUT, -PortJ,PJ7,,,,,,,,,,,,,,,LCD_G0,EVENTOUT, -PortJ,PJ8,,,,,,,,,,,,,,,LCD_G1,EVENTOUT, -PortJ,PJ9,,,,,,,,,,,,,,,LCD_G2,EVENTOUT, -PortJ,PJ10,,,,,,,,,,,,,,,LCD_G3,EVENTOUT, -PortJ,PJ11,,,,,,,,,,,,,,,LCD_G4,EVENTOUT, -PortJ,PJ12,,,,,,,,,,,,,,,LCD_B0,EVENTOUT, -PortJ,PJ13,,,,,,,,,,,,,,,LCD_B1,EVENTOUT, -PortJ,PJ14,,,,,,,,,,,,,,,LCD_B2,EVENTOUT, -PortJ,PJ15,,,,,,,,,,,,,,,LCD_B3,EVENTOUT, -PortK,PK0,,,,,,,,,,,,,,,LCD_G5,EVENTOUT, -PortK,PK1,,,,,,,,,,,,,,,LCD_G6,EVENTOUT, -PortK,PK2,,,,,,,,,,,,,,,LCD_G7,EVENTOUT, -PortK,PK3,,,,,,,,,,,,,,,LCD_B4,EVENTOUT, -PortK,PK4,,,,,,,,,,,,,,,LCD_B5,EVENTOUT, -PortK,PK5,,,,,,,,,,,,,,,LCD_B6,EVENTOUT, -PortK,PK6,,,,,,,,,,,,,,,LCD_B7,EVENTOUT, -PortK,PK7,,,,,,,,,,,,,,,LCD_DE,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,TIM1/2 ,TIM3/4/5,TIM8/9/10/11/LPTIM1/CEC,I2C1/2/3/4/CEC,SPI1/2/3/4/5/6 ,SPI3/SAI1 ,SPI2/3/USART1/2/3/UART5/SPDIFRX,SAI2/USART6/UART4/5/7/8/SPDIFRX,CAN1/2/TIM12/13/14/QUADSPI/LCD,SAI2/QUADSPI/OTG2_HS/OTG1_FS,ETH/OTG1_FS ,FMC/SDMMC1/OTG2_FS,DCMI ,LCD ,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , ,SAI2_SD_B ,ETH_MII_CRS , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 ,SAI2_MCK_B ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK, , ,LCD_R2 ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX ,SAI2_SCK_B , , ,ETH_MDIO , , ,LCD_R1 ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , , ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LCD_B5 ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , ,OTG_HS_SOF ,DCMI_HSYNC ,LCD_VSYNC,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , , , ,OTG_HS_ULPI_CK , , , ,LCD_R4 ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , , ,TIM13_CH1 , , , ,DCMI_PIXCLK,LCD_G2 ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI/I2S1_SD, , , ,TIM14_CH1 , ,ETH_MII_RX_DV/ETH_RMII_CRS_DV ,FMC_SDNWE , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , ,TIM8_BKIN2 ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF , , , ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , , , , , ,DCMI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID , , ,DCMI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS ,SAI2_FS_B ,CAN1_TX ,OTG_FS_DP , , , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , ,HDMI_CEC ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS , ,UART4_RTS , , , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , , , ,UART4_CTS ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , , , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , , ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , ,SAI1_SD_A ,SPI3_MOSI/I2S3_SD , ,QUADSPI_CLK , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,SPI2_NSS/I2S2_WS , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2, ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD, , ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1,HDMI_CEC ,I2C1_SCL , , ,USART1_TX , ,CAN2_TX ,QUADSPI_BK1_NCS , ,FMC_SDNE1 ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , , ,USART1_RX , , , , ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , , , , ,CAN1_RX , ,ETH_MII_TXD3 ,SDMMC1_D4 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , , ,CAN1_TX , , ,SDMMC1_D5 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , , ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , , ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS , ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N , ,SPI2_MISO , ,USART3_RTS , ,TIM12_CH1 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI/I2S2_SD, , , ,TIM12_CH2 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , , , , , , ,SAI2_FS_B , ,OTG_HS_ULPI_STP , ,FMC_SDNWE , ,LCD_R5 ,EVENTOUT,ADC123_IN10 +PortC,PC1 ,TRACED0 , , , , ,SPI2_MOSI/I2S2_SD,SAI1_SD_A , , , , ,ETH_MDC , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , , , ,SPI2_MISO , , , , ,OTG_HS_ULPI_DIR ,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , , , ,SPI2_MOSI/I2S2_SD, , , , ,OTG_HS_ULPI_NXT ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , ,I2S1_MCK , , ,SPDIFRX_IN2 , , ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , , ,SPDIFRX_IN3 , , ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , , ,USART6_TX , , , ,SDMMC1_D6 ,DCMI_D0 ,LCD_HSYNC,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK , ,USART6_RX , , , ,SDMMC1_D7 ,DCMI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 ,TRACED1 , ,TIM3_CH3,TIM8_CH3 , , , ,UART5_RTS ,USART6_CK , , , ,SDMMC1_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , ,UART5_CTS , ,QUADSPI_BK1_IO0 , , ,SDMMC1_D1 ,DCMI_D3 , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDMMC1_D2 ,DCMI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , , , , , ,SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDMMC1_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , , , , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDMMC1_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS , , , , ,FMC_CLK ,DCMI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , ,SPI3_MOSI/I2S3_SD,SAI1_SD_A ,USART2_RX , , , , ,FMC_NWAIT ,DCMI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , , , , , ,USART2_CK ,SPDIFRX_IN0 , , , ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX ,SPDIFRX_IN1 , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , , ,I2C4_SMBA , , ,USART3_CTS , ,QUADSPI_BK1_IO0 ,SAI2_SD_A , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1,LPTIM1_IN1 ,I2C4_SCL , , ,USART3_RTS , ,QUADSPI_BK1_IO1 ,SAI2_FS_A , ,FMC_A17/FMC_ALE , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2,LPTIM1_OUT ,I2C4_SDA , , , , ,QUADSPI_BK1_IO3 ,SAI2_SCK_A , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , ,UART8_CTS , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , ,UART8_RTS , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR,LPTIM1_ETR , , , , ,UART8_RX , ,SAI2_MCK_A , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , ,LPTIM1_IN2 , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , ,QUADSPI_BK1_IO2 , ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 ,TIM1_BKIN2 , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , ,SAI2_MCK_B , ,FMC_A22 ,DCMI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , , , ,UART7_RX , ,QUADSPI_BK2_IO0 , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , , , ,UART7_TX , ,QUADSPI_BK2_IO1 , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , , , ,UART7_RTS , ,QUADSPI_BK2_IO2 , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , ,UART7_CTS , ,QUADSPI_BK2_IO3 , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS , , , , ,SAI2_SD_B , ,FMC_D8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9 , ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10 , ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCK_B , ,FMC_D11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , ,SPI5_NSS ,SAI1_SD_B , ,UART7_RX ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , ,SPI5_SCK ,SAI1_MCLK_B , ,UART7_TX ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , ,SPI5_MISO ,SAI1_SCK_B , ,UART7_RTS ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , ,SPI5_MOSI ,SAI1_FS_B , ,UART7_CTS ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , , , , , ,DCMI_D11 ,LCD_DE ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , ,SPI5_MOSI , , , , ,SAI2_SD_B , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , ,I2C4_SMBA , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , ,I2C4_SCL , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , ,I2C4_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , , ,DCMI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , , , , , , , ,USART6_CK , , , ,FMC_INT ,DCMI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , , , ,SPI6_NSS , ,SPDIFRX_IN2 ,USART6_RTS , , ,ETH_PPS_OUT ,FMC_SDCLK , , ,EVENTOUT, +PortG,PG9 , , , , , , , ,SPDIFRX_IN3 ,USART6_RX ,QUADSPI_BK2_IO2 ,SAI2_FS_B , ,FMC_NE2/FMC_NCE ,DCMI_VSYNC , ,EVENTOUT, +PortG,PG10, , , , , , , , , ,LCD_G3 ,SAI2_SD_B , ,FMC_NE3 ,DCMI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, , , , , , , ,SPDIFRX_IN0 , , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, , , ,LPTIM1_IN1 , ,SPI6_MISO , ,SPDIFRX_IN1 ,USART6_RTS ,LCD_B4 , , ,FMC_NE4 , ,LCD_B1 ,EVENTOUT, +PortG,PG13,TRACED0 , , ,LPTIM1_OUT , ,SPI6_SCK , , ,USART6_CTS , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , ,LCD_R0 ,EVENTOUT, +PortG,PG14,TRACED1 , , ,LPTIM1_ETR , ,SPI6_MOSI , , ,USART6_TX ,QUADSPI_BK2_IO3 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , ,LCD_B0 ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , ,LPTIM1_IN2 , , , , , ,QUADSPI_BK2_IO0 ,SAI2_SCK_B ,ETH_MII_CRS ,FMC_SDCKE0 , ,LCD_R0 ,EVENTOUT, +PortH,PH3 , , , , , , , , , ,QUADSPI_BK2_IO1 ,SAI2_MCK_B ,ETH_MII_COL ,FMC_SDNE0 , ,LCD_R1 ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , , ,OTG_HS_ULPI_NXT , , , , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA ,SPI5_SCK , , , ,TIM12_CH1 , ,ETH_MII_RXD2 ,FMC_SDNE1 ,DCMI_D8 , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , ,EVENTOUT, +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LCD_R2 ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA , , , , ,TIM12_CH2 , , ,FMC_D17 ,DCMI_D0 ,LCD_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, ,I2C4_SMBA , , , , , , , ,FMC_D18 ,DCMI_D1 ,LCD_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, ,I2C4_SCL , , , , , , , ,FMC_D19 ,DCMI_D2 ,LCD_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, ,I2C4_SDA , , , , , , , ,FMC_D20 ,DCMI_D3 ,LCD_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , , ,CAN1_TX , , ,FMC_D21 , ,LCD_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , , , , , ,FMC_D22 ,DCMI_D4 ,LCD_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11 ,LCD_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , ,FMC_D24 ,DCMI_D13 ,LCD_G5 ,EVENTOUT, +PortI,PI1 , , , ,TIM8_BKIN2 , ,SPI2_SCK/I2S2_CK , , , , , , ,FMC_D25 ,DCMI_D8 ,LCD_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO , , , , , , ,FMC_D26 ,DCMI_D9 ,LCD_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD, , , , , , ,FMC_D27 ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,SAI2_MCK_A , ,FMC_NBL2 ,DCMI_D5 ,LCD_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , ,FMC_NBL3 ,DCMI_VSYNC ,LCD_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , ,FMC_D28 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , ,FMC_D29 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , , ,CAN1_RX , , ,FMC_D30 , ,LCD_VSYNC,EVENTOUT, +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER ,FMC_D31 , ,LCD_HSYNC,EVENTOUT, +PortI,PI11, , , , , , , , , , ,OTG_HS_ULPI_DIR , , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , , , , ,LCD_HSYNC,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , ,LCD_VSYNC,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , ,LCD_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , , , , , , ,LCD_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , , , , , , ,LCD_R1 ,EVENTOUT, +PortJ,PJ1 , , , , , , , , , , , , , , ,LCD_R2 ,EVENTOUT, +PortJ,PJ2 , , , , , , , , , , , , , , ,LCD_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , , , , ,LCD_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , , , , ,LCD_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LCD_R6 ,EVENTOUT, +PortJ,PJ6 , , , , , , , , , , , , , , ,LCD_R7 ,EVENTOUT, +PortJ,PJ7 , , , , , , , , , , , , , , ,LCD_G0 ,EVENTOUT, +PortJ,PJ8 , , , , , , , , , , , , , , ,LCD_G1 ,EVENTOUT, +PortJ,PJ9 , , , , , , , , , , , , , , ,LCD_G2 ,EVENTOUT, +PortJ,PJ10, , , , , , , , , , , , , , ,LCD_G3 ,EVENTOUT, +PortJ,PJ11, , , , , , , , , , , , , , ,LCD_G4 ,EVENTOUT, +PortJ,PJ12, , , , , , , , , , , , , , ,LCD_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , , , , , , ,LCD_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LCD_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LCD_B3 ,EVENTOUT, +PortK,PK0 , , , , , , , , , , , , , , ,LCD_G5 ,EVENTOUT, +PortK,PK1 , , , , , , , , , , , , , , ,LCD_G6 ,EVENTOUT, +PortK,PK2 , , , , , , , , , , , , , , ,LCD_G7 ,EVENTOUT, +PortK,PK3 , , , , , , , , , , , , , , ,LCD_B4 ,EVENTOUT, +PortK,PK4 , , , , , , , , , , , , , , ,LCD_B5 ,EVENTOUT, +PortK,PK5 , , , , , , , , , , , , , , ,LCD_B6 ,EVENTOUT, +PortK,PK6 , , , , , , , , , , , , , , ,LCD_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LCD_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32f767_af.csv b/ports/stm32/boards/stm32f767_af.csv index 0c8069ec26129..c86c3bfe314a1 100644 --- a/ports/stm32/boards/stm32f767_af.csv +++ b/ports/stm32/boards/stm32f767_af.csv @@ -1,170 +1,170 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,I2C4/UART5/TIM1/2,TIM3/4/5,TIM8/9/10/11/LPTIM1/DFSDM1/CEC,I2C1/2/3/4/USART1/CEC,SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/6,SPI2/I2S2/SPI3/I2S3/SAI1/I2C4/UART4/DFSDM1,SPI2/I2S2/SPI3/I2S3/SPI6/USART1/2/3/UART5/DFSDM1/SPDIF,SPI6/SAI2/USART6/UART4/5/7/8/OTG_FS/SPDIF,CAN1/2/TIM12/13/14/QUADSPI/FMC/LCD,SAI2/QUADSPI/SDMMC2/DFSDM1/OTG2_HS/OTG1_FS/LCD,I2C4/CAN3/SDMMC2/ETH,UART7/FMC/SDMMC1/MDIOS/OTG2_FS,DCMI/LCD/DSI,LCD,SYS,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,SAI2_SD_B,ETH_MII_CRS,,,,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,SAI2_MCK_B,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,LCD_R2,EVENTOUT,ADC123_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,SAI2_SCK_B,,,ETH_MDIO,MDIOS_MDIO,,LCD_R1,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,LCD_B2,OTG_HS_ULPI_D0,ETH_MII_COL,,,LCD_B5,EVENTOUT,ADC123_IN3 -PortA,PA4,,,,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,SPI6_NSS,,,,OTG_HS_SOF,DCMI_HSYNC,LCD_VSYNC,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,SPI6_SCK,,OTG_HS_ULPI_CK,,,,LCD_R4,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,,SPI6_MISO,TIM13_CH1,,,MDIOS_MDC,DCMI_PIXCLK,LCD_G2,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SD,,,SPI6_MOSI,TIM14_CH1,,ETH_MII_RX_DV/ETH_RMII_CRS_DV,FMC_SDNWE,,,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO1,TIM1_CH1,,TIM8_BKIN2,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,CAN3_RX,UART7_RX,LCD_B3,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,,,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,,,,DCMI_D0,LCD_R5,EVENTOUT, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,LCD_B4,OTG_FS_ID,,MDIOS_MDIO,DCMI_D1,LCD_B1,EVENTOUT, -PortA,PA11,,TIM1_CH4,,,,SPI2_NSS/I2S2_WS,UART4_RX,USART1_CTS,,CAN1_RX,OTG_FS_DM,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,SPI2_SCK/I2S2_CK,UART4_TX,USART1_RTS,SAI2_FS_B,CAN1_TX,OTG_FS_DP,,,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,HDMI_CEC,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,SPI6_NSS,UART4_RTS,,,CAN3_TX,UART7_TX,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,DFSDM1_CKOUT,,UART4_CTS,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,LCD_G1,EVENTOUT,ADC12_IN8 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,DFSDM1_DATAIN1,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,LCD_G0,EVENTOUT,ADC12_IN9 -PortB,PB2,,,,,,,SAI1_SD_A,SPI3_MOSI/I2S3_SD,,QUADSPI_CLK,DFSDM1_CKIN1,,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,,SPI6_SCK,,SDMMC2_D2,CAN3_RX,UART7_RX,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,SPI2_NSS/I2S2_WS,SPI6_MISO,,SDMMC2_D3,CAN3_TX,UART7_TX,,,EVENTOUT, -PortB,PB5,,UART5_RX,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI/I2S1_SD,SPI3_MOSI/I2S3_SD,,SPI6_MOSI,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10,LCD_G7,EVENTOUT, -PortB,PB6,,UART5_TX,TIM4_CH1,HDMI_CEC,I2C1_SCL,,DFSDM1_DATAIN5,USART1_TX,,CAN2_TX,QUADSPI_BK1_NCS,I2C4_SCL,FMC_SDNE1,DCMI_D5,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,DFSDM1_CKIN5,USART1_RX,,,,I2C4_SDA,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,I2C4_SCL,TIM4_CH3,TIM10_CH1,I2C1_SCL,,DFSDM1_CKIN7,UART5_RX,,CAN1_RX,SDMMC2_D4,ETH_MII_TXD3,SDMMC1_D4,DCMI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,I2C4_SDA,TIM4_CH4,TIM11_CH1,I2C1_SDA,SPI2_NSS/I2S2_WS,DFSDM1_DATAIN7,UART5_TX,,CAN1_TX,SDMMC2_D5,I2C4_SMBA,SDMMC1_D5,DCMI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK/I2S2_CK,DFSDM1_DATAIN7,USART3_TX,,QUADSPI_BK1_NCS,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,DFSDM1_CKIN7,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DSI_TE,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,DFSDM1_DATAIN1,USART3_CK,UART5_RX,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,,SPI2_SCK/I2S2_CK,DFSDM1_CKIN1,USART3_CTS,UART5_TX,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,USART1_TX,SPI2_MISO,DFSDM1_DATAIN2,USART3_RTS,UART4_RTS,TIM12_CH1,SDMMC2_D0,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,USART1_RX,SPI2_MOSI/I2S2_SD,DFSDM1_CKIN2,,UART4_CTS,TIM12_CH2,SDMMC2_D1,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,DFSDM1_CKIN0,,,DFSDM1_DATAIN4,,SAI2_FS_B,,OTG_HS_ULPI_STP,,FMC_SDNWE,,LCD_R5,EVENTOUT,ADC123_IN10 -PortC,PC1,TRACED0,,,DFSDM1_DATAIN0,,SPI2_MOSI/I2S2_SD,SAI1_SD_A,,,,DFSDM1_CKIN4,ETH_MDC,MDIOS_MDC,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,,,DFSDM1_CKIN1,,SPI2_MISO,DFSDM1_CKOUT,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,,,DFSDM1_DATAIN1,,SPI2_MOSI/I2S2_SD,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,DFSDM1_CKIN2,,I2S1_MCK,,,SPDIFRX_IN2,,,ETH_MII_RXD0/ETH_RMII_RXD0,FMC_SDNE0,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,DFSDM1_DATAIN2,,,,,SPDIFRX_IN3,,,ETH_MII_RXD1/ETH_RMII_RXD1,FMC_SDCKE0,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,,DFSDM1_CKIN3,USART6_TX,FMC_NWAIT,SDMMC2_D6,,SDMMC1_D6,DCMI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,DFSDM1_DATAIN3,USART6_RX,FMC_NE1,SDMMC2_D7,,SDMMC1_D7,DCMI_D1,LCD_G6,EVENTOUT, -PortC,PC8,TRACED1,,TIM3_CH3,TIM8_CH3,,,,UART5_RTS,USART6_CK,FMC_NE2/FMC_NCE,,,SDMMC1_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,UART5_CTS,,QUADSPI_BK1_IO0,LCD_G3,,SDMMC1_D1,DCMI_D3,LCD_B2,EVENTOUT, -PortC,PC10,,,,DFSDM1_CKIN5,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,QUADSPI_BK1_IO1,,,SDMMC1_D2,DCMI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,,DFSDM1_DATAIN5,,,SPI3_MISO,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,,,SDMMC1_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,TRACED3,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,SDMMC1_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,DFSDM1_CKIN6,,,DFSDM1_DATAIN7,,UART4_RX,CAN1_RX,,,FMC_D2,,,EVENTOUT, -PortD,PD1,,,,DFSDM1_DATAIN6,,,DFSDM1_CKIN7,,UART4_TX,CAN1_TX,,,FMC_D3,,,EVENTOUT, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,,UART5_RX,,,,SDMMC1_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,DFSDM1_CKOUT,,SPI2_SCK/I2S2_CK,DFSDM1_DATAIN0,USART2_CTS,,,,,FMC_CLK,DCMI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,,,,,DFSDM1_CKIN0,USART2_RTS,,,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,,DFSDM1_CKIN4,,SPI3_MOSI/I2S3_SD,SAI1_SD_A,USART2_RX,,,DFSDM1_DATAIN1,SDMMC2_CK,FMC_NWAIT,DCMI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,DFSDM1_DATAIN4,,SPI1_MOSI/I2S1_SD,DFSDM1_CKIN1,USART2_CK,SPDIFRX_IN0,,,SDMMC2_CMD,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,DFSDM1_CKIN3,,,,USART3_TX,SPDIFRX_IN1,,,,FMC_D13,,,EVENTOUT, -PortD,PD9,,,,DFSDM1_DATAIN3,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT, -PortD,PD10,,,,DFSDM1_CKOUT,,,,USART3_CK,,,,,FMC_D15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,,I2C4_SMBA,,,USART3_CTS,,QUADSPI_BK1_IO0,SAI2_SD_A,,FMC_A16/FMC_CLE,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,LPTIM1_IN1,I2C4_SCL,,,USART3_RTS,,QUADSPI_BK1_IO1,SAI2_FS_A,,FMC_A17/FMC_ALE,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,LPTIM1_OUT,I2C4_SDA,,,,,QUADSPI_BK1_IO3,SAI2_SCK_A,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,UART8_CTS,,,,FMC_D0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,UART8_RTS,,,,FMC_D1,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,LPTIM1_ETR,,,,,UART8_RX,,SAI2_MCK_A,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,,,LPTIM1_IN2,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,,,,SPI4_SCK,SAI1_MCLK_A,,,QUADSPI_BK1_IO2,,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,,,SAI1_SD_B,,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,,,,SPI4_NSS,SAI1_FS_A,,,,DFSDM1_DATAIN3,,FMC_A20,DCMI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,SPI4_MISO,SAI1_SCK_A,,,,DFSDM1_CKIN3,,FMC_A21,DCMI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,TIM1_BKIN2,,TIM9_CH2,,SPI4_MOSI,SAI1_SD_A,,,,SAI2_MCK_B,,FMC_A22,DCMI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,DFSDM1_DATAIN2,,UART7_RX,,QUADSPI_BK2_IO0,,FMC_D4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,DFSDM1_CKIN2,,UART7_TX,,QUADSPI_BK2_IO1,,FMC_D5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,DFSDM1_CKOUT,,UART7_RTS,,QUADSPI_BK2_IO2,,FMC_D6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,DFSDM1_DATAIN4,,UART7_CTS,,QUADSPI_BK2_IO3,,FMC_D7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,,SPI4_NSS,DFSDM1_CKIN4,,,,SAI2_SD_B,,FMC_D8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,DFSDM1_DATAIN5,,,,SAI2_SCK_B,,FMC_D9,,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,DFSDM1_CKIN5,,,,SAI2_FS_B,,FMC_D10,,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCK_B,,FMC_D11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,,FMC_D12,,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN9 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN14 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN15 -PortF,PF6,,,,TIM10_CH1,,SPI5_NSS,SAI1_SD_B,,UART7_RX,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC3_IN4 -PortF,PF7,,,,TIM11_CH1,,SPI5_SCK,SAI1_MCLK_B,,UART7_TX,QUADSPI_BK1_IO2,,,,,,EVENTOUT,ADC3_IN5 -PortF,PF8,,,,,,SPI5_MISO,SAI1_SCK_B,,UART7_RTS,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT,ADC3_IN6 -PortF,PF9,,,,,,SPI5_MOSI,SAI1_FS_B,,UART7_CTS,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT,ADC3_IN7 -PortF,PF10,,,,,,,,,,QUADSPI_CLK,,,,DCMI_D11,LCD_DE,EVENTOUT,ADC3_IN8 -PortF,PF11,,,,,,SPI5_MOSI,,,,,SAI2_SD_B,,FMC_SDNRAS,DCMI_D12,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT, -PortF,PF13,,,,,I2C4_SMBA,,DFSDM1_DATAIN6,,,,,,FMC_A7,,,EVENTOUT, -PortF,PF14,,,,,I2C4_SCL,,DFSDM1_CKIN6,,,,,,FMC_A8,,,EVENTOUT, -PortF,PF15,,,,,I2C4_SDA,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,FMC_A13,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,FMC_NE3,DCMI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,,,,,SAI1_MCLK_A,,USART6_CK,,,,FMC_INT,DCMI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,,,SPI6_NSS,,SPDIFRX_IN2,USART6_RTS,,,ETH_PPS_OUT,FMC_SDCLK,,LCD_G7,EVENTOUT, -PortG,PG9,,,,,,SPI1_MISO,,SPDIFRX_IN3,USART6_RX,QUADSPI_BK2_IO2,SAI2_FS_B,SDMMC2_D0,FMC_NE2/FMC_NCE,DCMI_VSYNC,,EVENTOUT, -PortG,PG10,,,,,,SPI1_NSS/I2S1_WS,,,,LCD_G3,SAI2_SD_B,SDMMC2_D1,FMC_NE3,DCMI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,,,,,SPI1_SCK/I2S1_CK,,SPDIFRX_IN0,,,SDMMC2_D2,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DCMI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,,,LPTIM1_IN1,,SPI6_MISO,,SPDIFRX_IN1,USART6_RTS,LCD_B4,,SDMMC2_D3,FMC_NE4,,LCD_B1,EVENTOUT, -PortG,PG13,TRACED0,,,LPTIM1_OUT,,SPI6_SCK,,,USART6_CTS,,,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,,LCD_R0,EVENTOUT, -PortG,PG14,TRACED1,,,LPTIM1_ETR,,SPI6_MOSI,,,USART6_TX,QUADSPI_BK2_IO3,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,,LCD_B0,EVENTOUT, -PortG,PG15,,,,,,,,,USART6_CTS,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,,,LPTIM1_IN2,,,,,,QUADSPI_BK2_IO0,SAI2_SCK_B,ETH_MII_CRS,FMC_SDCKE0,,LCD_R0,EVENTOUT, -PortH,PH3,,,,,,,,,,QUADSPI_BK2_IO1,SAI2_MCK_B,ETH_MII_COL,FMC_SDNE0,,LCD_R1,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,,,,,LCD_G5,OTG_HS_ULPI_NXT,,,,LCD_G4,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,,,,I2C2_SMBA,SPI5_SCK,,,,TIM12_CH1,,ETH_MII_RXD2,FMC_SDNE1,DCMI_D8,,EVENTOUT, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9,,EVENTOUT, -PortH,PH8,,,,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC,LCD_R2,EVENTOUT, -PortH,PH9,,,,,I2C3_SMBA,,,,,TIM12_CH2,,,FMC_D17,DCMI_D0,LCD_R3,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,I2C4_SMBA,,,,,,,,FMC_D18,DCMI_D1,LCD_R4,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,I2C4_SCL,,,,,,,,FMC_D19,DCMI_D2,LCD_R5,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,I2C4_SDA,,,,,,,,FMC_D20,DCMI_D3,LCD_R6,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,UART4_TX,CAN1_TX,,,FMC_D21,,LCD_G2,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,UART4_RX,CAN1_RX,,,FMC_D22,DCMI_D4,LCD_G3,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,DCMI_D11,LCD_G4,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,FMC_D24,DCMI_D13,LCD_G5,EVENTOUT, -PortI,PI1,,,,TIM8_BKIN2,,SPI2_SCK/I2S2_CK,,,,,,,FMC_D25,DCMI_D8,LCD_G6,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,,,,,,,FMC_D26,DCMI_D9,LCD_G7,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SD,,,,,,,FMC_D27,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,SAI2_MCK_A,,FMC_NBL2,DCMI_D5,LCD_B4,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,SAI2_SCK_A,,FMC_NBL3,DCMI_VSYNC,LCD_B5,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,SAI2_SD_A,,FMC_D28,DCMI_D6,LCD_B6,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,SAI2_FS_A,,FMC_D29,DCMI_D7,LCD_B7,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,UART4_RX,CAN1_RX,,,FMC_D30,,LCD_VSYNC,EVENTOUT, -PortI,PI10,,,,,,,,,,,,ETH_MII_RX_ER,FMC_D31,,LCD_HSYNC,EVENTOUT, -PortI,PI11,,,,,,,,,,LCD_G6,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,,,,LCD_HSYNC,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,LCD_VSYNC,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,LCD_CLK,EVENTOUT, -PortI,PI15,,,,,,,,,,LCD_G2,,,,,LCD_R0,EVENTOUT, -PortJ,PJ0,,,,,,,,,,LCD_R7,,,,,LCD_R1,EVENTOUT, -PortJ,PJ1,,,,,,,,,,,,,,,LCD_R2,EVENTOUT, -PortJ,PJ2,,,,,,,,,,,,,,DSI_TE,LCD_R3,EVENTOUT, -PortJ,PJ3,,,,,,,,,,,,,,,LCD_R4,EVENTOUT, -PortJ,PJ4,,,,,,,,,,,,,,,LCD_R5,EVENTOUT, -PortJ,PJ5,,,,,,,,,,,,,,,LCD_R6,EVENTOUT, -PortJ,PJ6,,,,,,,,,,,,,,,LCD_R7,EVENTOUT, -PortJ,PJ7,,,,,,,,,,,,,,,LCD_G0,EVENTOUT, -PortJ,PJ8,,,,,,,,,,,,,,,LCD_G1,EVENTOUT, -PortJ,PJ9,,,,,,,,,,,,,,,LCD_G2,EVENTOUT, -PortJ,PJ10,,,,,,,,,,,,,,,LCD_G3,EVENTOUT, -PortJ,PJ11,,,,,,,,,,,,,,,LCD_G4,EVENTOUT, -PortJ,PJ12,,,,,,,,,,LCD_G3,,,,,LCD_B0,EVENTOUT, -PortJ,PJ13,,,,,,,,,,LCD_G4,,,,,LCD_B1,EVENTOUT, -PortJ,PJ14,,,,,,,,,,,,,,,LCD_B2,EVENTOUT, -PortJ,PJ15,,,,,,,,,,,,,,,LCD_B3,EVENTOUT, -PortK,PK0,,,,,,,,,,,,,,,LCD_G5,EVENTOUT, -PortK,PK1,,,,,,,,,,,,,,,LCD_G6,EVENTOUT, -PortK,PK2,,,,,,,,,,,,,,,LCD_G7,EVENTOUT, -PortK,PK3,,,,,,,,,,,,,,,LCD_B4,EVENTOUT, -PortK,PK4,,,,,,,,,,,,,,,LCD_B5,EVENTOUT, -PortK,PK5,,,,,,,,,,,,,,,LCD_B6,EVENTOUT, -PortK,PK6,,,,,,,,,,,,,,,LCD_B7,EVENTOUT, -PortK,PK7,,,,,,,,,,,,,,,LCD_DE,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,I2C4/UART5/TIM1/2,TIM3/4/5,TIM8/9/10/11/LPTIM1/DFSDM1/CEC,I2C1/2/3/4/USART1/CEC,SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/6,SPI2/I2S2/SPI3/I2S3/SAI1/I2C4/UART4/DFSDM1,SPI2/I2S2/SPI3/I2S3/SPI6/USART1/2/3/UART5/DFSDM1/SPDIF,SPI6/SAI2/USART6/UART4/5/7/8/OTG_FS/SPDIF,CAN1/2/TIM12/13/14/QUADSPI/FMC/LCD,SAI2/QUADSPI/SDMMC2/DFSDM1/OTG2_HS/OTG1_FS/LCD,I2C4/CAN3/SDMMC2/ETH ,UART7/FMC/SDMMC1/MDIOS/OTG2_FS,DCMI/LCD/DSI,LCD ,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , ,SAI2_SD_B ,ETH_MII_CRS , , , ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2, , , , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 ,SAI2_MCK_B ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK, , ,LCD_R2 ,EVENTOUT,ADC123_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3,TIM9_CH1 , , , ,USART2_TX ,SAI2_SCK_B , , ,ETH_MDIO ,MDIOS_MDIO , ,LCD_R1 ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4,TIM9_CH2 , , , ,USART2_RX , ,LCD_B2 ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LCD_B5 ,EVENTOUT,ADC123_IN3 +PortA,PA4 , , , , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK ,SPI6_NSS , , , ,OTG_HS_SOF ,DCMI_HSYNC ,LCD_VSYNC,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR, ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , ,SPI6_SCK , ,OTG_HS_ULPI_CK , , , ,LCD_R4 ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1,TIM8_BKIN , ,SPI1_MISO , , ,SPI6_MISO ,TIM13_CH1 , , ,MDIOS_MDC ,DCMI_PIXCLK ,LCD_G2 ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2,TIM8_CH1N , ,SPI1_MOSI/I2S1_SD , , ,SPI6_MOSI ,TIM14_CH1 , ,ETH_MII_RX_DV/ETH_RMII_CRS_DV ,FMC_SDNWE , , ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO1 ,TIM1_CH1 , ,TIM8_BKIN2 ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF ,CAN3_RX ,UART7_RX ,LCD_B3 ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , , , , , ,DCMI_D0 ,LCD_R5 ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , ,LCD_B4 ,OTG_FS_ID , ,MDIOS_MDIO ,DCMI_D1 ,LCD_B1 ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , , , ,SPI2_NSS/I2S2_WS ,UART4_RX ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , ,SPI2_SCK/I2S2_CK ,UART4_TX ,USART1_RTS ,SAI2_FS_B ,CAN1_TX ,OTG_FS_DP , , , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR, , ,HDMI_CEC ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,SPI6_NSS ,UART4_RTS , , ,CAN3_TX ,UART7_TX , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3,TIM8_CH2N , , ,DFSDM1_CKOUT , ,UART4_CTS ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , ,LCD_G1 ,EVENTOUT,ADC12_IN8 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4,TIM8_CH3N , , ,DFSDM1_DATAIN1 , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , ,LCD_G0 ,EVENTOUT,ADC12_IN9 +PortB,PB2 , , , , , , ,SAI1_SD_A ,SPI3_MOSI/I2S3_SD , ,QUADSPI_CLK ,DFSDM1_CKIN1 , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK , ,SPI6_SCK , ,SDMMC2_D2 ,CAN3_RX ,UART7_RX , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1, , ,SPI1_MISO ,SPI3_MISO ,SPI2_NSS/I2S2_WS ,SPI6_MISO , ,SDMMC2_D3 ,CAN3_TX ,UART7_TX , , ,EVENTOUT, +PortB,PB5 , ,UART5_RX ,TIM3_CH2, ,I2C1_SMBA ,SPI1_MOSI/I2S1_SD ,SPI3_MOSI/I2S3_SD , ,SPI6_MOSI ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 ,LCD_G7 ,EVENTOUT, +PortB,PB6 , ,UART5_TX ,TIM4_CH1,HDMI_CEC ,I2C1_SCL , ,DFSDM1_DATAIN5 ,USART1_TX , ,CAN2_TX ,QUADSPI_BK1_NCS ,I2C4_SCL ,FMC_SDNE1 ,DCMI_D5 , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2, ,I2C1_SDA , ,DFSDM1_CKIN5 ,USART1_RX , , , ,I2C4_SDA ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , ,I2C4_SCL ,TIM4_CH3,TIM10_CH1 ,I2C1_SCL , ,DFSDM1_CKIN7 ,UART5_RX , ,CAN1_RX ,SDMMC2_D4 ,ETH_MII_TXD3 ,SDMMC1_D4 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , ,I2C4_SDA ,TIM4_CH4,TIM11_CH1 ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,DFSDM1_DATAIN7 ,UART5_TX , ,CAN1_TX ,SDMMC2_D5 ,I2C4_SMBA ,SDMMC1_D5 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,DFSDM1_DATAIN7 ,USART3_TX , ,QUADSPI_BK1_NCS ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , ,DFSDM1_CKIN7 ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DSI_TE ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,DFSDM1_DATAIN1 ,USART3_CK ,UART5_RX ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , , ,SPI2_SCK/I2S2_CK ,DFSDM1_CKIN1 ,USART3_CTS ,UART5_TX ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N ,USART1_TX ,SPI2_MISO ,DFSDM1_DATAIN2 ,USART3_RTS ,UART4_RTS ,TIM12_CH1 ,SDMMC2_D0 , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N ,USART1_RX ,SPI2_MOSI/I2S2_SD ,DFSDM1_CKIN2 , ,UART4_CTS ,TIM12_CH2 ,SDMMC2_D1 , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , ,DFSDM1_CKIN0 , , ,DFSDM1_DATAIN4 , ,SAI2_FS_B , ,OTG_HS_ULPI_STP , ,FMC_SDNWE , ,LCD_R5 ,EVENTOUT,ADC123_IN10 +PortC,PC1 ,TRACED0 , , ,DFSDM1_DATAIN0 , ,SPI2_MOSI/I2S2_SD ,SAI1_SD_A , , , ,DFSDM1_CKIN4 ,ETH_MDC ,MDIOS_MDC , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , , , ,DFSDM1_CKIN1 , ,SPI2_MISO ,DFSDM1_CKOUT , , , ,OTG_HS_ULPI_DIR ,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , , , ,DFSDM1_DATAIN1 , ,SPI2_MOSI/I2S2_SD , , , , ,OTG_HS_ULPI_NXT ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , ,DFSDM1_CKIN2 , ,I2S1_MCK , , ,SPDIFRX_IN2 , , ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , ,DFSDM1_DATAIN2 , , , , ,SPDIFRX_IN3 , , ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , ,TIM3_CH1,TIM8_CH1 , ,I2S2_MCK , ,DFSDM1_CKIN3 ,USART6_TX ,FMC_NWAIT ,SDMMC2_D6 , ,SDMMC1_D6 ,DCMI_D0 ,LCD_HSYNC,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2,TIM8_CH2 , , ,I2S3_MCK ,DFSDM1_DATAIN3 ,USART6_RX ,FMC_NE1 ,SDMMC2_D7 , ,SDMMC1_D7 ,DCMI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 ,TRACED1 , ,TIM3_CH3,TIM8_CH3 , , , ,UART5_RTS ,USART6_CK ,FMC_NE2/FMC_NCE , , ,SDMMC1_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , ,UART5_CTS , ,QUADSPI_BK1_IO0 ,LCD_G3 , ,SDMMC1_D1 ,DCMI_D3 ,LCD_B2 ,EVENTOUT, +PortC,PC10, , , ,DFSDM1_CKIN5 , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDMMC1_D2 ,DCMI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , , ,DFSDM1_DATAIN5 , , ,SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDMMC1_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , ,SPI3_MOSI/I2S3_SD ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,DFSDM1_CKIN6 , , ,DFSDM1_DATAIN7 , ,UART4_RX ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , ,DFSDM1_DATAIN6 , , ,DFSDM1_CKIN7 , ,UART4_TX ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR, , , , , ,UART5_RX , , , ,SDMMC1_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , ,DFSDM1_CKOUT , ,SPI2_SCK/I2S2_CK ,DFSDM1_DATAIN0 ,USART2_CTS , , , , ,FMC_CLK ,DCMI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , , , , , ,DFSDM1_CKIN0 ,USART2_RTS , , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , ,DFSDM1_CKIN4 , ,SPI3_MOSI/I2S3_SD ,SAI1_SD_A ,USART2_RX , , ,DFSDM1_DATAIN1 ,SDMMC2_CK ,FMC_NWAIT ,DCMI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , ,DFSDM1_DATAIN4 , ,SPI1_MOSI/I2S1_SD ,DFSDM1_CKIN1 ,USART2_CK ,SPDIFRX_IN0 , , ,SDMMC2_CMD ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , ,DFSDM1_CKIN3 , , , ,USART3_TX ,SPDIFRX_IN1 , , , ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , ,DFSDM1_DATAIN3 , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT, +PortD,PD10, , , ,DFSDM1_CKOUT , , , ,USART3_CK , , , , ,FMC_D15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , , ,I2C4_SMBA , , ,USART3_CTS , ,QUADSPI_BK1_IO0 ,SAI2_SD_A , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1,LPTIM1_IN1 ,I2C4_SCL , , ,USART3_RTS , ,QUADSPI_BK1_IO1 ,SAI2_FS_A , ,FMC_A17/FMC_ALE , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2,LPTIM1_OUT ,I2C4_SDA , , , , ,QUADSPI_BK1_IO3 ,SAI2_SCK_A , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3, , , , , ,UART8_CTS , , , ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4, , , , , ,UART8_RTS , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR,LPTIM1_ETR , , , , ,UART8_RX , ,SAI2_MCK_A , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , , , ,LPTIM1_IN2 , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , , , , ,SPI4_SCK ,SAI1_MCLK_A , , ,QUADSPI_BK1_IO2 , ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , , , ,SAI1_SD_B , , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , , , , ,SPI4_NSS ,SAI1_FS_A , , , ,DFSDM1_DATAIN3 , ,FMC_A20 ,DCMI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , ,SPI4_MISO ,SAI1_SCK_A , , , ,DFSDM1_CKIN3 , ,FMC_A21 ,DCMI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 ,TIM1_BKIN2 , ,TIM9_CH2 , ,SPI4_MOSI ,SAI1_SD_A , , , ,SAI2_MCK_B , ,FMC_A22 ,DCMI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,DFSDM1_DATAIN2 , ,UART7_RX , ,QUADSPI_BK2_IO0 , ,FMC_D4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,DFSDM1_CKIN2 , ,UART7_TX , ,QUADSPI_BK2_IO1 , ,FMC_D5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,DFSDM1_CKOUT , ,UART7_RTS , ,QUADSPI_BK2_IO2 , ,FMC_D6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , ,DFSDM1_DATAIN4 , ,UART7_CTS , ,QUADSPI_BK2_IO3 , ,FMC_D7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , ,SPI4_NSS ,DFSDM1_CKIN4 , , , ,SAI2_SD_B , ,FMC_D8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK ,DFSDM1_DATAIN5 , , , ,SAI2_SCK_B , ,FMC_D9 , ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO ,DFSDM1_CKIN5 , , , ,SAI2_FS_B , ,FMC_D10 , ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCK_B , ,FMC_D11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12 , ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN9 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN14 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN15 +PortF,PF6 , , , ,TIM10_CH1 , ,SPI5_NSS ,SAI1_SD_B , ,UART7_RX ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC3_IN4 +PortF,PF7 , , , ,TIM11_CH1 , ,SPI5_SCK ,SAI1_MCLK_B , ,UART7_TX ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT,ADC3_IN5 +PortF,PF8 , , , , , ,SPI5_MISO ,SAI1_SCK_B , ,UART7_RTS ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT,ADC3_IN6 +PortF,PF9 , , , , , ,SPI5_MOSI ,SAI1_FS_B , ,UART7_CTS ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT,ADC3_IN7 +PortF,PF10, , , , , , , , , ,QUADSPI_CLK , , , ,DCMI_D11 ,LCD_DE ,EVENTOUT,ADC3_IN8 +PortF,PF11, , , , , ,SPI5_MOSI , , , , ,SAI2_SD_B , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , ,I2C4_SMBA , ,DFSDM1_DATAIN6 , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , ,I2C4_SCL , ,DFSDM1_CKIN6 , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , ,I2C4_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , ,FMC_NE3 ,DCMI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , , , , , ,SAI1_MCLK_A , ,USART6_CK , , , ,FMC_INT ,DCMI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , , , ,SPI6_NSS , ,SPDIFRX_IN2 ,USART6_RTS , , ,ETH_PPS_OUT ,FMC_SDCLK , ,LCD_G7 ,EVENTOUT, +PortG,PG9 , , , , , ,SPI1_MISO , ,SPDIFRX_IN3 ,USART6_RX ,QUADSPI_BK2_IO2 ,SAI2_FS_B ,SDMMC2_D0 ,FMC_NE2/FMC_NCE ,DCMI_VSYNC , ,EVENTOUT, +PortG,PG10, , , , , ,SPI1_NSS/I2S1_WS , , , ,LCD_G3 ,SAI2_SD_B ,SDMMC2_D1 ,FMC_NE3 ,DCMI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, , , , , ,SPI1_SCK/I2S1_CK , ,SPDIFRX_IN0 , , ,SDMMC2_D2 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, , , ,LPTIM1_IN1 , ,SPI6_MISO , ,SPDIFRX_IN1 ,USART6_RTS ,LCD_B4 , ,SDMMC2_D3 ,FMC_NE4 , ,LCD_B1 ,EVENTOUT, +PortG,PG13,TRACED0 , , ,LPTIM1_OUT , ,SPI6_SCK , , ,USART6_CTS , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , ,LCD_R0 ,EVENTOUT, +PortG,PG14,TRACED1 , , ,LPTIM1_ETR , ,SPI6_MOSI , , ,USART6_TX ,QUADSPI_BK2_IO3 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , ,LCD_B0 ,EVENTOUT, +PortG,PG15, , , , , , , , ,USART6_CTS , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , ,LPTIM1_IN2 , , , , , ,QUADSPI_BK2_IO0 ,SAI2_SCK_B ,ETH_MII_CRS ,FMC_SDCKE0 , ,LCD_R0 ,EVENTOUT, +PortH,PH3 , , , , , , , , , ,QUADSPI_BK2_IO1 ,SAI2_MCK_B ,ETH_MII_COL ,FMC_SDNE0 , ,LCD_R1 ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , ,LCD_G5 ,OTG_HS_ULPI_NXT , , , ,LCD_G4 ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA ,SPI5_SCK , , , ,TIM12_CH1 , ,ETH_MII_RXD2 ,FMC_SDNE1 ,DCMI_D8 , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , ,EVENTOUT, +PortH,PH8 , , , , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LCD_R2 ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA , , , , ,TIM12_CH2 , , ,FMC_D17 ,DCMI_D0 ,LCD_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1, ,I2C4_SMBA , , , , , , , ,FMC_D18 ,DCMI_D1 ,LCD_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2, ,I2C4_SCL , , , , , , , ,FMC_D19 ,DCMI_D2 ,LCD_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3, ,I2C4_SDA , , , , , , , ,FMC_D20 ,DCMI_D3 ,LCD_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , ,UART4_TX ,CAN1_TX , , ,FMC_D21 , ,LCD_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , ,UART4_RX ,CAN1_RX , , ,FMC_D22 ,DCMI_D4 ,LCD_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11 ,LCD_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4, , ,SPI2_NSS/I2S2_WS , , , , , , ,FMC_D24 ,DCMI_D13 ,LCD_G5 ,EVENTOUT, +PortI,PI1 , , , ,TIM8_BKIN2 , ,SPI2_SCK/I2S2_CK , , , , , , ,FMC_D25 ,DCMI_D8 ,LCD_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO , , , , , , ,FMC_D26 ,DCMI_D9 ,LCD_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SD , , , , , , ,FMC_D27 ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,SAI2_MCK_A , ,FMC_NBL2 ,DCMI_D5 ,LCD_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , ,FMC_NBL3 ,DCMI_VSYNC ,LCD_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , ,FMC_D28 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , ,FMC_D29 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , ,UART4_RX ,CAN1_RX , , ,FMC_D30 , ,LCD_VSYNC,EVENTOUT, +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER ,FMC_D31 , ,LCD_HSYNC,EVENTOUT, +PortI,PI11, , , , , , , , , ,LCD_G6 ,OTG_HS_ULPI_DIR , , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , , , , ,LCD_HSYNC,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , ,LCD_VSYNC,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , ,LCD_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , ,LCD_G2 , , , , ,LCD_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , ,LCD_R7 , , , , ,LCD_R1 ,EVENTOUT, +PortJ,PJ1 , , , , , , , , , , , , , , ,LCD_R2 ,EVENTOUT, +PortJ,PJ2 , , , , , , , , , , , , , ,DSI_TE ,LCD_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , , , , ,LCD_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , , , , ,LCD_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LCD_R6 ,EVENTOUT, +PortJ,PJ6 , , , , , , , , , , , , , , ,LCD_R7 ,EVENTOUT, +PortJ,PJ7 , , , , , , , , , , , , , , ,LCD_G0 ,EVENTOUT, +PortJ,PJ8 , , , , , , , , , , , , , , ,LCD_G1 ,EVENTOUT, +PortJ,PJ9 , , , , , , , , , , , , , , ,LCD_G2 ,EVENTOUT, +PortJ,PJ10, , , , , , , , , , , , , , ,LCD_G3 ,EVENTOUT, +PortJ,PJ11, , , , , , , , , , , , , , ,LCD_G4 ,EVENTOUT, +PortJ,PJ12, , , , , , , , , ,LCD_G3 , , , , ,LCD_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , ,LCD_G4 , , , , ,LCD_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LCD_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LCD_B3 ,EVENTOUT, +PortK,PK0 , , , , , , , , , , , , , , ,LCD_G5 ,EVENTOUT, +PortK,PK1 , , , , , , , , , , , , , , ,LCD_G6 ,EVENTOUT, +PortK,PK2 , , , , , , , , , , , , , , ,LCD_G7 ,EVENTOUT, +PortK,PK3 , , , , , , , , , , , , , , ,LCD_B4 ,EVENTOUT, +PortK,PK4 , , , , , , , , , , , , , , ,LCD_B5 ,EVENTOUT, +PortK,PK5 , , , , , , , , , , , , , , ,LCD_B6 ,EVENTOUT, +PortK,PK6 , , , , , , , , , , , , , , ,LCD_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LCD_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32g0b1_af.csv b/ports/stm32/boards/stm32g0b1_af.csv index bea1c1e156337..609360fb229b7 100644 --- a/ports/stm32/boards/stm32g0b1_af.csv +++ b/ports/stm32/boards/stm32g0b1_af.csv @@ -1,96 +1,96 @@ -Port,Pin,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,ADC -PortA,PA0,SPI2_SCK/I2S2_CK,USART2_CTS,TIM2_CH1/TIM2_ETR,,USART4_TX,LPTIM1_OUT,UCPD2_FRSTX,COMP1_OUT,,,,,,,,,ADC1_IN0 -PortA,PA1,SPI1_SCK/I2S1_CK,USART2_RTS/USART2_DE/USART2_CK,TIM2_CH2,,USART4_RX,TIM15_CH1N,I2C1_SMBA,EVENTOUT,,,,,,,,,ADC1_IN1 -PortA,PA2,SPI1_MOSI/I2S1_SD,USART2_TX,TIM2_CH3,,UCPD1_FRSTX,TIM15_CH1,LPUART1_TX,COMP2_OUT,,,,,,,,,ADC1_IN2 -PortA,PA3,SPI2_MISO/I2S2_MCK,USART2_RX,TIM2_CH4,,UCPD2_FRSTX,TIM15_CH2,LPUART1_RX,EVENTOUT,,,,,,,,,ADC1_IN3 -PortA,PA4,SPI1_NSS/I2S1_WS,SPI2_MOSI/I2S2_SD,USB_NOE,USART6_TX,TIM14_CH1,LPTIM2_OUT,UCPD2_FRSTX,EVENTOUT,,SPI3_NSS,,,,,,,ADC1_IN4 -PortA,PA5,SPI1_SCK/I2S1_CK,CEC,TIM2_CH1/TIM2_ETR,USART6_RX,USART3_TX,LPTIM2_ETR,UCPD1_FRSTX,EVENTOUT,,,,,,,,,ADC1_IN5 -PortA,PA6,SPI1_MISO/I2S1_MCK,TIM3_CH1,TIM1_BKIN,USART6_CTS,USART3_CTS,TIM16_CH1,LPUART1_CTS,COMP1_OUT,I2C2_SDA,I2C3_SDA,,,,,,,ADC1_IN6 -PortA,PA7,SPI1_MOSI/I2S1_SD,TIM3_CH2,TIM1_CH1N,USART6_RTS/USART6_DE/USART6_CK,TIM14_CH1,TIM17_CH1,UCPD1_FRSTX,COMP2_OUT,I2C2_SCL,I2C3_SCL,,,,,,,ADC1_IN7 -PortA,PA8,MCO,SPI2_NSS/I2S2_WS,TIM1_CH1,,CRS1_SYNC,LPTIM2_OUT,,EVENTOUT,I2C2_SMBA,,,,,,,, -PortA,PA9,MCO,USART1_TX,TIM1_CH2,,SPI2_MISO/I2S2_MCK,TIM15_BKIN,I2C1_SCL,EVENTOUT,I2C2_SCL,,,,,,,, -PortA,PA10,SPI2_MOSI/I2S2_SD,USART1_RX,TIM1_CH3,MCO2,,TIM17_BKIN,I2C1_SDA,EVENTOUT,I2C2_SDA,,,,,,,, -PortA,PA11,SPI1_MISO/I2S1_MCK,USART1_CTS,TIM1_CH4,FDCAN1_RX,,TIM1_BKIN2,I2C2_SCL,COMP1_OUT,,,,,,,,, -PortA,PA12,SPI1_MOSI/I2S1_SD,USART1_RTS/USART1_DE/USART1_CK,TIM1_ETR,FDCAN1_TX,,I2S_CKIN,I2C2_SDA,COMP2_OUT,,,,,,,,, -PortA,PA13,SWDIO,IR_OUT,USB_NOE,,,,,EVENTOUT,,,LPUART2_RX,,,,,, -PortA,PA14,SWCLK,USART2_TX,,,,,,EVENTOUT,,,LPUART2_TX,,,,,, -PortA,PA15,SPI1_NSS/I2S1_WS,USART2_RX,TIM2_CH1/TIM2_ETR,MCO2,USART4_RTS/USART4_DE/USART4_CK,USART3_RTS/USART3_DE/USART3_CK,USB_NOE,EVENTOUT,I2C2_SMBA,SPI3_NSS,,,,,,, -PortB,PB0,SPI1_NSS/I2S1_WS,TIM3_CH3,TIM1_CH2N,FDCAN2_RX,USART3_RX,LPTIM1_OUT,UCPD1_FRSTX,COMP1_OUT,USART5_TX,,LPUART2_CTS,,,,,,ADC1_IN8 -PortB,PB1,TIM14_CH1,TIM3_CH4,TIM1_CH3N,FDCAN2_TX,USART3_RTS/USART3_DE/USART3_CK,LPTIM2_IN1,LPUART1_RTS/LPUART1_DE,COMP3_OUT,USART5_RX,,LPUART2_RTS/LPUART2_DE,,,,,,ADC1_IN9 -PortB,PB2,,SPI2_MISO/I2S2_MCK,,MCO2,USART3_TX,LPTIM1_OUT,,EVENTOUT,,,,,,,,,ADC1_IN10 -PortB,PB3,SPI1_SCK/I2S1_CK,TIM1_CH2,TIM2_CH2,USART5_TX,USART1_RTS/USART1_DE/USART1_CK,,I2C3_SCL,EVENTOUT,I2C2_SCL,SPI3_SCK,,,,,,, -PortB,PB4,SPI1_MISO/I2S1_MCK,TIM3_CH1,,USART5_RX,USART1_CTS,TIM17_BKIN,I2C3_SDA,EVENTOUT,I2C2_SDA,SPI3_MISO,,,,,,, -PortB,PB5,SPI1_MOSI/I2S1_SD,TIM3_CH2,TIM16_BKIN,FDCAN2_RX,,LPTIM1_IN1,I2C1_SMBA,COMP2_OUT,USART5_RTS/USART5_DE/USART5_CK,SPI3_MOSI,,,,,,, -PortB,PB6,USART1_TX,TIM1_CH3,TIM16_CH1N,FDCAN2_TX,SPI2_MISO/I2S2_MCK,LPTIM1_ETR,I2C1_SCL,EVENTOUT,USART5_CTS,TIM4_CH1,LPUART2_TX,,,,,, -PortB,PB7,USART1_RX,SPI2_MOSI/I2S2_SD,TIM17_CH1N,,USART4_CTS,LPTIM1_IN2,I2C1_SDA,EVENTOUT,,TIM4_CH2,LPUART2_RX,,,,,, -PortB,PB8,CEC,SPI2_SCK/I2S2_CK,TIM16_CH1,FDCAN1_RX,USART3_TX,TIM15_BKIN,I2C1_SCL,EVENTOUT,USART6_TX,TIM4_CH3,,,,,,, -PortB,PB9,IR_OUT,UCPD2_FRSTX,TIM17_CH1,FDCAN1_TX,USART3_RX,SPI2_NSS/I2S2_WS,I2C1_SDA,EVENTOUT,USART6_RX,TIM4_CH4,,,,,,, -PortB,PB10,CEC,LPUART1_RX,TIM2_CH3,,USART3_TX,SPI2_SCK/I2S2_CK,I2C2_SCL,COMP1_OUT,,,,,,,,,ADC1_IN11 -PortB,PB11,SPI2_MOSI/I2S2_SD,LPUART1_TX,TIM2_CH4,,USART3_RX,,I2C2_SDA,COMP2_OUT,,,,,,,,, -PortB,PB12,SPI2_NSS/I2S2_WS,LPUART1_RTS/LPUART1_DE,TIM1_BKIN,FDCAN2_RX,,TIM15_BKIN,UCPD2_FRSTX,EVENTOUT,I2C2_SMBA,,,,,,,, -PortB,PB13,SPI2_SCK/I2S2_CK,LPUART1_CTS,TIM1_CH1N,FDCAN2_TX,USART3_CTS,TIM15_CH1N,I2C2_SCL,EVENTOUT,,,,,,,,, -PortB,PB14,SPI2_MISO/I2S2_MCK,UCPD1_FRSTX,TIM1_CH2N,,USART3_RTS/USART3_DE/USART3_CK,TIM15_CH1,I2C2_SDA,EVENTOUT,USART6_RTS/USART6_DE/USART6_CK,,,,,,,, -PortB,PB15,SPI2_MOSI/I2S2_SD,,TIM1_CH3N,,TIM15_CH1N,TIM15_CH2,,EVENTOUT,USART6_CTS,,,,,,,, -PortC,PC0,LPTIM1_IN1,LPUART1_RX,LPTIM2_IN1,LPUART2_TX,USART6_TX,,I2C3_SCL,COMP3_OUT,,,,,,,,, -PortC,PC1,LPTIM1_OUT,LPUART1_TX,TIM15_CH1,LPUART2_RX,USART6_RX,,I2C3_SDA,,,,,,,,,, -PortC,PC2,LPTIM1_IN2,SPI2_MISO/I2S2_MCK,TIM15_CH2,FDCAN2_RX,,,,COMP3_OUT,,,,,,,,, -PortC,PC3,LPTIM1_ETR,SPI2_MOSI/I2S2_SD,LPTIM2_ETR,FDCAN2_TX,,,,,,,,,,,,, -PortC,PC4,USART3_TX,USART1_TX,TIM2_CH1/TIM2_ETR,FDCAN1_RX,,,,,,,,,,,,, -PortC,PC5,USART3_RX,USART1_RX,TIM2_CH2,FDCAN1_TX,,,,,,,,,,,,,ADC1_IN18 -PortC,PC6,UCPD1_FRSTX,TIM3_CH1,TIM2_CH3,LPUART2_TX,,,,,,,,,,,,, -PortC,PC7,UCPD2_FRSTX,TIM3_CH2,TIM2_CH4,LPUART2_RX,,,,,,,,,,,,, -PortC,PC8,UCPD2_FRSTX,TIM3_CH3,TIM1_CH1,LPUART2_CTS,,,,,,,,,,,,, -PortC,PC9,I2S_CKIN,TIM3_CH4,TIM1_CH2,LPUART2_RTS/LPUART2_DE,,,USB_NOE,,,,,,,,,, -PortC,PC10,USART3_TX,USART4_TX,TIM1_CH3,,SPI3_SCK,,,,,,,,,,,, -PortC,PC11,USART3_RX,USART4_RX,TIM1_CH4,,SPI3_MISO,,,,,,,,,,,, -PortC,PC12,LPTIM1_IN1,UCPD1_FRSTX,TIM14_CH1,USART5_TX,SPI3_MOSI,,,,,,,,,,,, -PortC,PC13,,,TIM1_BKIN,,,,,,,,,,,,,, -PortC,PC14,,,TIM1_BKIN2,,,,,,,,,,,,,, -PortC,PC15,OSC32_EN,OSC_EN,TIM15_BKIN,,,,,,,,,,,,,, -PortD,PD0,EVENTOUT,SPI2_NSS/I2S2_WS,TIM16_CH1,FDCAN1_RX,,,,,,,,,,,,, -PortD,PD1,EVENTOUT,SPI2_SCK/I2S2_CK,TIM17_CH1,FDCAN1_TX,,,,,,,,,,,,, -PortD,PD2,USART3_RTS/USART3_DE/USART3_CK,TIM3_ETR,TIM1_CH1N,USART5_RX,,,,,,,,,,,,, -PortD,PD3,USART2_CTS,SPI2_MISO/I2S2_MCK,TIM1_CH2N,USART5_TX,,,,,,,,,,,,, -PortD,PD4,USART2_RTS/USART2_DE/USART2_CK,SPI2_MOSI/I2S2_SD,TIM1_CH3N,USART5_RTS/USART5_DE/USART5_CK,,,,,,,,,,,,, -PortD,PD5,USART2_TX,SPI1_MISO/I2S1_MCK,TIM1_BKIN,USART5_CTS,,,,,,,,,,,,, -PortD,PD6,USART2_RX,SPI1_MOSI/I2S1_SD,LPTIM2_OUT,,,,,,,,,,,,,, -PortD,PD7,,,,MCO2,,,,,,,,,,,,, -PortD,PD8,USART3_TX,SPI1_SCK/I2S1_CK,LPTIM1_OUT,,,,,,,,,,,,,, -PortD,PD9,USART3_RX,SPI1_NSS/I2S1_WS,TIM1_BKIN2,,,,,,,,,,,,,, -PortD,PD10,MCO,,,,,,,,,,,,,,,, -PortD,PD11,USART3_CTS,LPTIM2_ETR,,,,,,,,,,,,,,, -PortD,PD12,USART3_RTS/USART3_DE/USART3_CK,LPTIM2_IN1,TIM4_CH1,FDCAN1_RX,,,,,,,,,,,,, -PortD,PD13,,LPTIM2_OUT,TIM4_CH2,FDCAN1_TX,,,,,,,,,,,,, -PortD,PD14,,LPUART2_CTS,TIM4_CH3,FDCAN2_RX,,,,,,,,,,,,, -PortD,PD15,CRS1_SYNC,LPUART2_RTS/LPUART2_DE,TIM4_CH4,FDCAN2_TX,,,,,,,,,,,,, -PortE,PE0,TIM16_CH1,EVENTOUT,TIM4_ETR,,,,,,,,,,,,,, -PortE,PE1,TIM17_CH1,EVENTOUT,,,,,,,,,,,,,,, -PortE,PE2,,TIM3_ETR,,,,,,,,,,,,,,, -PortE,PE3,,TIM3_CH1,,,,,,,,,,,,,,, -PortE,PE4,,TIM3_CH2,,,,,,,,,,,,,,, -PortE,PE5,,TIM3_CH3,,,,,,,,,,,,,,, -PortE,PE6,,TIM3_CH4,,,,,,,,,,,,,,, -PortE,PE7,,TIM1_ETR,,USART5_RTS/USART5_DE/USART5_CK,,,,,,,,,,,,, -PortE,PE8,USART4_TX,TIM1_CH1N,,,,,,,,,,,,,,, -PortE,PE9,USART4_RX,TIM1_CH1,,,,,,,,,,,,,,, -PortE,PE10,,TIM1_CH2N,,USART5_TX,,,,,,,,,,,,, -PortE,PE11,,TIM1_CH2,,USART5_RX,,,,,,,,,,,,, -PortE,PE12,SPI1_NSS/I2S1_WS,TIM1_CH3N,,,,,,,,,,,,,,, -PortE,PE13,SPI1_SCK/I2S1_CK,TIM1_CH3,,,,,,,,,,,,,,, -PortE,PE14,SPI1_MISO/I2S1_MCK,TIM1_CH4,TIM1_BK2,,,,,,,,,,,,,, -PortE,PE15,SPI1_MOSI/I2S1_SD,TIM1_BK,,,,,,,,,,,,,,, -PortF,PF0,CRS1_SYNC,EVENTOUT,TIM14_CH1,,,,,,,,,,,,,, -PortF,PF1,OSC_EN,EVENTOUT,TIM15_CH1N,,,,,,,,,,,,,, -PortF,PF2,MCO,LPUART2_TX,,LPUART2_RTS/LPUART2_DE,,,,,,,,,,,,, -PortF,PF3,,LPUART2_RX,,USART6_RTS/USART6_DE/USART6_CK,,,,,,,,,,,,, -PortF,PF4,,LPUART1_TX,,,,,,,,,,,,,,, -PortF,PF5,,LPUART1_RX,,,,,,,,,,,,,,, -PortF,PF6,,LPUART1_RTS/LPUART1_DE,,,,,,,,,,,,,,, -PortF,PF7,,LPUART1_CTS,,USART5_CTS,,,,,,,,,,,,, -PortF,PF8,,,,,,,,,,,,,,,,, -PortF,PF9,,,,USART6_TX,,,,,,,,,,,,, -PortF,PF10,,,,USART6_RX,,,,,,,,,,,,, -PortF,PF11,,,,USART6_RTS/USART6_DE/USART6_CK,,,,,,,,,,,,, -PortF,PF12,TIM15_CH1,,,USART6_CTS,,,,,,,,,,,,, -PortF,PF13,TIM15_CH2,,,,,,,,,,,,,,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12,AF13,AF14,AF15,ADC + , ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12,AF13,AF14,AF15,ADC +PortA,PA0 ,SPI2_SCK/I2S2_CK ,USART2_CTS ,TIM2_CH1/TIM2_ETR, ,USART4_TX ,LPTIM1_OUT ,UCPD2_FRSTX ,COMP1_OUT, , , , , , , , ,ADC1_IN0 +PortA,PA1 ,SPI1_SCK/I2S1_CK ,USART2_RTS/USART2_DE/USART2_CK,TIM2_CH2 , ,USART4_RX ,TIM15_CH1N ,I2C1_SMBA ,EVENTOUT , , , , , , , , ,ADC1_IN1 +PortA,PA2 ,SPI1_MOSI/I2S1_SD ,USART2_TX ,TIM2_CH3 , ,UCPD1_FRSTX ,TIM15_CH1 ,LPUART1_TX ,COMP2_OUT, , , , , , , , ,ADC1_IN2 +PortA,PA3 ,SPI2_MISO/I2S2_MCK ,USART2_RX ,TIM2_CH4 , ,UCPD2_FRSTX ,TIM15_CH2 ,LPUART1_RX ,EVENTOUT , , , , , , , , ,ADC1_IN3 +PortA,PA4 ,SPI1_NSS/I2S1_WS ,SPI2_MOSI/I2S2_SD ,USB_NOE ,USART6_TX ,TIM14_CH1 ,LPTIM2_OUT ,UCPD2_FRSTX ,EVENTOUT , ,SPI3_NSS , , , , , , ,ADC1_IN4 +PortA,PA5 ,SPI1_SCK/I2S1_CK ,CEC ,TIM2_CH1/TIM2_ETR,USART6_RX ,USART3_TX ,LPTIM2_ETR ,UCPD1_FRSTX ,EVENTOUT , , , , , , , , ,ADC1_IN5 +PortA,PA6 ,SPI1_MISO/I2S1_MCK ,TIM3_CH1 ,TIM1_BKIN ,USART6_CTS ,USART3_CTS ,TIM16_CH1 ,LPUART1_CTS ,COMP1_OUT,I2C2_SDA ,I2C3_SDA , , , , , , ,ADC1_IN6 +PortA,PA7 ,SPI1_MOSI/I2S1_SD ,TIM3_CH2 ,TIM1_CH1N ,USART6_RTS/USART6_DE/USART6_CK,TIM14_CH1 ,TIM17_CH1 ,UCPD1_FRSTX ,COMP2_OUT,I2C2_SCL ,I2C3_SCL , , , , , , ,ADC1_IN7 +PortA,PA8 ,MCO ,SPI2_NSS/I2S2_WS ,TIM1_CH1 , ,CRS1_SYNC ,LPTIM2_OUT , ,EVENTOUT ,I2C2_SMBA , , , , , , , , +PortA,PA9 ,MCO ,USART1_TX ,TIM1_CH2 , ,SPI2_MISO/I2S2_MCK ,TIM15_BKIN ,I2C1_SCL ,EVENTOUT ,I2C2_SCL , , , , , , , , +PortA,PA10,SPI2_MOSI/I2S2_SD ,USART1_RX ,TIM1_CH3 ,MCO2 , ,TIM17_BKIN ,I2C1_SDA ,EVENTOUT ,I2C2_SDA , , , , , , , , +PortA,PA11,SPI1_MISO/I2S1_MCK ,USART1_CTS ,TIM1_CH4 ,FDCAN1_RX , ,TIM1_BKIN2 ,I2C2_SCL ,COMP1_OUT, , , , , , , , , +PortA,PA12,SPI1_MOSI/I2S1_SD ,USART1_RTS/USART1_DE/USART1_CK,TIM1_ETR ,FDCAN1_TX , ,I2S_CKIN ,I2C2_SDA ,COMP2_OUT, , , , , , , , , +PortA,PA13,SWDIO ,IR_OUT ,USB_NOE , , , , ,EVENTOUT , , ,LPUART2_RX , , , , , , +PortA,PA14,SWCLK ,USART2_TX , , , , , ,EVENTOUT , , ,LPUART2_TX , , , , , , +PortA,PA15,SPI1_NSS/I2S1_WS ,USART2_RX ,TIM2_CH1/TIM2_ETR,MCO2 ,USART4_RTS/USART4_DE/USART4_CK,USART3_RTS/USART3_DE/USART3_CK,USB_NOE ,EVENTOUT ,I2C2_SMBA ,SPI3_NSS , , , , , , , +PortB,PB0 ,SPI1_NSS/I2S1_WS ,TIM3_CH3 ,TIM1_CH2N ,FDCAN2_RX ,USART3_RX ,LPTIM1_OUT ,UCPD1_FRSTX ,COMP1_OUT,USART5_TX , ,LPUART2_CTS , , , , , ,ADC1_IN8 +PortB,PB1 ,TIM14_CH1 ,TIM3_CH4 ,TIM1_CH3N ,FDCAN2_TX ,USART3_RTS/USART3_DE/USART3_CK,LPTIM2_IN1 ,LPUART1_RTS/LPUART1_DE,COMP3_OUT,USART5_RX , ,LPUART2_RTS/LPUART2_DE, , , , , ,ADC1_IN9 +PortB,PB2 , ,SPI2_MISO/I2S2_MCK , ,MCO2 ,USART3_TX ,LPTIM1_OUT , ,EVENTOUT , , , , , , , , ,ADC1_IN10 +PortB,PB3 ,SPI1_SCK/I2S1_CK ,TIM1_CH2 ,TIM2_CH2 ,USART5_TX ,USART1_RTS/USART1_DE/USART1_CK, ,I2C3_SCL ,EVENTOUT ,I2C2_SCL ,SPI3_SCK , , , , , , , +PortB,PB4 ,SPI1_MISO/I2S1_MCK ,TIM3_CH1 , ,USART5_RX ,USART1_CTS ,TIM17_BKIN ,I2C3_SDA ,EVENTOUT ,I2C2_SDA ,SPI3_MISO, , , , , , , +PortB,PB5 ,SPI1_MOSI/I2S1_SD ,TIM3_CH2 ,TIM16_BKIN ,FDCAN2_RX , ,LPTIM1_IN1 ,I2C1_SMBA ,COMP2_OUT,USART5_RTS/USART5_DE/USART5_CK,SPI3_MOSI, , , , , , , +PortB,PB6 ,USART1_TX ,TIM1_CH3 ,TIM16_CH1N ,FDCAN2_TX ,SPI2_MISO/I2S2_MCK ,LPTIM1_ETR ,I2C1_SCL ,EVENTOUT ,USART5_CTS ,TIM4_CH1 ,LPUART2_TX , , , , , , +PortB,PB7 ,USART1_RX ,SPI2_MOSI/I2S2_SD ,TIM17_CH1N , ,USART4_CTS ,LPTIM1_IN2 ,I2C1_SDA ,EVENTOUT , ,TIM4_CH2 ,LPUART2_RX , , , , , , +PortB,PB8 ,CEC ,SPI2_SCK/I2S2_CK ,TIM16_CH1 ,FDCAN1_RX ,USART3_TX ,TIM15_BKIN ,I2C1_SCL ,EVENTOUT ,USART6_TX ,TIM4_CH3 , , , , , , , +PortB,PB9 ,IR_OUT ,UCPD2_FRSTX ,TIM17_CH1 ,FDCAN1_TX ,USART3_RX ,SPI2_NSS/I2S2_WS ,I2C1_SDA ,EVENTOUT ,USART6_RX ,TIM4_CH4 , , , , , , , +PortB,PB10,CEC ,LPUART1_RX ,TIM2_CH3 , ,USART3_TX ,SPI2_SCK/I2S2_CK ,I2C2_SCL ,COMP1_OUT, , , , , , , , ,ADC1_IN11 +PortB,PB11,SPI2_MOSI/I2S2_SD ,LPUART1_TX ,TIM2_CH4 , ,USART3_RX , ,I2C2_SDA ,COMP2_OUT, , , , , , , , , +PortB,PB12,SPI2_NSS/I2S2_WS ,LPUART1_RTS/LPUART1_DE ,TIM1_BKIN ,FDCAN2_RX , ,TIM15_BKIN ,UCPD2_FRSTX ,EVENTOUT ,I2C2_SMBA , , , , , , , , +PortB,PB13,SPI2_SCK/I2S2_CK ,LPUART1_CTS ,TIM1_CH1N ,FDCAN2_TX ,USART3_CTS ,TIM15_CH1N ,I2C2_SCL ,EVENTOUT , , , , , , , , , +PortB,PB14,SPI2_MISO/I2S2_MCK ,UCPD1_FRSTX ,TIM1_CH2N , ,USART3_RTS/USART3_DE/USART3_CK,TIM15_CH1 ,I2C2_SDA ,EVENTOUT ,USART6_RTS/USART6_DE/USART6_CK, , , , , , , , +PortB,PB15,SPI2_MOSI/I2S2_SD , ,TIM1_CH3N , ,TIM15_CH1N ,TIM15_CH2 , ,EVENTOUT ,USART6_CTS , , , , , , , , +PortC,PC0 ,LPTIM1_IN1 ,LPUART1_RX ,LPTIM2_IN1 ,LPUART2_TX ,USART6_TX , ,I2C3_SCL ,COMP3_OUT, , , , , , , , , +PortC,PC1 ,LPTIM1_OUT ,LPUART1_TX ,TIM15_CH1 ,LPUART2_RX ,USART6_RX , ,I2C3_SDA , , , , , , , , , , +PortC,PC2 ,LPTIM1_IN2 ,SPI2_MISO/I2S2_MCK ,TIM15_CH2 ,FDCAN2_RX , , , ,COMP3_OUT, , , , , , , , , +PortC,PC3 ,LPTIM1_ETR ,SPI2_MOSI/I2S2_SD ,LPTIM2_ETR ,FDCAN2_TX , , , , , , , , , , , , , +PortC,PC4 ,USART3_TX ,USART1_TX ,TIM2_CH1/TIM2_ETR,FDCAN1_RX , , , , , , , , , , , , , +PortC,PC5 ,USART3_RX ,USART1_RX ,TIM2_CH2 ,FDCAN1_TX , , , , , , , , , , , , ,ADC1_IN18 +PortC,PC6 ,UCPD1_FRSTX ,TIM3_CH1 ,TIM2_CH3 ,LPUART2_TX , , , , , , , , , , , , , +PortC,PC7 ,UCPD2_FRSTX ,TIM3_CH2 ,TIM2_CH4 ,LPUART2_RX , , , , , , , , , , , , , +PortC,PC8 ,UCPD2_FRSTX ,TIM3_CH3 ,TIM1_CH1 ,LPUART2_CTS , , , , , , , , , , , , , +PortC,PC9 ,I2S_CKIN ,TIM3_CH4 ,TIM1_CH2 ,LPUART2_RTS/LPUART2_DE , , ,USB_NOE , , , , , , , , , , +PortC,PC10,USART3_TX ,USART4_TX ,TIM1_CH3 , ,SPI3_SCK , , , , , , , , , , , , +PortC,PC11,USART3_RX ,USART4_RX ,TIM1_CH4 , ,SPI3_MISO , , , , , , , , , , , , +PortC,PC12,LPTIM1_IN1 ,UCPD1_FRSTX ,TIM14_CH1 ,USART5_TX ,SPI3_MOSI , , , , , , , , , , , , +PortC,PC13, , ,TIM1_BKIN , , , , , , , , , , , , , , +PortC,PC14, , ,TIM1_BKIN2 , , , , , , , , , , , , , , +PortC,PC15,OSC32_EN ,OSC_EN ,TIM15_BKIN , , , , , , , , , , , , , , +PortD,PD0 ,EVENTOUT ,SPI2_NSS/I2S2_WS ,TIM16_CH1 ,FDCAN1_RX , , , , , , , , , , , , , +PortD,PD1 ,EVENTOUT ,SPI2_SCK/I2S2_CK ,TIM17_CH1 ,FDCAN1_TX , , , , , , , , , , , , , +PortD,PD2 ,USART3_RTS/USART3_DE/USART3_CK,TIM3_ETR ,TIM1_CH1N ,USART5_RX , , , , , , , , , , , , , +PortD,PD3 ,USART2_CTS ,SPI2_MISO/I2S2_MCK ,TIM1_CH2N ,USART5_TX , , , , , , , , , , , , , +PortD,PD4 ,USART2_RTS/USART2_DE/USART2_CK,SPI2_MOSI/I2S2_SD ,TIM1_CH3N ,USART5_RTS/USART5_DE/USART5_CK, , , , , , , , , , , , , +PortD,PD5 ,USART2_TX ,SPI1_MISO/I2S1_MCK ,TIM1_BKIN ,USART5_CTS , , , , , , , , , , , , , +PortD,PD6 ,USART2_RX ,SPI1_MOSI/I2S1_SD ,LPTIM2_OUT , , , , , , , , , , , , , , +PortD,PD7 , , , ,MCO2 , , , , , , , , , , , , , +PortD,PD8 ,USART3_TX ,SPI1_SCK/I2S1_CK ,LPTIM1_OUT , , , , , , , , , , , , , , +PortD,PD9 ,USART3_RX ,SPI1_NSS/I2S1_WS ,TIM1_BKIN2 , , , , , , , , , , , , , , +PortD,PD10,MCO , , , , , , , , , , , , , , , , +PortD,PD11,USART3_CTS ,LPTIM2_ETR , , , , , , , , , , , , , , , +PortD,PD12,USART3_RTS/USART3_DE/USART3_CK,LPTIM2_IN1 ,TIM4_CH1 ,FDCAN1_RX , , , , , , , , , , , , , +PortD,PD13, ,LPTIM2_OUT ,TIM4_CH2 ,FDCAN1_TX , , , , , , , , , , , , , +PortD,PD14, ,LPUART2_CTS ,TIM4_CH3 ,FDCAN2_RX , , , , , , , , , , , , , +PortD,PD15,CRS1_SYNC ,LPUART2_RTS/LPUART2_DE ,TIM4_CH4 ,FDCAN2_TX , , , , , , , , , , , , , +PortE,PE0 ,TIM16_CH1 ,EVENTOUT ,TIM4_ETR , , , , , , , , , , , , , , +PortE,PE1 ,TIM17_CH1 ,EVENTOUT , , , , , , , , , , , , , , , +PortE,PE2 , ,TIM3_ETR , , , , , , , , , , , , , , , +PortE,PE3 , ,TIM3_CH1 , , , , , , , , , , , , , , , +PortE,PE4 , ,TIM3_CH2 , , , , , , , , , , , , , , , +PortE,PE5 , ,TIM3_CH3 , , , , , , , , , , , , , , , +PortE,PE6 , ,TIM3_CH4 , , , , , , , , , , , , , , , +PortE,PE7 , ,TIM1_ETR , ,USART5_RTS/USART5_DE/USART5_CK, , , , , , , , , , , , , +PortE,PE8 ,USART4_TX ,TIM1_CH1N , , , , , , , , , , , , , , , +PortE,PE9 ,USART4_RX ,TIM1_CH1 , , , , , , , , , , , , , , , +PortE,PE10, ,TIM1_CH2N , ,USART5_TX , , , , , , , , , , , , , +PortE,PE11, ,TIM1_CH2 , ,USART5_RX , , , , , , , , , , , , , +PortE,PE12,SPI1_NSS/I2S1_WS ,TIM1_CH3N , , , , , , , , , , , , , , , +PortE,PE13,SPI1_SCK/I2S1_CK ,TIM1_CH3 , , , , , , , , , , , , , , , +PortE,PE14,SPI1_MISO/I2S1_MCK ,TIM1_CH4 ,TIM1_BK2 , , , , , , , , , , , , , , +PortE,PE15,SPI1_MOSI/I2S1_SD ,TIM1_BK , , , , , , , , , , , , , , , +PortF,PF0 ,CRS1_SYNC ,EVENTOUT ,TIM14_CH1 , , , , , , , , , , , , , , +PortF,PF1 ,OSC_EN ,EVENTOUT ,TIM15_CH1N , , , , , , , , , , , , , , +PortF,PF2 ,MCO ,LPUART2_TX , ,LPUART2_RTS/LPUART2_DE , , , , , , , , , , , , , +PortF,PF3 , ,LPUART2_RX , ,USART6_RTS/USART6_DE/USART6_CK, , , , , , , , , , , , , +PortF,PF4 , ,LPUART1_TX , , , , , , , , , , , , , , , +PortF,PF5 , ,LPUART1_RX , , , , , , , , , , , , , , , +PortF,PF6 , ,LPUART1_RTS/LPUART1_DE , , , , , , , , , , , , , , , +PortF,PF7 , ,LPUART1_CTS , ,USART5_CTS , , , , , , , , , , , , , +PortF,PF8 , , , , , , , , , , , , , , , , , +PortF,PF9 , , , ,USART6_TX , , , , , , , , , , , , , +PortF,PF10, , , ,USART6_RX , , , , , , , , , , , , , +PortF,PF11, , , ,USART6_RTS/USART6_DE/USART6_CK, , , , , , , , , , , , , +PortF,PF12,TIM15_CH1 , , ,USART6_CTS , , , , , , , , , , , , , +PortF,PF13,TIM15_CH2 , , , , , , , , , , , , , , , , diff --git a/ports/stm32/boards/stm32g474_af.csv b/ports/stm32/boards/stm32g474_af.csv index 0108ee90138ae..34ab2858374b3 100644 --- a/ports/stm32/boards/stm32g474_af.csv +++ b/ports/stm32/boards/stm32g474_af.csv @@ -1,109 +1,109 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,I2C4/SYS_AF,LPTIM1/TIM2/5/15/16/17,I2C1/3/TIM1/2/3/4/5/8/20/15/COMP1,QUADSPI1/I2C3/4/SAI1/USB/HRTIM1/TIM8/20/15/COMP3,I2C1/2/3/4/TIM1/8/16/17,QUADSPI1/SPI1/2/3/4/I2S2/3/I2C4/UART4/5/TIM8/Infrared,QUADSPI1/SPI2/3/I2S2/3/TIM1/5/8/20/Infrared,USART1/2/3/CAN/COMP7/5/6,I2C3/4/UART4/5/LPUART1/COMP1/2/7/4/5/6/3,CAN/TIM1/8/15/CAN1/2,QUADSPI1/TIM2/3/4/8/17,LPTIM1/TIM1/8/CAN1/3,FMC/LPUART1/SAI1/HRTIM1/TIM1,SAI1SAI1/HRTIM1/OPAMP2,UART4/5/SAI1/TIM2/15/UCPD1,SYS,ADC,COMP,DAC,OPAMP -PortA,PA0,,TIM2_CH1,TIM5_CH1,,,,,USART2_CTS,COMP1_OUT,TIM8_BKIN,TIM8_ETR,,,,TIM2_ETR,EVENTOUT,ADC12_IN1,COMP1_INM/COMP3_INP,, -PortA,PA1,RTC_REFIN,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS_DE,,TIM15_CH1N,,,,,,EVENTOUT,ADC12_IN2,COMP1_INP,,OPAMP1_VINP/OPAMP3_VINP/OPAMP6_VINM -PortA,PA2,,TIM2_CH3,TIM5_CH3,,,,,USART2_TX,COMP2_OUT,TIM15_CH1,QUADSPI1_BK1_NCS,,LPUART1_TX,,UCPD1_FRSTX,EVENTOUT,ADC1_IN3,COMP2_INM,,OPAMP1_VOUT -PortA,PA3,,TIM2_CH4,TIM5_CH4,SAI1_CK1,,,,USART2_RX,,TIM15_CH2,QUADSPI1_CLK,,LPUART1_RX,SAI1_MCLK_A,,EVENTOUT,ADC1_IN4,COMP2_INP,,OPAMP1_VINM/OPAMP1_VINP/OPAMP5_VINM -PortA,PA4,,,TIM3_CH2,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,,SAI1_FS_B,,EVENTOUT,ADC2_IN17,COMP1_INM,DAC1_OUT1, -PortA,PA5,,TIM2_CH1,TIM2_ETR,,,SPI1_SCK,,,,,,,,,UCPD1_FRSTX,EVENTOUT,ADC2_IN13,COMP2_INM,DAC1_OUT2,OPAMP2_VINM -PortA,PA6,,TIM16_CH1,TIM3_CH1,,TIM8_BKIN,SPI1_MISO,TIM1_BKIN,,COMP1_OUT,,QUADSPI1_BK1_IO3,,LPUART1_CTS,,,EVENTOUT,ADC2_IN3,,DAC2_OUT1,OPAMP2_VOUT -PortA,PA7,,TIM17_CH1,TIM3_CH2,,TIM8_CH1N,SPI1_MOSI,TIM1_CH1N,,COMP2_OUT,,QUADSPI1_BK1_IO2,,,,UCPD1_FRSTX,EVENTOUT,ADC2_IN4,COMP2_INP,,OPAMP1_VINP/OPAMP2_VINP -PortA,PA8,MCO,,I2C3_SCL,,I2C2_SDA,I2S2_MCK,TIM1_CH1,USART1_CK,COMP7_OUT,,TIM4_ETR,CAN3_RX,SAI1_CK2,HRTIM1_CHA1,SAI1_SCK_A,EVENTOUT,ADC5_IN1,,,OPAMP5_VOUT -PortA,PA9,,,I2C3_SMBA,,I2C2_SCL,I2S3_MCK,TIM1_CH2,USART1_TX,COMP5_OUT,TIM15_BKIN,TIM2_CH3,,,HRTIM1_CHA2,SAI1_FS_A,EVENTOUT,ADC5_IN2,,, -PortA,PA10,,TIM17_BKIN,,USB_CRS_SYNC,I2C2_SMBA,SPI2_MISO,TIM1_CH3,USART1_RX,COMP6_OUT,,TIM2_CH4,TIM8_BKIN,SAI1_D1,HRTIM1_CHB1,SAI1_SD_A,EVENTOUT,,,, -PortA,PA11,,,,,,SPI2_MOSI/I2S2_SD,TIM1_CH1N,USART1_CTS,COMP1_OUT,CAN1_RX,TIM4_CH1,TIM1_CH4,TIM1_BKIN2,HRTIM1_CHB2,,EVENTOUT,,,, -PortA,PA12,,TIM16_CH1,,,,I2SCKIN,TIM1_CH2N,USART1_RTS_DE,COMP2_OUT,CAN1_TX,TIM4_CH2,TIM1_ETR,,HRTIM1_FLT1,,EVENTOUT,,,, -PortA,PA13,SWDIOJTMS,TIM16_CH1N,,I2C4_SCL,I2C1_SCL,IR_OUT,,USART3_CTS,,,TIM4_CH3,,,SAI1_SD_B,,EVENTOUT,,,, -PortA,PA14,SWCLKJTCK,LPTIM1_OUT,,I2C4_SMBA,I2C1_SDA,TIM8_CH2,TIM1_BKIN,USART2_TX,,,,,,SAI1_FS_B,,EVENTOUT,,,, -PortA,PA15,JTDI,TIM2_CH1,TIM8_CH1,,I2C1_SCL,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_RX,UART4_RTS_DE,TIM1_BKIN,,CAN3_TX,,HRTIM1_FLT2,TIM2_ETR,EVENTOUT,,,, -PortB,PB0,,,TIM3_CH3,,TIM8_CH2N,,TIM1_CH2N,,,,QUADSPI1_BK1_IO1,,,HRTIM1_FLT5,UCPD1_FRSTX,EVENTOUT,ADC3_IN12/ADC1_IN15,COMP4_INP,,OPAMP2_VINP/OPAMP3_VINP -PortB,PB1,,,TIM3_CH4,,TIM8_CH3N,,TIM1_CH3N,,COMP4_OUT,,QUADSPI1_BK1_IO0,,LPUART1_RTS_DE,HRTIM1_SCOUT,,EVENTOUT,ADC3_IN1/ADC1_IN12,COMP1_INP,,OPAMP3_VOUT/OPAMP6_VINM -PortB,PB2,RTC_OUT2,LPTIM1_OUT,TIM5_CH1,TIM20_CH1,I2C3_SMBA,,,,,,QUADSPI1_BK2_IO1,,,HRTIM1_SCIN,,EVENTOUT,ADC2_IN12,COMP4_INM,,OPAMP3_VINM -PortB,PB3,JTDOTRACESWO,TIM2_CH2,TIM4_ETR,USB_CRS_SYNC,TIM8_CH1N,SPI1_SCK,SPI3_SCK/I2S3_CK,USART2_TX,,,TIM3_ETR,CAN3_RX,HRTIM1_SCOUT,HRTIM1_EEV9,SAI1_SCK_B,EVENTOUT,,,, -PortB,PB4,JTRST,TIM16_CH1,TIM3_CH1,,TIM8_CH2N,SPI1_MISO,SPI3_MISO,USART2_RX,UART5_RTS_DE,,TIM17_BKIN,CAN3_TX,,HRTIM1_EEV7,SAI1_MCLK_B,EVENTOUT,,,, -PortB,PB5,,TIM16_BKIN,TIM3_CH2,TIM8_CH3N,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,USART2_CK,I2C3_SDA,CAN2_RX,TIM17_CH1,LPTIM1_IN1,SAI1_SD_B,HRTIM1_EEV6,UART5_CTS,EVENTOUT,,,, -PortB,PB6,,TIM16_CH1N,TIM4_CH1,,,TIM8_CH1,TIM8_ETR,USART1_TX,COMP4_OUT,CAN2_TX,TIM8_BKIN2,LPTIM1_ETR,HRTIM1_SCIN,HRTIM1_EEV4,SAI1_FS_B,EVENTOUT,,,, -PortB,PB7,,TIM17_CH1N,TIM4_CH2,I2C4_SDA,I2C1_SDA,TIM8_BKIN,,USART1_RX,COMP3_OUT,,TIM3_CH4,LPTIM1_IN2,FMC_NL,HRTIM1_EEV3,UART4_CTS,EVENTOUT,,,, -PortB,PB8,,TIM16_CH1,TIM4_CH3,SAI1_CK1,I2C1_SCL,,,USART3_RX,COMP1_OUT,CAN1_RX,TIM8_CH2,,TIM1_BKIN,HRTIM1_EEV8,SAI1_MCLK_A,EVENTOUT,,,, -PortB,PB9,,TIM17_CH1,TIM4_CH4,SAI1_D2,I2C1_SDA,,IR_OUT,USART3_TX,COMP2_OUT,CAN1_TX,TIM8_CH3,,TIM1_CH3N,HRTIM1_EEV5,SAI1_FS_A,EVENTOUT,,,, -PortB,PB10,,TIM2_CH3,,,,,,USART3_TX,LPUART1_RX,,QUADSPI1_CLK,,TIM1_BKIN,HRTIM1_FLT3,SAI1_SCK_A,EVENTOUT,,COMP5_INM,,OPAMP3_VINM/OPAMP4_VINM -PortB,PB11,,TIM2_CH4,,,,,,USART3_RX,LPUART1_TX,,QUADSPI1_BK1_NCS,,,HRTIM1_FLT4,,EVENTOUT,ADC12_IN14,COMP6_INP,,OPAMP4_VINP/OPAMP6_VOUT -PortB,PB12,,,TIM5_ETR,,I2C2_SMBA,SPI2_NSS/I2S2_WS,TIM1_BKIN,USART3_CK,LPUART1_RTS_DE,CAN2_RX,,,,HRTIM1_CHC1,,EVENTOUT,ADC4_IN3/ADC1_IN11,COMP7_INM,,OPAMP4_VOUT/OPAMP6_VINP -PortB,PB13,,,,,,SPI2_SCK/I2S2_CK,TIM1_CH1N,USART3_CTS,LPUART1_CTS,CAN2_TX,,,,HRTIM1_CHC2,,EVENTOUT,ADC3_IN5,COMP5_INP,,OPAMP3_VINP/OPAMP4_VINP/OPAMP6_VINP -PortB,PB14,,TIM15_CH1,,,,SPI2_MISO,TIM1_CH2N,USART3_RTS_DE,COMP4_OUT,,,,,HRTIM1_CHD1,,EVENTOUT,ADC4_IN4/ADC1_IN5,COMP7_INP,,OPAMP2_VINP/OPAMP5_VINP -PortB,PB15,RTC_REFIN,TIM15_CH2,TIM15_CH1N,COMP3_OUT,TIM1_CH3N,SPI2_MOSI/I2S2_SD,,,,,,,,HRTIM1_CHD2,,EVENTOUT,ADC4_IN5/ADC2_IN15,COMP6_INM,,OPAMP5_VINM -PortC,PC0,,LPTIM1_IN1,TIM1_CH1,,,,,,LPUART1_RX,,,,,,,EVENTOUT,ADC12_IN6,COMP3_INM, -PortC,PC1,,LPTIM1_OUT,TIM1_CH2,,,,,,LPUART1_TX,,QUADSPI1_BK2_IO0,,,SAI1_SD_A,,EVENTOUT,ADC12_IN7,COMP3_INP,, -PortC,PC2,,LPTIM1_IN2,TIM1_CH3,COMP3_OUT,,,TIM20_CH2,,,,QUADSPI1_BK2_IO1,,,,,EVENTOUT,ADC12_IN8,, -PortC,PC3,,LPTIM1_ETR,TIM1_CH4,SAI1_D1,,,TIM1_BKIN2,,,,QUADSPI1_BK2_IO2,,,SAI1_SD_A,,EVENTOUT,ADC12_IN9,,,OPAMP5_VINP -PortC,PC4,,,TIM1_ETR,,I2C2_SCL,,,USART1_TX,,,QUADSPI1_BK2_IO3,,,,,EVENTOUT,ADC2_IN5,,, -PortC,PC5,,,TIM15_BKIN,SAI1_D3,,,TIM1_CH4N,USART1_RX,,,,,,HRTIM1_EEV10,,EVENTOUT,ADC2_IN11,,,OPAMP1_VINM/OPAMP2_VINM -PortC,PC6,,,TIM3_CH1,HRTIM1_EEV10,TIM8_CH1,,I2S2_MCK,COMP6_OUT,I2C4_SCL,,,,,HRTIM1_CHF1,,EVENTOUT,,,, -PortC,PC7,,,TIM3_CH2,HRTIM1_FLT5,TIM8_CH2,,I2S3_MCK,COMP5_OUT,I2C4_SDA,,,,,HRTIM1_CHF2,,EVENTOUT,,,, -PortC,PC8,,,TIM3_CH3,HRTIM1_CHE1,TIM8_CH3,,TIM20_CH3,COMP7_OUT,I2C3_SCL,,,,,,,EVENTOUT,,,, -PortC,PC9,,,TIM3_CH4,HRTIM1_CHE2,TIM8_CH4,I2SCKIN,TIM8_BKIN2,,I2C3_SDA,,,,,,,EVENTOUT,,,, -PortC,PC10,,,,,TIM8_CH1N,UART4_TX,SPI3_SCK/I2S3_CK,USART3_TX,,,,,,HRTIM1_FLT6,,EVENTOUT,,,, -PortC,PC11,,,,HRTIM1_EEV2,TIM8_CH2N,UART4_RX,SPI3_MISO,USART3_RX,I2C3_SDA,,,,,,,EVENTOUT,,,, -PortC,PC12,,TIM5_CH2,,HRTIM1_EEV1,TIM8_CH3N,UART5_TX,SPI3_MOSI/I2S3_SD,USART3_CK,,,,,,,UCPD1_FRSTX,EVENTOUT,,,, -PortC,PC13,,,TIM1_BKIN,,TIM1_CH1N,,TIM8_CH4N,,,,,,,,,EVENTOUT,,,, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT,,,, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT,,,, -PortD,PD0,,,,,,,TIM8_CH4N,,,CAN1_RX,,,FMC_D2,,,EVENTOUT,,,, -PortD,PD1,,,,,TIM8_CH4,,TIM8_BKIN2,,,CAN1_TX,,,FMC_D3,,,EVENTOUT,,,, -PortD,PD2,,,TIM3_ETR,,TIM8_BKIN,UART5_RX,,,,,,,,,,EVENTOUT,,,, -PortD,PD3,,,TIM2_CH1/TIM2_ETR,,,,,USART2_CTS,,,QUADSPI1_BK2_NCS,,FMC_CLK,,,EVENTOUT,,,, -PortD,PD4,,,TIM2_CH2,,,,,USART2_RTS_DE,,,QUADSPI1_BK2_IO0,,FMC_NOE,,,EVENTOUT,,,, -PortD,PD5,,,,,,,,USART2_TX,,,QUADSPI1_BK2_IO1,,FMC_NWE,,,EVENTOUT,,,, -PortD,PD6,,,TIM2_CH4,SAI1_D1,,,,USART2_RX,,,QUADSPI1_BK2_IO2,,FMC_NWAIT,SAI1_SD_A,,EVENTOUT,,,, -PortD,PD7,,,TIM2_CH3,,,,,USART2_CK,,,QUADSPI1_BK2_IO3,,FMC_NCE/FMC_NE1,,,EVENTOUT,,,, -PortD,PD8,,,,,,,,USART3_TX,,,,,FMC_D13,,,EVENTOUT,ADC4_IN12/ADC5_IN12,,,OPAMP4_VINM -PortD,PD9,,,,,,,,USART3_RX,,,,,FMC_D14,,,EVENTOUT,ADC4_IN13/ADC5_IN13,,,OPAMP6_VINP -PortD,PD10,,,,,,,,USART3_CK,,,,,FMC_D15,,,EVENTOUT,ADC345_IN7,COMP6_INM,, -PortD,PD11,,TIM5_ETR,,,I2C4_SMBA,,,USART3_CTS,,,,,FMC_A16,,,EVENTOUT,ADC345_IN8,COMP6_INP,,OPAMP4_VINP -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS_DE,,,,,FMC_A17,,,EVENTOUT,ADC345_IN9,COMP5_INP,,OPAMP5_VINP -PortD,PD13,,,TIM4_CH2,,,,,,,,,,FMC_A18,,,EVENTOUT,ADC345_IN10,COMP5_INM,, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,FMC_D0,,,EVENTOUT,ADC345_IN11,COMP7_INP,,OPAMP2_VINP -PortD,PD15,,,TIM4_CH4,,,,SPI2_NSS,,,,,,FMC_D1,,,EVENTOUT,,COMP7_INM,, -PortE,PE0,,,TIM4_ETR,TIM20_CH4N,TIM16_CH1,,TIM20_ETR,USART1_TX,,CAN1_RXFD,,,FMC_NBL0,,,EVENTOUT,,,, -PortE,PE1,,,,,TIM17_CH1,,TIM20_CH4,USART1_RX,,,,,FMC_NBL1,,,EVENTOUT,,,, -PortE,PE2,TRACECK,,TIM3_CH1,SAI1_CK1,,SPI4_SCK,TIM20_CH1,,,,,,FMC_A23,SAI1_MCLK_A,,EVENTOUT,,,, -PortE,PE3,TRACED0,,TIM3_CH2,,,SPI4_NSS,TIM20_CH2,,,,,,FMC_A19,SAI1_SD_B,,EVENTOUT,,,, -PortE,PE4,TRACED1,,TIM3_CH3,SAI1_D2,,SPI4_NSS,TIM20_CH1N,,,,,,FMC_A20,SAI1_FS_A,,EVENTOUT,,,, -PortE,PE5,TRACED2,,TIM3_CH4,SAI1_CK2,,SPI4_MISO,TIM20_CH2N,,,,,,FMC_A21,SAI1_SCK_A,,EVENTOUT,,,, -PortE,PE6,TRACED3,,,SAI1_D1,,SPI4_MOSI,TIM20_CH3N,,,,,,FMC_A22,SAI1_SD_A,,EVENTOUT,,,, -PortE,PE7,,,TIM1_ETR,,,,,,,,,,FMC_D4,SAI1_SD_B,,EVENTOUT,ADC3_IN4,COMP4_INP,, -PortE,PE8,,TIM5_CH3,TIM1_CH1N,,,,,,,,,,FMC_D5,SAI1_SCK_B,,EVENTOUT,ADC345_IN6,COMP4_INM,, -PortE,PE9,,TIM5_CH4,TIM1_CH1,,,,,,,,,,FMC_D6,SAI1_FS_B,,EVENTOUT,ADC3_IN2,,, -PortE,PE10,,,TIM1_CH2N,,,,,,,,QUADSPI1_CLK,,FMC_D7,SAI1_MCLK_B,,EVENTOUT,ADC345_IN14,,, -PortE,PE11,,,TIM1_CH2,,,SPI4_NSS,,,,,QUADSPI1_BK1_NCS,,FMC_D8,,,EVENTOUT,ADC345_IN15,,, -PortE,PE12,,,TIM1_CH3N,,,SPI4_SCK,,,,,QUADSPI1_BK1_IO0,,FMC_D9,,,EVENTOUT,ADC345_IN16,,, -PortE,PE13,,,TIM1_CH3,,,SPI4_MISO,,,,,QUADSPI1_BK1_IO1,,FMC_D10,,,EVENTOUT,ADC3_IN3,,, -PortE,PE14,,,TIM1_CH4,,,SPI4_MOSI,TIM1_BKIN2,,,,QUADSPI1_BK1_IO2,,FMC_D11,,,EVENTOUT,ADC4_IN1,,, -PortE,PE15,,,TIM1_BKIN,,,,TIM1_CH4N,USART3_RX,,,QUADSPI1_BK1_IO3,,FMC_D12,,,EVENTOUT,ADC4_IN2,,, -PortF,PF0,,,,,I2C2_SDA,SPI2_NSS/I2S2_WS,TIM1_CH3N,,,,,,,,,EVENTOUT,ADC1_IN10,,, -PortF,PF1,,,,,,SPI2_SCK/I2S2_CK,,,,,,,,,,EVENTOUT,ADC2_IN10,COMP3_INM,, -PortF,PF2,,,TIM20_CH3,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT,,,, -PortF,PF3,,,TIM20_CH4,,I2C3_SCL,,,,,,,,FMC_A3,,,EVENTOUT,,,, -PortF,PF4,,,COMP1_OUT,TIM20_CH1N,I2C3_SDA,,,,,,,,FMC_A4,,,EVENTOUT,,,, -PortF,PF5,,,TIM20_CH2N,,,,,,,,,,FMC_A5,,,EVENTOUT,,,, -PortF,PF6,,TIM5_ETR,TIM4_CH4,SAI1_SD_B,I2C2_SCL,,TIM5_CH1,USART3_RTS,,,QUADSPI1_BK1_IO3,,,,,EVENTOUT,,,, -PortF,PF7,,,TIM20_BKIN,,,,TIM5_CH2,,,,QUADSPI1_BK1_IO2,,FMC_A1,SAI1_MCLK_B,,EVENTOUT,,,, -PortF,PF8,,,TIM20_BKIN2,,,,TIM5_CH3,,,,QUADSPI1_BK1_IO0,,FMC_A24,SAI1_SCK_B,,EVENTOUT,,,, -PortF,PF9,,,TIM20_BKIN,TIM15_CH1,,SPI2_SCK,TIM5_CH4,,,,QUADSPI1_BK1_IO1,,FMC_A25,SAI1_FS_B,,EVENTOUT,,,, -PortF,PF10,,,TIM20_BKIN2,TIM15_CH2,,SPI2_SCK,,,,,QUADSPI1_CLK,,FMC_A0,SAI1_D3,,EVENTOUT,,,, -PortF,PF11,,,TIM20_ETR,,,,,,,,,,FMC_NE4,,,EVENTOUT,,,, -PortF,PF12,,,TIM20_CH1,,,,,,,,,,FMC_A6,,,EVENTOUT,,,, -PortF,PF13,,,TIM20_CH2,,I2C4_SMBA,,,,,,,,FMC_A7,,,EVENTOUT,,,, -PortF,PF14,,,TIM20_CH3,,I2C4_SCL,,,,,,,,FMC_A8,,,EVENTOUT,,,, -PortF,PF15,,,TIM20_CH4,,I2C4_SDA,,,,,,,,FMC_A9,,,EVENTOUT,,,, -PortG,PG0,,,TIM20_CH1N,,,,,,,,,,FMC_A10,,,EVENTOUT,,,, -PortG,PG1,,,TIM20_CH2N,,,,,,,,,,FMC_A11,,,EVENTOUT,,,, -PortG,PG2,,,TIM20_CH3N,,,SPI1_SCK,,,,,,,FMC_A12,,,EVENTOUT,,,, -PortG,PG3,,,TIM20_BKIN,,I2C4_SCL,SPI1_MISO,TIM20_CH4N,,,,,,FMC_A13,,,EVENTOUT,,,, -PortG,PG4,,,TIM20_BKIN2,,I2C4_SDA,SPI1_MOSI,,,,,,,FMC_A14,,,EVENTOUT,,,, -PortG,PG5,,,TIM20_ETR,,,SPI1_NSS,,,LPUART1_CTS,,,,FMC_A15,,,EVENTOUT,,,, -PortG,PG6,,,TIM20_BKIN,,I2C3_SMBA,,,,LPUART1_RTS_DE,,,,FMC_INT,,,EVENTOUT,,,, -PortG,PG7,,,,SAI1_CK1,I2C3_SCL,,,,LPUART1_TX,,,,FMC_INT,SAI1_MCLK_A,,EVENTOUT,,,, -PortG,PG8,,,,,I2C3_SDA,,,,LPUART1_RX,,,,FMC_NE3,,,EVENTOUT,,,, -PortG,PG9,,,,,,,SPI3_SCK,USART1_TX,,,,,FMC_NCE/FMC_NE2,,TIM15_CH1N,EVENTOUT,,,, -PortG,PG10,MCO,,,,,,,,,,,,,,,EVENTOUT +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,I2C4/SYS_AF ,LPTIM1/TIM2/5/15/16/17,I2C1/3/TIM1/2/3/4/5/8/20/15/COMP1,QUADSPI1/I2C3/4/SAI1/USB/HRTIM1/TIM8/20/15/COMP3,I2C1/2/3/4/TIM1/8/16/17,QUADSPI1/SPI1/2/3/4/I2S2/3/I2C4/UART4/5/TIM8/Infrared,QUADSPI1/SPI2/3/I2S2/3/TIM1/5/8/20/Infrared,USART1/2/3/CAN/COMP7/5/6,I2C3/4/UART4/5/LPUART1/COMP1/2/7/4/5/6/3,CAN/TIM1/8/15/CAN1/2,QUADSPI1/TIM2/3/4/8/17,LPTIM1/TIM1/8/CAN1/3,FMC/LPUART1/SAI1/HRTIM1/TIM1,SAI1SAI1/HRTIM1/OPAMP2,UART4/5/SAI1/TIM2/15/UCPD1,SYS ,ADC +PortA,PA0 , ,TIM2_CH1 ,TIM5_CH1 , , , , ,USART2_CTS ,COMP1_OUT ,TIM8_BKIN ,TIM8_ETR , , , ,TIM2_ETR ,EVENTOUT,ADC12_IN1 +PortA,PA1 ,RTC_REFIN ,TIM2_CH2 ,TIM5_CH2 , , , , ,USART2_RTS_DE , ,TIM15_CH1N , , , , , ,EVENTOUT,ADC12_IN2 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 , , , , ,USART2_TX ,COMP2_OUT ,TIM15_CH1 ,QUADSPI1_BK1_NCS , ,LPUART1_TX , ,UCPD1_FRSTX ,EVENTOUT,ADC1_IN3 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,SAI1_CK1 , , , ,USART2_RX , ,TIM15_CH2 ,QUADSPI1_CLK , ,LPUART1_RX ,SAI1_MCLK_A , ,EVENTOUT,ADC1_IN4 +PortA,PA4 , , ,TIM3_CH2 , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , , ,SAI1_FS_B , ,EVENTOUT,ADC2_IN17 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR , , ,SPI1_SCK , , , , , , , , ,UCPD1_FRSTX ,EVENTOUT,ADC2_IN13 +PortA,PA6 , ,TIM16_CH1 ,TIM3_CH1 , ,TIM8_BKIN ,SPI1_MISO ,TIM1_BKIN , ,COMP1_OUT , ,QUADSPI1_BK1_IO3 , ,LPUART1_CTS , , ,EVENTOUT,ADC2_IN3 +PortA,PA7 , ,TIM17_CH1 ,TIM3_CH2 , ,TIM8_CH1N ,SPI1_MOSI ,TIM1_CH1N , ,COMP2_OUT , ,QUADSPI1_BK1_IO2 , , , ,UCPD1_FRSTX ,EVENTOUT,ADC2_IN4 +PortA,PA8 ,MCO , ,I2C3_SCL , ,I2C2_SDA ,I2S2_MCK ,TIM1_CH1 ,USART1_CK ,COMP7_OUT , ,TIM4_ETR ,CAN3_RX ,SAI1_CK2 ,HRTIM1_CHA1 ,SAI1_SCK_A ,EVENTOUT,ADC5_IN1 +PortA,PA9 , , ,I2C3_SMBA , ,I2C2_SCL ,I2S3_MCK ,TIM1_CH2 ,USART1_TX ,COMP5_OUT ,TIM15_BKIN ,TIM2_CH3 , , ,HRTIM1_CHA2 ,SAI1_FS_A ,EVENTOUT,ADC5_IN2 +PortA,PA10, ,TIM17_BKIN , ,USB_CRS_SYNC ,I2C2_SMBA ,SPI2_MISO ,TIM1_CH3 ,USART1_RX ,COMP6_OUT , ,TIM2_CH4 ,TIM8_BKIN ,SAI1_D1 ,HRTIM1_CHB1 ,SAI1_SD_A ,EVENTOUT, +PortA,PA11, , , , , ,SPI2_MOSI/I2S2_SD ,TIM1_CH1N ,USART1_CTS ,COMP1_OUT ,CAN1_RX ,TIM4_CH1 ,TIM1_CH4 ,TIM1_BKIN2 ,HRTIM1_CHB2 , ,EVENTOUT, +PortA,PA12, ,TIM16_CH1 , , , ,I2SCKIN ,TIM1_CH2N ,USART1_RTS_DE ,COMP2_OUT ,CAN1_TX ,TIM4_CH2 ,TIM1_ETR , ,HRTIM1_FLT1 , ,EVENTOUT, +PortA,PA13,SWDIOJTMS ,TIM16_CH1N , ,I2C4_SCL ,I2C1_SCL ,IR_OUT , ,USART3_CTS , , ,TIM4_CH3 , , ,SAI1_SD_B , ,EVENTOUT, +PortA,PA14,SWCLKJTCK ,LPTIM1_OUT , ,I2C4_SMBA ,I2C1_SDA ,TIM8_CH2 ,TIM1_BKIN ,USART2_TX , , , , , ,SAI1_FS_B , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM8_CH1 , ,I2C1_SCL ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_RX ,UART4_RTS_DE ,TIM1_BKIN , ,CAN3_TX , ,HRTIM1_FLT2 ,TIM2_ETR ,EVENTOUT, +PortB,PB0 , , ,TIM3_CH3 , ,TIM8_CH2N , ,TIM1_CH2N , , , ,QUADSPI1_BK1_IO1 , , ,HRTIM1_FLT5 ,UCPD1_FRSTX ,EVENTOUT,ADC3_IN12/ADC1_IN15 +PortB,PB1 , , ,TIM3_CH4 , ,TIM8_CH3N , ,TIM1_CH3N , ,COMP4_OUT , ,QUADSPI1_BK1_IO0 , ,LPUART1_RTS_DE ,HRTIM1_SCOUT , ,EVENTOUT,ADC3_IN1/ADC1_IN12 +PortB,PB2 ,RTC_OUT2 ,LPTIM1_OUT ,TIM5_CH1 ,TIM20_CH1 ,I2C3_SMBA , , , , , ,QUADSPI1_BK2_IO1 , , ,HRTIM1_SCIN , ,EVENTOUT,ADC2_IN12 +PortB,PB3 ,JTDOTRACESWO,TIM2_CH2 ,TIM4_ETR ,USB_CRS_SYNC ,TIM8_CH1N ,SPI1_SCK ,SPI3_SCK/I2S3_CK ,USART2_TX , , ,TIM3_ETR ,CAN3_RX ,HRTIM1_SCOUT ,HRTIM1_EEV9 ,SAI1_SCK_B ,EVENTOUT, +PortB,PB4 ,JTRST ,TIM16_CH1 ,TIM3_CH1 , ,TIM8_CH2N ,SPI1_MISO ,SPI3_MISO ,USART2_RX ,UART5_RTS_DE , ,TIM17_BKIN ,CAN3_TX , ,HRTIM1_EEV7 ,SAI1_MCLK_B ,EVENTOUT, +PortB,PB5 , ,TIM16_BKIN ,TIM3_CH2 ,TIM8_CH3N ,I2C1_SMBA ,SPI1_MOSI ,SPI3_MOSI/I2S3_SD ,USART2_CK ,I2C3_SDA ,CAN2_RX ,TIM17_CH1 ,LPTIM1_IN1 ,SAI1_SD_B ,HRTIM1_EEV6 ,UART5_CTS ,EVENTOUT, +PortB,PB6 , ,TIM16_CH1N ,TIM4_CH1 , , ,TIM8_CH1 ,TIM8_ETR ,USART1_TX ,COMP4_OUT ,CAN2_TX ,TIM8_BKIN2 ,LPTIM1_ETR ,HRTIM1_SCIN ,HRTIM1_EEV4 ,SAI1_FS_B ,EVENTOUT, +PortB,PB7 , ,TIM17_CH1N ,TIM4_CH2 ,I2C4_SDA ,I2C1_SDA ,TIM8_BKIN , ,USART1_RX ,COMP3_OUT , ,TIM3_CH4 ,LPTIM1_IN2 ,FMC_NL ,HRTIM1_EEV3 ,UART4_CTS ,EVENTOUT, +PortB,PB8 , ,TIM16_CH1 ,TIM4_CH3 ,SAI1_CK1 ,I2C1_SCL , , ,USART3_RX ,COMP1_OUT ,CAN1_RX ,TIM8_CH2 , ,TIM1_BKIN ,HRTIM1_EEV8 ,SAI1_MCLK_A ,EVENTOUT, +PortB,PB9 , ,TIM17_CH1 ,TIM4_CH4 ,SAI1_D2 ,I2C1_SDA , ,IR_OUT ,USART3_TX ,COMP2_OUT ,CAN1_TX ,TIM8_CH3 , ,TIM1_CH3N ,HRTIM1_EEV5 ,SAI1_FS_A ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , , , , ,USART3_TX ,LPUART1_RX , ,QUADSPI1_CLK , ,TIM1_BKIN ,HRTIM1_FLT3 ,SAI1_SCK_A ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , , , , ,USART3_RX ,LPUART1_TX , ,QUADSPI1_BK1_NCS , , ,HRTIM1_FLT4 , ,EVENTOUT,ADC12_IN14 +PortB,PB12, , ,TIM5_ETR , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,TIM1_BKIN ,USART3_CK ,LPUART1_RTS_DE ,CAN2_RX , , , ,HRTIM1_CHC1 , ,EVENTOUT,ADC4_IN3/ADC1_IN11 +PortB,PB13, , , , , ,SPI2_SCK/I2S2_CK ,TIM1_CH1N ,USART3_CTS ,LPUART1_CTS ,CAN2_TX , , , ,HRTIM1_CHC2 , ,EVENTOUT,ADC3_IN5 +PortB,PB14, ,TIM15_CH1 , , , ,SPI2_MISO ,TIM1_CH2N ,USART3_RTS_DE ,COMP4_OUT , , , , ,HRTIM1_CHD1 , ,EVENTOUT,ADC4_IN4/ADC1_IN5 +PortB,PB15,RTC_REFIN ,TIM15_CH2 ,TIM15_CH1N ,COMP3_OUT ,TIM1_CH3N ,SPI2_MOSI/I2S2_SD , , , , , , , ,HRTIM1_CHD2 , ,EVENTOUT,ADC4_IN5/ADC2_IN15 +PortC,PC0 , ,LPTIM1_IN1 ,TIM1_CH1 , , , , , ,LPUART1_RX , , , , , , ,EVENTOUT,ADC12_IN6 +PortC,PC1 , ,LPTIM1_OUT ,TIM1_CH2 , , , , , ,LPUART1_TX , ,QUADSPI1_BK2_IO0 , , ,SAI1_SD_A , ,EVENTOUT,ADC12_IN7 +PortC,PC2 , ,LPTIM1_IN2 ,TIM1_CH3 ,COMP3_OUT , , ,TIM20_CH2 , , , ,QUADSPI1_BK2_IO1 , , , , ,EVENTOUT,ADC12_IN8 +PortC,PC3 , ,LPTIM1_ETR ,TIM1_CH4 ,SAI1_D1 , , ,TIM1_BKIN2 , , , ,QUADSPI1_BK2_IO2 , , ,SAI1_SD_A , ,EVENTOUT,ADC12_IN9 +PortC,PC4 , , ,TIM1_ETR , ,I2C2_SCL , , ,USART1_TX , , ,QUADSPI1_BK2_IO3 , , , , ,EVENTOUT,ADC2_IN5 +PortC,PC5 , , ,TIM15_BKIN ,SAI1_D3 , , ,TIM1_CH4N ,USART1_RX , , , , , ,HRTIM1_EEV10 , ,EVENTOUT,ADC2_IN11 +PortC,PC6 , , ,TIM3_CH1 ,HRTIM1_EEV10 ,TIM8_CH1 , ,I2S2_MCK ,COMP6_OUT ,I2C4_SCL , , , , ,HRTIM1_CHF1 , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 ,HRTIM1_FLT5 ,TIM8_CH2 , ,I2S3_MCK ,COMP5_OUT ,I2C4_SDA , , , , ,HRTIM1_CHF2 , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 ,HRTIM1_CHE1 ,TIM8_CH3 , ,TIM20_CH3 ,COMP7_OUT ,I2C3_SCL , , , , , , ,EVENTOUT, +PortC,PC9 , , ,TIM3_CH4 ,HRTIM1_CHE2 ,TIM8_CH4 ,I2SCKIN ,TIM8_BKIN2 , ,I2C3_SDA , , , , , , ,EVENTOUT, +PortC,PC10, , , , ,TIM8_CH1N ,UART4_TX ,SPI3_SCK/I2S3_CK ,USART3_TX , , , , , ,HRTIM1_FLT6 , ,EVENTOUT, +PortC,PC11, , , ,HRTIM1_EEV2 ,TIM8_CH2N ,UART4_RX ,SPI3_MISO ,USART3_RX ,I2C3_SDA , , , , , , ,EVENTOUT, +PortC,PC12, ,TIM5_CH2 , ,HRTIM1_EEV1 ,TIM8_CH3N ,UART5_TX ,SPI3_MOSI/I2S3_SD ,USART3_CK , , , , , , ,UCPD1_FRSTX ,EVENTOUT, +PortC,PC13, , ,TIM1_BKIN , ,TIM1_CH1N , ,TIM8_CH4N , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , , ,TIM8_CH4N , , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , ,TIM8_CH4 , ,TIM8_BKIN2 , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR , ,TIM8_BKIN ,UART5_RX , , , , , , , , , ,EVENTOUT, +PortD,PD3 , , ,TIM2_CH1/TIM2_ETR , , , , ,USART2_CTS , , ,QUADSPI1_BK2_NCS , ,FMC_CLK , , ,EVENTOUT, +PortD,PD4 , , ,TIM2_CH2 , , , , ,USART2_RTS_DE , , ,QUADSPI1_BK2_IO0 , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , ,QUADSPI1_BK2_IO1 , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , ,TIM2_CH4 ,SAI1_D1 , , , ,USART2_RX , , ,QUADSPI1_BK2_IO2 , ,FMC_NWAIT ,SAI1_SD_A , ,EVENTOUT, +PortD,PD7 , , ,TIM2_CH3 , , , , ,USART2_CK , , ,QUADSPI1_BK2_IO3 , ,FMC_NCE/FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FMC_D13 , , ,EVENTOUT,ADC4_IN12/ADC5_IN12 +PortD,PD9 , , , , , , , ,USART3_RX , , , , ,FMC_D14 , , ,EVENTOUT,ADC4_IN13/ADC5_IN13 +PortD,PD10, , , , , , , ,USART3_CK , , , , ,FMC_D15 , , ,EVENTOUT,ADC345_IN7 +PortD,PD11, ,TIM5_ETR , , ,I2C4_SMBA , , ,USART3_CTS , , , , ,FMC_A16 , , ,EVENTOUT,ADC345_IN8 +PortD,PD12, , ,TIM4_CH1 , , , , ,USART3_RTS_DE , , , , ,FMC_A17 , , ,EVENTOUT,ADC345_IN9 +PortD,PD13, , ,TIM4_CH2 , , , , , , , , , ,FMC_A18 , , ,EVENTOUT,ADC345_IN10 +PortD,PD14, , ,TIM4_CH3 , , , , , , , , , ,FMC_D0 , , ,EVENTOUT,ADC345_IN11 +PortD,PD15, , ,TIM4_CH4 , , , ,SPI2_NSS , , , , , ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR ,TIM20_CH4N ,TIM16_CH1 , ,TIM20_ETR ,USART1_TX , ,CAN1_RXFD , , ,FMC_NBL0 , , ,EVENTOUT, +PortE,PE1 , , , , ,TIM17_CH1 , ,TIM20_CH4 ,USART1_RX , , , , ,FMC_NBL1 , , ,EVENTOUT, +PortE,PE2 ,TRACECK , ,TIM3_CH1 ,SAI1_CK1 , ,SPI4_SCK ,TIM20_CH1 , , , , , ,FMC_A23 ,SAI1_MCLK_A , ,EVENTOUT, +PortE,PE3 ,TRACED0 , ,TIM3_CH2 , , ,SPI4_NSS ,TIM20_CH2 , , , , , ,FMC_A19 ,SAI1_SD_B , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,TIM3_CH3 ,SAI1_D2 , ,SPI4_NSS ,TIM20_CH1N , , , , , ,FMC_A20 ,SAI1_FS_A , ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,TIM3_CH4 ,SAI1_CK2 , ,SPI4_MISO ,TIM20_CH2N , , , , , ,FMC_A21 ,SAI1_SCK_A , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,SAI1_D1 , ,SPI4_MOSI ,TIM20_CH3N , , , , , ,FMC_A22 ,SAI1_SD_A , ,EVENTOUT, +PortE,PE7 , , ,TIM1_ETR , , , , , , , , , ,FMC_D4 ,SAI1_SD_B , ,EVENTOUT,ADC3_IN4 +PortE,PE8 , ,TIM5_CH3 ,TIM1_CH1N , , , , , , , , , ,FMC_D5 ,SAI1_SCK_B , ,EVENTOUT,ADC345_IN6 +PortE,PE9 , ,TIM5_CH4 ,TIM1_CH1 , , , , , , , , , ,FMC_D6 ,SAI1_FS_B , ,EVENTOUT,ADC3_IN2 +PortE,PE10, , ,TIM1_CH2N , , , , , , , ,QUADSPI1_CLK , ,FMC_D7 ,SAI1_MCLK_B , ,EVENTOUT,ADC345_IN14 +PortE,PE11, , ,TIM1_CH2 , , ,SPI4_NSS , , , , ,QUADSPI1_BK1_NCS , ,FMC_D8 , , ,EVENTOUT,ADC345_IN15 +PortE,PE12, , ,TIM1_CH3N , , ,SPI4_SCK , , , , ,QUADSPI1_BK1_IO0 , ,FMC_D9 , , ,EVENTOUT,ADC345_IN16 +PortE,PE13, , ,TIM1_CH3 , , ,SPI4_MISO , , , , ,QUADSPI1_BK1_IO1 , ,FMC_D10 , , ,EVENTOUT,ADC3_IN3 +PortE,PE14, , ,TIM1_CH4 , , ,SPI4_MOSI ,TIM1_BKIN2 , , , ,QUADSPI1_BK1_IO2 , ,FMC_D11 , , ,EVENTOUT,ADC4_IN1 +PortE,PE15, , ,TIM1_BKIN , , , ,TIM1_CH4N ,USART3_RX , , ,QUADSPI1_BK1_IO3 , ,FMC_D12 , , ,EVENTOUT,ADC4_IN2 +PortF,PF0 , , , , ,I2C2_SDA ,SPI2_NSS/I2S2_WS ,TIM1_CH3N , , , , , , , , ,EVENTOUT,ADC1_IN10 +PortF,PF1 , , , , , ,SPI2_SCK/I2S2_CK , , , , , , , , , ,EVENTOUT,ADC2_IN10 +PortF,PF2 , , ,TIM20_CH3 , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , ,TIM20_CH4 , ,I2C3_SCL , , , , , , , ,FMC_A3 , , ,EVENTOUT, +PortF,PF4 , , ,COMP1_OUT ,TIM20_CH1N ,I2C3_SDA , , , , , , , ,FMC_A4 , , ,EVENTOUT, +PortF,PF5 , , ,TIM20_CH2N , , , , , , , , , ,FMC_A5 , , ,EVENTOUT, +PortF,PF6 , ,TIM5_ETR ,TIM4_CH4 ,SAI1_SD_B ,I2C2_SCL , ,TIM5_CH1 ,USART3_RTS , , ,QUADSPI1_BK1_IO3 , , , , ,EVENTOUT, +PortF,PF7 , , ,TIM20_BKIN , , , ,TIM5_CH2 , , , ,QUADSPI1_BK1_IO2 , ,FMC_A1 ,SAI1_MCLK_B , ,EVENTOUT, +PortF,PF8 , , ,TIM20_BKIN2 , , , ,TIM5_CH3 , , , ,QUADSPI1_BK1_IO0 , ,FMC_A24 ,SAI1_SCK_B , ,EVENTOUT, +PortF,PF9 , , ,TIM20_BKIN ,TIM15_CH1 , ,SPI2_SCK ,TIM5_CH4 , , , ,QUADSPI1_BK1_IO1 , ,FMC_A25 ,SAI1_FS_B , ,EVENTOUT, +PortF,PF10, , ,TIM20_BKIN2 ,TIM15_CH2 , ,SPI2_SCK , , , , ,QUADSPI1_CLK , ,FMC_A0 ,SAI1_D3 , ,EVENTOUT, +PortF,PF11, , ,TIM20_ETR , , , , , , , , , ,FMC_NE4 , , ,EVENTOUT, +PortF,PF12, , ,TIM20_CH1 , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , ,TIM20_CH2 , ,I2C4_SMBA , , , , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , ,TIM20_CH3 , ,I2C4_SCL , , , , , , , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , ,TIM20_CH4 , ,I2C4_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , ,TIM20_CH1N , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , ,TIM20_CH2N , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , ,TIM20_CH3N , , ,SPI1_SCK , , , , , , ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , ,TIM20_BKIN , ,I2C4_SCL ,SPI1_MISO ,TIM20_CH4N , , , , , ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , , ,TIM20_BKIN2 , ,I2C4_SDA ,SPI1_MOSI , , , , , , ,FMC_A14 , , ,EVENTOUT, +PortG,PG5 , , ,TIM20_ETR , , ,SPI1_NSS , , ,LPUART1_CTS , , , ,FMC_A15 , , ,EVENTOUT, +PortG,PG6 , , ,TIM20_BKIN , ,I2C3_SMBA , , , ,LPUART1_RTS_DE , , , ,FMC_INT , , ,EVENTOUT, +PortG,PG7 , , , ,SAI1_CK1 ,I2C3_SCL , , , ,LPUART1_TX , , , ,FMC_INT ,SAI1_MCLK_A , ,EVENTOUT, +PortG,PG8 , , , , ,I2C3_SDA , , , ,LPUART1_RX , , , ,FMC_NE3 , , ,EVENTOUT, +PortG,PG9 , , , , , , ,SPI3_SCK ,USART1_TX , , , , ,FMC_NCE/FMC_NE2 , ,TIM15_CH1N ,EVENTOUT, +PortG,PG10,MCO , , , , , , , , , , , , , , , ,EVENTOUT diff --git a/ports/stm32/boards/stm32h573_af.csv b/ports/stm32/boards/stm32h573_af.csv index bdc29ebe2a0a3..b47bb3c8ff0f2 100644 --- a/ports/stm32/boards/stm32h573_af.csv +++ b/ports/stm32/boards/stm32h573_af.csv @@ -1,142 +1,142 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,LPTIM1/TIM1/2/16/17,LPTIM3/PDM_SAI1/TIM3/4/5/12/15,I3C1/LPTIM2/3/LPUART1/OCTOSPI/TIM1/8,CEC/DCMI/I2C1/2/3/4/LPTIM1/2/SPI1/I2S1/TIM15/USART1,CEC/I3C1/LPTIM1/SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/6,I2C4/OCTOSPI/SAI1/SPI3/I2S3/SPI4/UART4/12/USART10/USB_PD,SDMMC1/SPI2/I2S2/SPI3/I2S3/SPI6/UART7/8/12/USART1/2/3/6/10/11,LPUART1/SAI2/SDMMC1/SPI6/UART4/5/8,FDCAN1/2/FMC[NAND16]/FMC[NORmux]/FMC[NOR_RAM]/OCTOSPI/SDMMC2/TIM13/14,CRS/FMC[NAND16]/OCTOSPI/SAI2/SDMMC2/TIM8/USB_,ETH[MII/RMII]/FMC[NAND16]/OCTOSPI/SDMMC2/UART7/9/USB_PD,FMC[NAND16]/FMC[NORmux]/FMC[NOR_RAM]/FMC[SDRAM_16bit]/SDMMC1,DCMI/FMC[NAND16]/FMC[NORmux]/FMC[NOR_RAM]/LPTIM5,LPTIM3/4/5/6/TIM2/UART5,SYS,ADC -PortA,PA0,,TIM2_CH1,TIM5_CH1,TIM8_ETR,TIM15_BKIN,SPI6_NSS,SPI3_RDY,USART2_CTS/USART2_NSS,UART4_TX,SDMMC2_CMD,SAI2_SD_B,ETH_MII_CRS,,,TIM2_ETR,EVENTOUT,ADC12_INP0/ADC12_INN1 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,TIM15_CH1N,LPTIM1_IN1,OCTOSPI1_DQS,USART2_RTS,UART4_RX,OCTOSPI1_IO3,SAI2_MCLK_B,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,,EVENTOUT,ADC12_INP1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,,TIM15_CH1,LPTIM1_IN2,,USART2_TX,SAI2_SCK_B,,,ETH_MDIO,,,,EVENTOUT,ADC12_INP14 -PortA,PA3,,TIM2_CH4,TIM5_CH4,OCTOSPI1_CLK,TIM15_CH2,SPI2_NSS/I2S2_WS,SAI1_SD_B,USART2_RX,,,,ETH_MII_COL,,,,EVENTOUT,ADC12_INP15 -PortA,PA4,,,TIM5_ETR,LPTIM2_CH1,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,SPI6_NSS,,,,,DCMI_HSYNC/PSSI_DE,,EVENTOUT,ADC12_INP18 -PortA,PA5,,TIM2_CH1,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,SPI6_SCK,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,,PSSI_D14,TIM2_ETR,EVENTOUT,ADC12_INP19/ADC12_INN18 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO/I2S1_SDI,OCTOSPI1_IO3,USART11_TX,SPI6_MISO,TIM13_CH1,,,,DCMI_PIXCLK/PSSI_PDCK,,EVENTOUT,ADC12_INP3 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SDO,,USART11_RX,SPI6_MOSI,TIM14_CH1,OCTOSPI1_IO2,ETH_MII_RX_DV/ETH_RMII_CRS_DV,FMC_SDNWE,FMC_NWE,,EVENTOUT,ADC12_INP7/ADC12_INN3 -PortA,PA8,MCO1,TIM1_CH1,,TIM8_BKIN2,I2C3_SCL,SPI1_RDY,,USART1_CK,,,USB_SOF,UART7_RX,FMC_NOE,DCMI_D3/PSSI_D3,,EVENTOUT, -PortA,PA9,,TIM1_CH2,,LPUART1_TX,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,,,ETH_MII_TX_ER,FMC_NWE,DCMI_D0/PSSI_D0,,EVENTOUT, -PortA,PA10,,TIM1_CH3,,LPUART1_RX,LPTIM2_IN2,,UCPD1_FRSTX,USART1_RX,,FDCAN2_TX,,,SDMMC1_D0,DCMI_D1/PSSI_D1,,EVENTOUT, -PortA,PA11,,TIM1_CH4,,LPUART1_CTS,,SPI2_NSS/I2S2_WS,UART4_RX,USART1_CTS/USART1_NSS,,FDCAN1_RX,USB_DM,,,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,LPUART1_RTS,,SPI2_SCK/I2S2_CK,UART4_TX,USART1_RTS,SAI2_FS_B,FDCAN1_TX,USB_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1,LPTIM3_IN2,,HDMI_CEC,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,SPI6_NSS,UART4_RTS,,,UART7_TX,FMC_NBL1,DCMI_D11/PSSI_D11,TIM2_ETR,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,OCTOSPI1_IO1,USART11_CK,UART4_CTS,,,ETH_MII_RXD2,,,LPTIM3_CH1,EVENTOUT,ADC12_INP9/ADC12_INN5 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,OCTOSPI1_IO0,,,,,ETH_MII_RXD3,,,LPTIM3_CH2,EVENTOUT,ADC12_INP5 -PortB,PB2,RTC_OUT2,,SAI1_D1,TIM8_CH4N,SPI1_RDY,LPTIM1_CH1,SAI1_SD_A,SPI3_MOSI/I2S3_SDO,,OCTOSPI1_CLK,OCTOSPI1_DQS,,SDMMC1_CMD,LPTIM5_ETR,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,I2C2_SDA,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,UART12_CTS/UART12_NSS,SPI6_SCK,SDMMC2_D2,CRS_SYNC,UART7_RX,,,LPTIM6_ETR,EVENTOUT, -PortB,PB4,NJTRST,TIM16_BKIN,TIM3_CH1,OCTOSPI1_CLK,LPTIM1_CH2,SPI1_MISO/I2S1_SDI,SPI3_MISO/I2S3_SDI,SPI2_NSS/I2S2_WS,SPI6_MISO,SDMMC2_D3,,UART7_TX,,DCMI_D7/PSSI_D7,,EVENTOUT, -PortB,PB5,,TIM17_BKIN,TIM3_CH2,OCTOSPI1_NCLK,I2C1_SMBA,SPI1_MOSI/I2S1_SDO,I2C4_SMBA,SPI3_MOSI/I2S3_SDO,SPI6_MOSI,FDCAN2_RX,,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10/PSSI_D10,UART5_RX,EVENTOUT, -PortB,PB6,,TIM16_CH1N,TIM4_CH1,I3C1_SCL,I2C1_SCL,HDMI_CEC,I2C4_SCL,USART1_TX,LPUART1_TX,FDCAN2_TX,OCTOSPI1_NCS,,FMC_SDNE1,DCMI_D5/PSSI_D5,UART5_TX,EVENTOUT, -PortB,PB7,,TIM17_CH1N,TIM4_CH2,I3C1_SDA,I2C1_SDA,,I2C4_SDA,USART1_RX,LPUART1_RX,FDCAN1_TX,SDMMC2_D5,SDMMC2_CKIN,FMC_NL,DCMI_VSYNC/PSSI_RDY,,EVENTOUT, -PortB,PB8,,TIM16_CH1,TIM4_CH3,I3C1_SCL,I2C1_SCL,SPI4_RDY,I2C4_SCL,SDMMC1_CKIN,UART4_RX,FDCAN1_RX,SDMMC2_D4,ETH_MII_TXD3,SDMMC1_D4,DCMI_D6/PSSI_D6,,EVENTOUT, -PortB,PB9,,TIM17_CH1,TIM4_CH4,I3C1_SDA,I2C1_SDA,SPI2_NSS/I2S2_WS,I2C4_SDA,SDMMC1_CDIR,UART4_TX,FDCAN1_TX,SDMMC2_D5,SDMMC2_CKIN,SDMMC1_D5,DCMI_D7/PSSI_D7,,EVENTOUT, -PortB,PB10,,TIM2_CH3,LPTIM3_CH1,LPTIM2_IN1,I2C2_SCL,SPI2_SCK/I2S2_CK,,USART3_TX,,OCTOSPI1_NCS,,ETH_MII_RX_ER,,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,LPTIM2_ETR,I2C2_SDA,SPI2_RDY,SPI4_RDY,USART3_RX,,,,ETH_MII_TX_EN/ETH_RMII_TX_EN,FMC_NBL1,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,OCTOSPI1_NCLK,I2C2_SDA,SPI2_NSS/I2S2_WS,UCPD1_FRSTX,USART3_CK,,FDCAN2_RX,,ETH_MII_TXD0/ETH_RMII_TXD0,,,UART5_RX,EVENTOUT, -PortB,PB13,,TIM1_CH1N,LPTIM3_IN1,LPTIM2_CH1,I2C2_SMBA,SPI2_SCK/I2S2_CK,,USART3_CTS/USART3_NSS,,FDCAN2_TX,,,SDMMC1_D0,,UART5_TX,EVENTOUT, -PortB,PB14,,TIM1_CH2N,TIM12_CH1,TIM8_CH2N,USART1_TX,SPI2_MISO/I2S2_SDI,,USART3_RTS,UART4_RTS,SDMMC2_D0,,,,,LPTIM3_ETR,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,TIM12_CH2,TIM8_CH3N,USART1_RX,SPI2_MOSI/I2S2_SDO,,USART11_CTS/USART11_NSS,UART4_CTS,SDMMC2_D1,OCTOSPI1_CLK,ETH_MII_TXD1/ETH_RMII_TXD1,,DCMI_D2/PSSI_D2,UART5_RX,EVENTOUT, -PortC,PC0,,TIM16_BKIN,,,,,SAI1_MCLK_A,SPI2_RDY,SAI2_FS_B,FMC_A25,OCTOSPI1_IO7,,FMC_SDNWE,,,EVENTOUT,ADC12_INP10 -PortC,PC1,TRACED0,,SAI1_D1,,,SPI2_MOSI/I2S2_SDO,SAI1_SD_A,USART11_RTS,SAI2_SD_A,SDMMC2_CK,OCTOSPI1_IO4,ETH_MDC,,,,EVENTOUT,ADC12_INP11/ADC12_INN10 -PortC,PC2,PWR_CSLEEP,TIM17_CH1,TIM4_CH4,,,SPI2_MISO/I2S2_SDI,OCTOSPI1_IO5,,,OCTOSPI1_IO2,,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC12_INP12/ADC12_INN11 -PortC,PC3,PWR_CSTOP,,SAI1_D3,LPTIM3_CH1,,SPI2_MOSI/I2S2_SDO,OCTOSPI1_IO6,,,OCTOSPI1_IO0,,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC12_INP13/ADC12_INN12 -PortC,PC4,,TIM2_CH4,SAI1_CK1,LPTIM2_ETR,,I2S1_MCK,,USART3_RX,,,,ETH_MII_RXD0/ETH_RMII_RXD0,FMC_SDNE0,,,EVENTOUT,ADC12_INP4 -PortC,PC5,,TIM1_CH4N,SAI1_D3,,PSSI_D15,,SAI1_FS_A,UART12_RTS,,,OCTOSPI1_DQS,ETH_MII_RXD1/ETH_RMII_RXD1,FMC_SDCKE0,,,EVENTOUT,ADC12_INP8/ADC12_INN4 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,I2S2_MCK,SAI1_SCK_A,USART6_TX,SDMMC1_D0DIR,FMC_NWAIT,SDMMC2_D6,OCTOSPI1_IO5,SDMMC1_D6,DCMI_D0/PSSI_D0,,EVENTOUT, -PortC,PC7,TRGIO,,TIM3_CH2,TIM8_CH2,,,I2S3_MCK,USART6_RX,SDMMC1_D123DIR,FMC_NE1,SDMMC2_D7,OCTOSPI1_IO6,SDMMC1_D7,DCMI_D1/PSSI_D1,,EVENTOUT, -PortC,PC8,TRACED1,,TIM3_CH3,TIM8_CH3,,,,USART6_CK,UART5_RTS,FMC_NE2/FMC_NCE,FMC_INT,FMC_ALE,SDMMC1_D0,DCMI_D2/PSSI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,AUDIOCLK,,,UART5_CTS,OCTOSPI1_IO0,,FMC_CLE,SDMMC1_D1,DCMI_D3/PSSI_D3,,EVENTOUT, -PortC,PC10,,,LPTIM3_ETR,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,OCTOSPI1_IO1,,ETH_MII_TXD0/ETH_RMII_TXD0,SDMMC1_D2,DCMI_D8/PSSI_D8,,EVENTOUT, -PortC,PC11,,,LPTIM3_IN1,,,,SPI3_MISO/I2S3_SDI,USART3_RX,UART4_RX,OCTOSPI1_NCS,,,SDMMC1_D3,DCMI_D4/PSSI_D4,,EVENTOUT, -PortC,PC12,TRACED3,,TIM15_CH1,,,SPI6_SCK,SPI3_MOSI/I2S3_SDO,USART3_CK,UART5_TX,,,,SDMMC1_CK,DCMI_D9/PSSI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,TIM8_CH4N,,,,,UART4_RX,FDCAN1_RX,,UART9_CTS,FMC_D2/FMC_AD2,,,EVENTOUT, -PortD,PD1,,,,,,,,,UART4_TX,FDCAN1_TX,,,FMC_D3/FMC_AD3,,,EVENTOUT, -PortD,PD2,TRACED2,,TIM3_ETR,,TIM15_BKIN,,,,UART5_RX,,,,SDMMC1_CMD,DCMI_D11/PSSI_D11,LPTIM4_ETR,EVENTOUT, -PortD,PD3,,,,,,SPI2_SCK/I2S2_CK,,USART2_CTS/USART2_NSS,,,,,FMC_CLK,DCMI_D5/PSSI_D5,,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS,,,OCTOSPI1_IO4,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,TIM1_CH4N,,,,SPI2_RDY,,USART2_TX,,FDCAN1_TX,OCTOSPI1_IO5,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,SAI1_D1,,,SPI3_MOSI/I2S3_SDO,SAI1_SD_A,USART2_RX,,,OCTOSPI1_IO6,SDMMC2_CK,FMC_NWAIT,DCMI_D10/PSSI_D10,,EVENTOUT, -PortD,PD7,,,,,,SPI1_MOSI/I2S1_SDO,,USART2_CK,,,OCTOSPI1_IO7,SDMMC2_CMD,FMC_NE1/FMC_NCE,,LPTIM4_OUT,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,FMC_D13/FMC_AD13,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,FDCAN2_RX,,,FMC_D14/FMC_AD14,,,EVENTOUT, -PortD,PD10,,,,LPTIM2_CH2,,,,USART3_CK,,,,,FMC_D15/FMC_AD15,,,EVENTOUT, -PortD,PD11,,,SAI1_CK1,LPTIM2_IN2,I2C4_SMBA,,,USART3_CTS/USART3_NSS,UART4_RX,OCTOSPI1_IO0,SAI2_SD_A,,FMC_A16/FMC_CLE,,,EVENTOUT, -PortD,PD12,,LPTIM1_IN1,TIM4_CH1,LPTIM2_IN1,I2C4_SCL,I3C1_SCL,SAI1_D1,USART3_RTS,UART4_TX,OCTOSPI1_IO1,SAI2_FS_A,,FMC_A17/FMC_ALE,DCMI_D12/PSSI_D12,,EVENTOUT, -PortD,PD13,,LPTIM1_CH1,TIM4_CH2,LPTIM2_CH1,I2C4_SDA,I3C1_SDA,,,,OCTOSPI1_IO3,SAI2_SCK_A,UART9_RTS,FMC_A18,DCMI_D13/PSSI_D13,LPTIM4_IN1,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,UART8_CTS,,,UART9_RX,FMC_D0/FMC_AD0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,UART8_RTS,,,UART9_TX,FMC_D1/FMC_AD1,,,EVENTOUT, -PortE,PE0,,LPTIM1_ETR,TIM4_ETR,LPTIM2_CH2,LPTIM2_ETR,,SPI3_RDY,,UART8_RX,FDCAN1_RX,SAI2_MCLK_A,,FMC_NBL0,DCMI_D2/PSSI_D2,,EVENTOUT, -PortE,PE1,,LPTIM1_IN2,,,,,,,UART8_TX,FDCAN1_TX,,,FMC_NBL1,DCMI_D3/PSSI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,LPTIM1_IN2,SAI1_CK1,,,SPI4_SCK,SAI1_MCLK_A,USART10_RX,UART8_TX,OCTOSPI1_IO2,,ETH_MII_TXD3,FMC_A23,DCMI_D3/PSSI_D3,,EVENTOUT, -PortE,PE3,TRACED0,,,,TIM15_BKIN,,SAI1_SD_B,USART10_TX,,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,SAI1_D2,,TIM15_CH1N,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4/PSSI_D4,,EVENTOUT, -PortE,PE5,TRACED2,,SAI1_CK2,,TIM15_CH1,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6/PSSI_D6,,EVENTOUT, -PortE,PE6,TRACED3,TIM1_BKIN2,SAI1_D1,,TIM15_CH2,SPI4_MOSI,SAI1_SD_A,,,,SAI2_MCLK_B,,FMC_A22,DCMI_D7/PSSI_D7,,EVENTOUT, -PortE,PE7,,TIM1_ETR,,,,,UART12_RTS,UART7_RX,,,OCTOSPI1_IO4,,FMC_D4/FMC_AD4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,,,,UART12_CTS/UART12_NSS,UART7_TX,,,OCTOSPI1_IO5,,FMC_D5/FMC_AD5,,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,,,,UART12_RX,UART7_RTS,,,OCTOSPI1_IO6,,FMC_D6/FMC_AD6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,,,,UART12_TX,UART7_CTS,,,OCTOSPI1_IO7,,FMC_D7/FMC_AD7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,,SPI1_RDY,SPI4_NSS,OCTOSPI1_NCS,,,,SAI2_SD_B,,FMC_D8/FMC_AD8,,,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,,,SPI4_SCK,,,,,SAI2_SCK_B,,FMC_D9/FMC_AD9,,,EVENTOUT, -PortE,PE13,,TIM1_CH3,,,,SPI4_MISO,,,,,SAI2_FS_B,,FMC_D10/FMC_AD10,,,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCLK_B,,FMC_D11/FMC_AD11,,,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,TIM1_CH4N,,,,USART10_CK,,,,,FMC_D12/FMC_AD12,,,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,LPTIM5_CH1,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,LPTIM5_CH2,,EVENTOUT, -PortF,PF2,,,LPTIM3_CH2,LPTIM3_IN2,I2C2_SMBA,,UART12_TX,USART11_CK,,,,,FMC_A2,LPTIM5_IN1,,EVENTOUT, -PortF,PF3,,,LPTIM3_IN1,,,,,USART11_TX,,,,,FMC_A3,LPTIM5_IN2,,EVENTOUT, -PortF,PF4,,,LPTIM3_ETR,,,,,USART11_RX,,,,,FMC_A4,,,EVENTOUT, -PortF,PF5,,,LPTIM3_CH1,,I2C4_SCL,I3C1_SCL,UART12_RX,USART11_CTS/USART11_NSS,,,,,FMC_A5,,LPTIM3_IN1,EVENTOUT, -PortF,PF6,,TIM16_CH1,,,,SPI5_NSS,SAI1_SD_B,UART7_RX,,,OCTOSPI1_IO3,,,LPTIM5_CH1,,EVENTOUT, -PortF,PF7,,TIM17_CH1,,,,SPI5_SCK,SAI1_MCLK_B,UART7_TX,,,OCTOSPI1_IO2,,,LPTIM5_CH2,,EVENTOUT, -PortF,PF8,,TIM16_CH1N,,,,SPI5_MISO,SAI1_SCK_B,UART7_RTS,,TIM13_CH1,OCTOSPI1_IO0,,,LPTIM5_IN1,,EVENTOUT, -PortF,PF9,,TIM17_CH1N,,,,SPI5_MOSI,SAI1_FS_B,UART7_CTS,,TIM14_CH1,OCTOSPI1_IO1,,,LPTIM5_IN2,,EVENTOUT, -PortF,PF10,,TIM16_BKIN,SAI1_D3,,PSSI_D15,,,,,OCTOSPI1_CLK,,,,DCMI_D11/PSSI_D11,,EVENTOUT, -PortF,PF11,,,,,,SPI5_MOSI,,,,OCTOSPI1_NCLK,SAI2_SD_B,,FMC_NRAS,DCMI_D12/PSSI_D12,LPTIM6_CH1,EVENTOUT,ADC1_INP2 -PortF,PF12,,,,,,,,,,,,,FMC_A6,,LPTIM6_CH2,EVENTOUT,ADC1_INP6/ADC1_INN2 -PortF,PF13,,,,,I2C4_SMBA,,,,,,,,FMC_A7,,LPTIM6_IN1,EVENTOUT,ADC2_INP2 -PortF,PF14,,,,,,,,,,,,,FMC_A8,,LPTIM6_IN2,EVENTOUT,ADC2_INP6/ADC2_INN2 -PortF,PF15,,,,,I2C4_SDA,I3C1_SDA,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,UART9_RX,FMC_A10,,LPTIM4_IN1,EVENTOUT, -PortG,PG1,,,,,,,,SPI2_MOSI/I2S2_SDO,,,,UART9_TX,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,TIM8_BKIN,,,,UART12_RX,,,,,FMC_A12,,LPTIM6_ETR,EVENTOUT, -PortG,PG3,,,,TIM8_BKIN2,,,,UART12_TX,,,,,FMC_A13,LPTIM5_ETR,,EVENTOUT, -PortG,PG4,,TIM1_BKIN2,,,,,,,,,,,FMC_A14/FMC_BA0,,LPTIM4_ETR,EVENTOUT, -PortG,PG5,,TIM1_ETR,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,TIM17_BKIN,,I3C1_SDA,I2C4_SDA,SPI1_RDY,,,,,OCTOSPI1_NCS,UCPD1_FRSTX,FMC_NE3,DCMI_D12/PSSI_D12,,EVENTOUT, -PortG,PG7,,,SAI1_CK2,I3C1_SCL,I2C4_SCL,,SAI1_MCLK_A,USART6_CK,,,,UCPD1_FRSTX,FMC_INT,DCMI_D13/PSSI_D13,,EVENTOUT, -PortG,PG8,,,,TIM8_ETR,,SPI6_NSS,,USART6_RTS,,,,ETH_PPS_OUT,FMC_SDCLK,,,EVENTOUT, -PortG,PG9,,,,,,SPI1_MISO/I2S1_SDI,,USART6_RX,,OCTOSPI1_IO6,SAI2_FS_B,SDMMC2_D0,FMC_NE2/FMC_NCE,DCMI_VSYNC/PSSI_RDY,,EVENTOUT, -PortG,PG10,,,,,,SPI1_NSS/I2S1_WS,,,,,SAI2_SD_B,SDMMC2_D1,FMC_NE3,DCMI_D2/PSSI_D2,,EVENTOUT, -PortG,PG11,,LPTIM1_IN2,,,,SPI1_SCK/I2S1_CK,USART10_RX,USART11_RTS,,,SDMMC2_D2,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DCMI_D3/PSSI_D3,,EVENTOUT, -PortG,PG12,,LPTIM1_IN1,,,PSSI_D15,SPI6_MISO,USART10_TX,USART6_RTS,,,SDMMC2_D3,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_NE4,DCMI_D11/PSSI_D11,LPTIM5_CH1,EVENTOUT, -PortG,PG13,TRACED0,LPTIM1_CH1,,,,SPI6_SCK,USART10_CTS/USART10_NSS,USART6_CTS/USART6_NSS,,,SDMMC2_D6,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,LPTIM5_CH2,,EVENTOUT, -PortG,PG14,TRACED1,LPTIM1_ETR,,,LPTIM1_CH2,SPI6_MOSI,USART10_RTS,USART6_TX,,OCTOSPI1_IO7,SDMMC2_D7,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,LPTIM5_IN1,,EVENTOUT, -PortG,PG15,,,,,,SPI4_RDY,USART10_CK,USART6_CTS/USART6_NSS,,,,,FMC_NCAS,DCMI_D13/PSSI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,LPTIM1_IN2,,,,,,,,OCTOSPI1_IO4,SAI2_SCK_B,ETH_MII_CRS,FMC_SDCKE0,,,EVENTOUT, -PortH,PH3,,,,,,,,,,OCTOSPI1_IO5,SAI2_MCLK_B,ETH_MII_COL,FMC_SDNE0,,,EVENTOUT, -PortH,PH4,,,,,I2C2_SCL,SPI5_RDY,,SPI6_RDY,,,,,,PSSI_D14,,EVENTOUT, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,SPI6_RDY,,,,,FMC_SDNWE,,,EVENTOUT, -PortH,PH6,,TIM1_CH3N,TIM12_CH1,TIM8_CH1,I2C2_SMBA,SPI5_SCK,,,,,,ETH_MII_RXD2,FMC_SDNE1,DCMI_D8/PSSI_D8,,EVENTOUT, -PortH,PH7,,TIM1_CH3,,TIM8_CH1N,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9/PSSI_D9,,EVENTOUT, -PortH,PH8,,TIM1_CH2N,TIM5_ETR,TIM8_CH2,I2C3_SDA,SPI5_MOSI,,,,,,,,DCMI_HSYNC/PSSI_DE,,EVENTOUT, -PortH,PH9,,TIM1_CH2,TIM12_CH2,TIM8_CH2N,I2C3_SMBA,SPI5_NSS,,,,,,,,DCMI_D0/PSSI_D0,,EVENTOUT, -PortH,PH10,,TIM1_CH1N,TIM5_CH1,TIM8_CH3,I2C4_SMBA,SPI5_RDY,,,,,,,,DCMI_D1/PSSI_D1,,EVENTOUT, -PortH,PH11,,TIM1_CH1,TIM5_CH2,TIM8_CH3N,I2C4_SCL,I3C1_SCL,,,,,,,,DCMI_D2/PSSI_D2,,EVENTOUT, -PortH,PH12,,TIM1_BKIN,TIM5_CH3,TIM8_BKIN,I2C4_SDA,I3C1_SDA,,,,,TIM8_CH4N,,,DCMI_D3/PSSI_D3,,EVENTOUT, -PortH,PH13,,LPTIM1_IN2,,TIM8_CH1N,,,,UART8_TX,UART4_TX,FDCAN1_TX,,,,DCMI_D3/PSSI_D3,,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,UART4_RX,FDCAN1_RX,,,,DCMI_D4/PSSI_D4,,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,,DCMI_D11/PSSI_D11,,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,,,,,DCMI_D13/PSSI_D13,,EVENTOUT, -PortI,PI1,,,,TIM8_BKIN2,,SPI2_SCK/I2S2_CK,,,,,,,,DCMI_D8/PSSI_D8,,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO/I2S2_SDI,,,,,,,,DCMI_D9/PSSI_D9,,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SDO,,,,,,,,DCMI_D10/PSSI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,SPI2_RDY,,,SAI2_MCLK_A,,,DCMI_D5/PSSI_D5,,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,SAI2_SCK_A,,,DCMI_VSYNC/PSSI_RDY,,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,SAI2_SD_A,,,DCMI_D6/PSSI_D6,,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,SAI2_FS_A,,,DCMI_D7/PSSI_D7,,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,UART4_RX,FDCAN1_RX,,,,,,EVENTOUT, -PortI,PI10,,,,,,,,,,FDCAN1_RX,,ETH_MII_RX_ER,,PSSI_D14,,EVENTOUT, -PortI,PI11,,,,,,,,,,,,,,PSSI_D15,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,LPTIM1/TIM1/2/16/17,LPTIM3/PDM_SAI1/TIM3/4/5/12/15,I3C1/LPTIM2/3/LPUART1/OCTOSPI/TIM1/8,CEC/DCMI/I2C1/2/3/4/LPTIM1/2/SPI1/I2S1/TIM15/USART1,CEC/I3C1/LPTIM1/SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/6,I2C4/OCTOSPI/SAI1/SPI3/I2S3/SPI4/UART4/12/USART10/USB_PD,SDMMC1/SPI2/I2S2/SPI3/I2S3/SPI6/UART7/8/12/USART1/2/3/6/10/11,LPUART1/SAI2/SDMMC1/SPI6/UART4/5/8,FDCAN1/2/FMC[NAND16]/FMC[NORmux]/FMC[NOR_RAM]/OCTOSPI/SDMMC2/TIM13/14,CRS/FMC[NAND16]/OCTOSPI/SAI2/SDMMC2/TIM8/USB_,ETH[MII/RMII]/FMC[NAND16]/OCTOSPI/SDMMC2/UART7/9/USB_PD,FMC[NAND16]/FMC[NORmux]/FMC[NOR_RAM]/FMC[SDRAM_16bit]/SDMMC1,DCMI/FMC[NAND16]/FMC[NORmux]/FMC[NOR_RAM]/LPTIM5,LPTIM3/4/5/6/TIM2/UART5,SYS ,ADC +PortA,PA0 , ,TIM2_CH1 ,TIM5_CH1 ,TIM8_ETR ,TIM15_BKIN ,SPI6_NSS ,SPI3_RDY ,USART2_CTS/USART2_NSS ,UART4_TX ,SDMMC2_CMD ,SAI2_SD_B ,ETH_MII_CRS , , ,TIM2_ETR ,EVENTOUT,ADC12_INP0/ADC12_INN1 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , ,TIM15_CH1N ,LPTIM1_IN1 ,OCTOSPI1_DQS ,USART2_RTS ,UART4_RX ,OCTOSPI1_IO3 ,SAI2_MCLK_B ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK , , , ,EVENTOUT,ADC12_INP1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 , ,TIM15_CH1 ,LPTIM1_IN2 , ,USART2_TX ,SAI2_SCK_B , , ,ETH_MDIO , , , ,EVENTOUT,ADC12_INP14 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,OCTOSPI1_CLK ,TIM15_CH2 ,SPI2_NSS/I2S2_WS ,SAI1_SD_B ,USART2_RX , , , ,ETH_MII_COL , , , ,EVENTOUT,ADC12_INP15 +PortA,PA4 , , ,TIM5_ETR ,LPTIM2_CH1 , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK ,SPI6_NSS , , , , ,DCMI_HSYNC/PSSI_DE , ,EVENTOUT,ADC12_INP18 +PortA,PA5 , ,TIM2_CH1 , ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , ,SPI6_SCK , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,PSSI_D14 ,TIM2_ETR ,EVENTOUT,ADC12_INP19/ADC12_INN18 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,SPI1_MISO/I2S1_SDI ,OCTOSPI1_IO3 ,USART11_TX ,SPI6_MISO ,TIM13_CH1 , , , ,DCMI_PIXCLK/PSSI_PDCK , ,EVENTOUT,ADC12_INP3 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,SPI1_MOSI/I2S1_SDO , ,USART11_RX ,SPI6_MOSI ,TIM14_CH1 ,OCTOSPI1_IO2 ,ETH_MII_RX_DV/ETH_RMII_CRS_DV ,FMC_SDNWE ,FMC_NWE , ,EVENTOUT,ADC12_INP7/ADC12_INN3 +PortA,PA8 ,MCO1 ,TIM1_CH1 , ,TIM8_BKIN2 ,I2C3_SCL ,SPI1_RDY , ,USART1_CK , , ,USB_SOF ,UART7_RX ,FMC_NOE ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , ,LPUART1_TX ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , , , ,ETH_MII_TX_ER ,FMC_NWE ,DCMI_D0/PSSI_D0 , ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , ,LPUART1_RX ,LPTIM2_IN2 , ,UCPD1_FRSTX ,USART1_RX , ,FDCAN2_TX , , ,SDMMC1_D0 ,DCMI_D1/PSSI_D1 , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , ,LPUART1_CTS , ,SPI2_NSS/I2S2_WS ,UART4_RX ,USART1_CTS/USART1_NSS , ,FDCAN1_RX ,USB_DM , , , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , ,LPUART1_RTS , ,SPI2_SCK/I2S2_CK ,UART4_TX ,USART1_RTS ,SAI2_FS_B ,FDCAN1_TX ,USB_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,LPTIM3_IN2 , ,HDMI_CEC ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,SPI6_NSS ,UART4_RTS , , ,UART7_TX ,FMC_NBL1 ,DCMI_D11/PSSI_D11 ,TIM2_ETR ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , , ,OCTOSPI1_IO1 ,USART11_CK ,UART4_CTS , , ,ETH_MII_RXD2 , , ,LPTIM3_CH1 ,EVENTOUT,ADC12_INP9/ADC12_INN5 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,OCTOSPI1_IO0 , , , , ,ETH_MII_RXD3 , , ,LPTIM3_CH2 ,EVENTOUT,ADC12_INP5 +PortB,PB2 ,RTC_OUT2 , ,SAI1_D1 ,TIM8_CH4N ,SPI1_RDY ,LPTIM1_CH1 ,SAI1_SD_A ,SPI3_MOSI/I2S3_SDO , ,OCTOSPI1_CLK ,OCTOSPI1_DQS , ,SDMMC1_CMD ,LPTIM5_ETR , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , ,I2C2_SDA ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK ,UART12_CTS/UART12_NSS ,SPI6_SCK ,SDMMC2_D2 ,CRS_SYNC ,UART7_RX , , ,LPTIM6_ETR ,EVENTOUT, +PortB,PB4 ,NJTRST ,TIM16_BKIN ,TIM3_CH1 ,OCTOSPI1_CLK ,LPTIM1_CH2 ,SPI1_MISO/I2S1_SDI ,SPI3_MISO/I2S3_SDI ,SPI2_NSS/I2S2_WS ,SPI6_MISO ,SDMMC2_D3 , ,UART7_TX , ,DCMI_D7/PSSI_D7 , ,EVENTOUT, +PortB,PB5 , ,TIM17_BKIN ,TIM3_CH2 ,OCTOSPI1_NCLK ,I2C1_SMBA ,SPI1_MOSI/I2S1_SDO ,I2C4_SMBA ,SPI3_MOSI/I2S3_SDO ,SPI6_MOSI ,FDCAN2_RX , ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10/PSSI_D10 ,UART5_RX ,EVENTOUT, +PortB,PB6 , ,TIM16_CH1N ,TIM4_CH1 ,I3C1_SCL ,I2C1_SCL ,HDMI_CEC ,I2C4_SCL ,USART1_TX ,LPUART1_TX ,FDCAN2_TX ,OCTOSPI1_NCS , ,FMC_SDNE1 ,DCMI_D5/PSSI_D5 ,UART5_TX ,EVENTOUT, +PortB,PB7 , ,TIM17_CH1N ,TIM4_CH2 ,I3C1_SDA ,I2C1_SDA , ,I2C4_SDA ,USART1_RX ,LPUART1_RX ,FDCAN1_TX ,SDMMC2_D5 ,SDMMC2_CKIN ,FMC_NL ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortB,PB8 , ,TIM16_CH1 ,TIM4_CH3 ,I3C1_SCL ,I2C1_SCL ,SPI4_RDY ,I2C4_SCL ,SDMMC1_CKIN ,UART4_RX ,FDCAN1_RX ,SDMMC2_D4 ,ETH_MII_TXD3 ,SDMMC1_D4 ,DCMI_D6/PSSI_D6 , ,EVENTOUT, +PortB,PB9 , ,TIM17_CH1 ,TIM4_CH4 ,I3C1_SDA ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,I2C4_SDA ,SDMMC1_CDIR ,UART4_TX ,FDCAN1_TX ,SDMMC2_D5 ,SDMMC2_CKIN ,SDMMC1_D5 ,DCMI_D7/PSSI_D7 , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 ,LPTIM3_CH1 ,LPTIM2_IN1 ,I2C2_SCL ,SPI2_SCK/I2S2_CK , ,USART3_TX , ,OCTOSPI1_NCS , ,ETH_MII_RX_ER , , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , ,LPTIM2_ETR ,I2C2_SDA ,SPI2_RDY ,SPI4_RDY ,USART3_RX , , , ,ETH_MII_TX_EN/ETH_RMII_TX_EN ,FMC_NBL1 , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,OCTOSPI1_NCLK ,I2C2_SDA ,SPI2_NSS/I2S2_WS ,UCPD1_FRSTX ,USART3_CK , ,FDCAN2_RX , ,ETH_MII_TXD0/ETH_RMII_TXD0 , , ,UART5_RX ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N ,LPTIM3_IN1 ,LPTIM2_CH1 ,I2C2_SMBA ,SPI2_SCK/I2S2_CK , ,USART3_CTS/USART3_NSS , ,FDCAN2_TX , , ,SDMMC1_D0 , ,UART5_TX ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N ,TIM12_CH1 ,TIM8_CH2N ,USART1_TX ,SPI2_MISO/I2S2_SDI , ,USART3_RTS ,UART4_RTS ,SDMMC2_D0 , , , , ,LPTIM3_ETR ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N ,TIM12_CH2 ,TIM8_CH3N ,USART1_RX ,SPI2_MOSI/I2S2_SDO , ,USART11_CTS/USART11_NSS ,UART4_CTS ,SDMMC2_D1 ,OCTOSPI1_CLK ,ETH_MII_TXD1/ETH_RMII_TXD1 , ,DCMI_D2/PSSI_D2 ,UART5_RX ,EVENTOUT, +PortC,PC0 , ,TIM16_BKIN , , , , ,SAI1_MCLK_A ,SPI2_RDY ,SAI2_FS_B ,FMC_A25 ,OCTOSPI1_IO7 , ,FMC_SDNWE , , ,EVENTOUT,ADC12_INP10 +PortC,PC1 ,TRACED0 , ,SAI1_D1 , , ,SPI2_MOSI/I2S2_SDO ,SAI1_SD_A ,USART11_RTS ,SAI2_SD_A ,SDMMC2_CK ,OCTOSPI1_IO4 ,ETH_MDC , , , ,EVENTOUT,ADC12_INP11/ADC12_INN10 +PortC,PC2 ,PWR_CSLEEP ,TIM17_CH1 ,TIM4_CH4 , , ,SPI2_MISO/I2S2_SDI ,OCTOSPI1_IO5 , , ,OCTOSPI1_IO2 , ,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_INP12/ADC12_INN11 +PortC,PC3 ,PWR_CSTOP , ,SAI1_D3 ,LPTIM3_CH1 , ,SPI2_MOSI/I2S2_SDO ,OCTOSPI1_IO6 , , ,OCTOSPI1_IO0 , ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_INP13/ADC12_INN12 +PortC,PC4 , ,TIM2_CH4 ,SAI1_CK1 ,LPTIM2_ETR , ,I2S1_MCK , ,USART3_RX , , , ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_INP4 +PortC,PC5 , ,TIM1_CH4N ,SAI1_D3 , ,PSSI_D15 , ,SAI1_FS_A ,UART12_RTS , , ,OCTOSPI1_DQS ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_INP8/ADC12_INN4 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 , ,I2S2_MCK ,SAI1_SCK_A ,USART6_TX ,SDMMC1_D0DIR ,FMC_NWAIT ,SDMMC2_D6 ,OCTOSPI1_IO5 ,SDMMC1_D6 ,DCMI_D0/PSSI_D0 , ,EVENTOUT, +PortC,PC7 ,TRGIO , ,TIM3_CH2 ,TIM8_CH2 , , ,I2S3_MCK ,USART6_RX ,SDMMC1_D123DIR ,FMC_NE1 ,SDMMC2_D7 ,OCTOSPI1_IO6 ,SDMMC1_D7 ,DCMI_D1/PSSI_D1 , ,EVENTOUT, +PortC,PC8 ,TRACED1 , ,TIM3_CH3 ,TIM8_CH3 , , , ,USART6_CK ,UART5_RTS ,FMC_NE2/FMC_NCE ,FMC_INT ,FMC_ALE ,SDMMC1_D0 ,DCMI_D2/PSSI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,AUDIOCLK , , ,UART5_CTS ,OCTOSPI1_IO0 , ,FMC_CLE ,SDMMC1_D1 ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortC,PC10, , ,LPTIM3_ETR , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,OCTOSPI1_IO1 , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,SDMMC1_D2 ,DCMI_D8/PSSI_D8 , ,EVENTOUT, +PortC,PC11, , ,LPTIM3_IN1 , , , ,SPI3_MISO/I2S3_SDI ,USART3_RX ,UART4_RX ,OCTOSPI1_NCS , , ,SDMMC1_D3 ,DCMI_D4/PSSI_D4 , ,EVENTOUT, +PortC,PC12,TRACED3 , ,TIM15_CH1 , , ,SPI6_SCK ,SPI3_MOSI/I2S3_SDO ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9/PSSI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,TIM8_CH4N , , , , ,UART4_RX ,FDCAN1_RX , ,UART9_CTS ,FMC_D2/FMC_AD2 , , ,EVENTOUT, +PortD,PD1 , , , , , , , , ,UART4_TX ,FDCAN1_TX , , ,FMC_D3/FMC_AD3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR , ,TIM15_BKIN , , , ,UART5_RX , , , ,SDMMC1_CMD ,DCMI_D11/PSSI_D11 ,LPTIM4_ETR ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_SCK/I2S2_CK , ,USART2_CTS/USART2_NSS , , , , ,FMC_CLK ,DCMI_D5/PSSI_D5 , ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS , , ,OCTOSPI1_IO4 , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , ,TIM1_CH4N , , , ,SPI2_RDY , ,USART2_TX , ,FDCAN1_TX ,OCTOSPI1_IO5 , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , ,SAI1_D1 , , ,SPI3_MOSI/I2S3_SDO ,SAI1_SD_A ,USART2_RX , , ,OCTOSPI1_IO6 ,SDMMC2_CK ,FMC_NWAIT ,DCMI_D10/PSSI_D10 , ,EVENTOUT, +PortD,PD7 , , , , , ,SPI1_MOSI/I2S1_SDO , ,USART2_CK , , ,OCTOSPI1_IO7 ,SDMMC2_CMD ,FMC_NE1/FMC_NCE , ,LPTIM4_OUT ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , ,FMC_D13/FMC_AD13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , ,FDCAN2_RX , , ,FMC_D14/FMC_AD14 , , ,EVENTOUT, +PortD,PD10, , , ,LPTIM2_CH2 , , , ,USART3_CK , , , , ,FMC_D15/FMC_AD15 , , ,EVENTOUT, +PortD,PD11, , ,SAI1_CK1 ,LPTIM2_IN2 ,I2C4_SMBA , , ,USART3_CTS/USART3_NSS ,UART4_RX ,OCTOSPI1_IO0 ,SAI2_SD_A , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, ,LPTIM1_IN1 ,TIM4_CH1 ,LPTIM2_IN1 ,I2C4_SCL ,I3C1_SCL ,SAI1_D1 ,USART3_RTS ,UART4_TX ,OCTOSPI1_IO1 ,SAI2_FS_A , ,FMC_A17/FMC_ALE ,DCMI_D12/PSSI_D12 , ,EVENTOUT, +PortD,PD13, ,LPTIM1_CH1 ,TIM4_CH2 ,LPTIM2_CH1 ,I2C4_SDA ,I3C1_SDA , , , ,OCTOSPI1_IO3 ,SAI2_SCK_A ,UART9_RTS ,FMC_A18 ,DCMI_D13/PSSI_D13 ,LPTIM4_IN1 ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , ,UART8_CTS , , ,UART9_RX ,FMC_D0/FMC_AD0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , ,UART8_RTS , , ,UART9_TX ,FMC_D1/FMC_AD1 , , ,EVENTOUT, +PortE,PE0 , ,LPTIM1_ETR ,TIM4_ETR ,LPTIM2_CH2 ,LPTIM2_ETR , ,SPI3_RDY , ,UART8_RX ,FDCAN1_RX ,SAI2_MCLK_A , ,FMC_NBL0 ,DCMI_D2/PSSI_D2 , ,EVENTOUT, +PortE,PE1 , ,LPTIM1_IN2 , , , , , , ,UART8_TX ,FDCAN1_TX , , ,FMC_NBL1 ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK ,LPTIM1_IN2 ,SAI1_CK1 , , ,SPI4_SCK ,SAI1_MCLK_A ,USART10_RX ,UART8_TX ,OCTOSPI1_IO2 , ,ETH_MII_TXD3 ,FMC_A23 ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , ,TIM15_BKIN , ,SAI1_SD_B ,USART10_TX , , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,SAI1_D2 , ,TIM15_CH1N ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4/PSSI_D4 , ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,SAI1_CK2 , ,TIM15_CH1 ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6/PSSI_D6 , ,EVENTOUT, +PortE,PE6 ,TRACED3 ,TIM1_BKIN2 ,SAI1_D1 , ,TIM15_CH2 ,SPI4_MOSI ,SAI1_SD_A , , , ,SAI2_MCLK_B , ,FMC_A22 ,DCMI_D7/PSSI_D7 , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,UART12_RTS ,UART7_RX , , ,OCTOSPI1_IO4 , ,FMC_D4/FMC_AD4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,UART12_CTS/UART12_NSS ,UART7_TX , , ,OCTOSPI1_IO5 , ,FMC_D5/FMC_AD5 , , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,UART12_RX ,UART7_RTS , , ,OCTOSPI1_IO6 , ,FMC_D6/FMC_AD6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , ,UART12_TX ,UART7_CTS , , ,OCTOSPI1_IO7 , ,FMC_D7/FMC_AD7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , ,SPI1_RDY ,SPI4_NSS ,OCTOSPI1_NCS , , , ,SAI2_SD_B , ,FMC_D8/FMC_AD8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9/FMC_AD9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10/FMC_AD10 , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCLK_B , ,FMC_D11/FMC_AD11 , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , ,TIM1_CH4N , , , ,USART10_CK , , , , ,FMC_D12/FMC_AD12 , , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 ,LPTIM5_CH1 , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 ,LPTIM5_CH2 , ,EVENTOUT, +PortF,PF2 , , ,LPTIM3_CH2 ,LPTIM3_IN2 ,I2C2_SMBA , ,UART12_TX ,USART11_CK , , , , ,FMC_A2 ,LPTIM5_IN1 , ,EVENTOUT, +PortF,PF3 , , ,LPTIM3_IN1 , , , , ,USART11_TX , , , , ,FMC_A3 ,LPTIM5_IN2 , ,EVENTOUT, +PortF,PF4 , , ,LPTIM3_ETR , , , , ,USART11_RX , , , , ,FMC_A4 , , ,EVENTOUT, +PortF,PF5 , , ,LPTIM3_CH1 , ,I2C4_SCL ,I3C1_SCL ,UART12_RX ,USART11_CTS/USART11_NSS , , , , ,FMC_A5 , ,LPTIM3_IN1 ,EVENTOUT, +PortF,PF6 , ,TIM16_CH1 , , , ,SPI5_NSS ,SAI1_SD_B ,UART7_RX , , ,OCTOSPI1_IO3 , , ,LPTIM5_CH1 , ,EVENTOUT, +PortF,PF7 , ,TIM17_CH1 , , , ,SPI5_SCK ,SAI1_MCLK_B ,UART7_TX , , ,OCTOSPI1_IO2 , , ,LPTIM5_CH2 , ,EVENTOUT, +PortF,PF8 , ,TIM16_CH1N , , , ,SPI5_MISO ,SAI1_SCK_B ,UART7_RTS , ,TIM13_CH1 ,OCTOSPI1_IO0 , , ,LPTIM5_IN1 , ,EVENTOUT, +PortF,PF9 , ,TIM17_CH1N , , , ,SPI5_MOSI ,SAI1_FS_B ,UART7_CTS , ,TIM14_CH1 ,OCTOSPI1_IO1 , , ,LPTIM5_IN2 , ,EVENTOUT, +PortF,PF10, ,TIM16_BKIN ,SAI1_D3 , ,PSSI_D15 , , , , ,OCTOSPI1_CLK , , , ,DCMI_D11/PSSI_D11 , ,EVENTOUT, +PortF,PF11, , , , , ,SPI5_MOSI , , , ,OCTOSPI1_NCLK ,SAI2_SD_B , ,FMC_NRAS ,DCMI_D12/PSSI_D12 ,LPTIM6_CH1 ,EVENTOUT,ADC1_INP2 +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , ,LPTIM6_CH2 ,EVENTOUT,ADC1_INP6/ADC1_INN2 +PortF,PF13, , , , ,I2C4_SMBA , , , , , , , ,FMC_A7 , ,LPTIM6_IN1 ,EVENTOUT,ADC2_INP2 +PortF,PF14, , , , , , , , , , , , ,FMC_A8 , ,LPTIM6_IN2 ,EVENTOUT,ADC2_INP6/ADC2_INN2 +PortF,PF15, , , , ,I2C4_SDA ,I3C1_SDA , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , ,UART9_RX ,FMC_A10 , ,LPTIM4_IN1 ,EVENTOUT, +PortG,PG1 , , , , , , , ,SPI2_MOSI/I2S2_SDO , , , ,UART9_TX ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , ,TIM8_BKIN , , , ,UART12_RX , , , , ,FMC_A12 , ,LPTIM6_ETR ,EVENTOUT, +PortG,PG3 , , , ,TIM8_BKIN2 , , , ,UART12_TX , , , , ,FMC_A13 ,LPTIM5_ETR , ,EVENTOUT, +PortG,PG4 , ,TIM1_BKIN2 , , , , , , , , , , ,FMC_A14/FMC_BA0 , ,LPTIM4_ETR ,EVENTOUT, +PortG,PG5 , ,TIM1_ETR , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , ,TIM17_BKIN , ,I3C1_SDA ,I2C4_SDA ,SPI1_RDY , , , , ,OCTOSPI1_NCS ,UCPD1_FRSTX ,FMC_NE3 ,DCMI_D12/PSSI_D12 , ,EVENTOUT, +PortG,PG7 , , ,SAI1_CK2 ,I3C1_SCL ,I2C4_SCL , ,SAI1_MCLK_A ,USART6_CK , , , ,UCPD1_FRSTX ,FMC_INT ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortG,PG8 , , , ,TIM8_ETR , ,SPI6_NSS , ,USART6_RTS , , , ,ETH_PPS_OUT ,FMC_SDCLK , , ,EVENTOUT, +PortG,PG9 , , , , , ,SPI1_MISO/I2S1_SDI , ,USART6_RX , ,OCTOSPI1_IO6 ,SAI2_FS_B ,SDMMC2_D0 ,FMC_NE2/FMC_NCE ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortG,PG10, , , , , ,SPI1_NSS/I2S1_WS , , , , ,SAI2_SD_B ,SDMMC2_D1 ,FMC_NE3 ,DCMI_D2/PSSI_D2 , ,EVENTOUT, +PortG,PG11, ,LPTIM1_IN2 , , , ,SPI1_SCK/I2S1_CK ,USART10_RX ,USART11_RTS , , ,SDMMC2_D2 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortG,PG12, ,LPTIM1_IN1 , , ,PSSI_D15 ,SPI6_MISO ,USART10_TX ,USART6_RTS , , ,SDMMC2_D3 ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_NE4 ,DCMI_D11/PSSI_D11 ,LPTIM5_CH1 ,EVENTOUT, +PortG,PG13,TRACED0 ,LPTIM1_CH1 , , , ,SPI6_SCK ,USART10_CTS/USART10_NSS ,USART6_CTS/USART6_NSS , , ,SDMMC2_D6 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 ,LPTIM5_CH2 , ,EVENTOUT, +PortG,PG14,TRACED1 ,LPTIM1_ETR , , ,LPTIM1_CH2 ,SPI6_MOSI ,USART10_RTS ,USART6_TX , ,OCTOSPI1_IO7 ,SDMMC2_D7 ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 ,LPTIM5_IN1 , ,EVENTOUT, +PortG,PG15, , , , , ,SPI4_RDY ,USART10_CK ,USART6_CTS/USART6_NSS , , , , ,FMC_NCAS ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , ,LPTIM1_IN2 , , , , , , , ,OCTOSPI1_IO4 ,SAI2_SCK_B ,ETH_MII_CRS ,FMC_SDCKE0 , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , ,OCTOSPI1_IO5 ,SAI2_MCLK_B ,ETH_MII_COL ,FMC_SDNE0 , , ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL ,SPI5_RDY , ,SPI6_RDY , , , , , ,PSSI_D14 , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , ,SPI6_RDY , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , ,TIM1_CH3N ,TIM12_CH1 ,TIM8_CH1 ,I2C2_SMBA ,SPI5_SCK , , , , , ,ETH_MII_RXD2 ,FMC_SDNE1 ,DCMI_D8/PSSI_D8 , ,EVENTOUT, +PortH,PH7 , ,TIM1_CH3 , ,TIM8_CH1N ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9/PSSI_D9 , ,EVENTOUT, +PortH,PH8 , ,TIM1_CH2N ,TIM5_ETR ,TIM8_CH2 ,I2C3_SDA ,SPI5_MOSI , , , , , , , ,DCMI_HSYNC/PSSI_DE , ,EVENTOUT, +PortH,PH9 , ,TIM1_CH2 ,TIM12_CH2 ,TIM8_CH2N ,I2C3_SMBA ,SPI5_NSS , , , , , , , ,DCMI_D0/PSSI_D0 , ,EVENTOUT, +PortH,PH10, ,TIM1_CH1N ,TIM5_CH1 ,TIM8_CH3 ,I2C4_SMBA ,SPI5_RDY , , , , , , , ,DCMI_D1/PSSI_D1 , ,EVENTOUT, +PortH,PH11, ,TIM1_CH1 ,TIM5_CH2 ,TIM8_CH3N ,I2C4_SCL ,I3C1_SCL , , , , , , , ,DCMI_D2/PSSI_D2 , ,EVENTOUT, +PortH,PH12, ,TIM1_BKIN ,TIM5_CH3 ,TIM8_BKIN ,I2C4_SDA ,I3C1_SDA , , , , ,TIM8_CH4N , , ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortH,PH13, ,LPTIM1_IN2 , ,TIM8_CH1N , , , ,UART8_TX ,UART4_TX ,FDCAN1_TX , , , ,DCMI_D3/PSSI_D3 , ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , ,UART4_RX ,FDCAN1_RX , , , ,DCMI_D4/PSSI_D4 , ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , , ,DCMI_D11/PSSI_D11 , ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4 , , ,SPI2_NSS/I2S2_WS , , , , , , , ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortI,PI1 , , , ,TIM8_BKIN2 , ,SPI2_SCK/I2S2_CK , , , , , , , ,DCMI_D8/PSSI_D8 , ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO/I2S2_SDI , , , , , , , ,DCMI_D9/PSSI_D9 , ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SDO , , , , , , , ,DCMI_D10/PSSI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , ,SPI2_RDY , , ,SAI2_MCLK_A , , ,DCMI_D5/PSSI_D5 , ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , , ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , , ,DCMI_D6/PSSI_D6 , ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , , ,DCMI_D7/PSSI_D7 , ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , ,UART4_RX ,FDCAN1_RX , , , , , ,EVENTOUT, +PortI,PI10, , , , , , , , , ,FDCAN1_RX , ,ETH_MII_RX_ER , ,PSSI_D14 , ,EVENTOUT, +PortI,PI11, , , , , , , , , , , , , ,PSSI_D15 , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32h723_af.csv b/ports/stm32/boards/stm32h723_af.csv index 701e9381b209f..71873e670b3d0 100644 --- a/ports/stm32/boards/stm32h723_af.csv +++ b/ports/stm32/boards/stm32h723_af.csv @@ -1,116 +1,116 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,FMC/LPTIM1/SAI4/TIM16/17/TIM1x/TIM2x,FDCAN3/PDM_SAI1/TIM3/4/5/12/15,DFSDM1/LCD/LPTIM2/3/4/5/LPUART1/OCTOSPIM_P1/2/TIM8,CEC/DCMI/PSSI/DFSDM1/I2C1/2/3/4/5/LPTIM2/OCTOSPIM_P1/TIM15/USART1/10,CEC/FDCAN3/SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/6,DFSDM1/I2C4/5/OCTOSPIM_P1/SAI1/SPI3/I2S3/UART4,SDMMC1/SPI2/I2S2/SPI3/I2S3/SPI6/UART7/USART1/2/3/6,LPUART1/SAI4/SDMMC1/SPDIFRX1/SPI6/UART4/5/8,FDCAN1/2/FMC/LCD/OCTOSPIM_P1/2/SAI4/SDMMC2/SPDIFRX1/TIM13/14,CRS/FMC/LCD/OCTOSPIM_P1/OTG1_FS/OTG1_HS/SAI4/SDMMC2/TIM8,DFSDM1/ETH/I2C4/LCD/MDIOS/OCTOSPIM_P1/SDMMC2/SWPMI1/TIM1x/TIM8/UART7/9/USART10,FMC/LCD/MDIOS/OCTOSPIM_P1/SDMMC1/TIM1x/TIM8,COMP/DCMI/PSSI/LCD/TIM1x/TIM23,LCD/TIM24/UART5,SYS,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,TIM15_BKIN,SPI6_NSS/I2S6_WS,,USART2_CTS/USART2_NSS,UART4_TX,SDMMC2_CMD,SAI4_SD_B,ETH_MII_CRS,FMC_A19,,,EVENTOUT,ADC1_INP16 -PortA,PA1,,TIM2_CH2,TIM5_CH2,LPTIM3_OUT,TIM15_CH1N,,,USART2_RTS/USART2_DE,UART4_RX,OCTOSPIM_P1_IO3,SAI4_MCLK_B,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,OCTOSPIM_P1_DQS,,LCD_R2,EVENTOUT,ADC1_INP17/ADC1_INN16 -PortA,PA2,,TIM2_CH3,TIM5_CH3,LPTIM4_OUT,TIM15_CH1,,OCTOSPIM_P1_IO0,USART2_TX,SAI4_SCK_B,,,ETH_MDIO,MDIOS_MDIO,,LCD_R1,EVENTOUT,ADC12_INP14 -PortA,PA3,,TIM2_CH4,TIM5_CH4,LPTIM5_OUT,TIM15_CH2,I2S6_MCK,OCTOSPIM_P1_IO2,USART2_RX,,LCD_B2,OTG_HS_ULPI_D0,ETH_MII_COL,OCTOSPIM_P1_CLK,,LCD_B5,EVENTOUT,ADC12_INP15 -PortA,PA4,D1PWREN,,TIM5_ETR,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,SPI6_NSS/I2S6_WS,,,,FMC_D8/FMC_AD8,DCMI_HSYNC/PSSI_DE,LCD_VSYNC,EVENTOUT,ADC12_INP18 -PortA,PA5,D2PWREN,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,SPI6_SCK/I2S6_CK,,OTG_HS_ULPI_CK,,FMC_D9/FMC_AD9,PSSI_D14,LCD_R4,EVENTOUT,ADC12_INP19/ADC12_INN18 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO/I2S1_SDI,OCTOSPIM_P1_IO3,,SPI6_MISO/I2S6_SDI,TIM13_CH1,TIM8_BKIN_COMP12,MDIOS_MDC,TIM1_BKIN_COMP12,DCMI_PIXCLK/PSSI_PDCK,LCD_G2,EVENTOUT,ADC12_INP3 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SDO,,,SPI6_MOSI/I2S6_SDO,TIM14_CH1,OCTOSPIM_P1_IO2,ETH_MII_RX_DV/ETH_RMII_CRS_DV,FMC_SDNWE,,LCD_VSYNC,EVENTOUT,ADC12_INP7/ADC12_INN3 -PortA,PA8,MCO1,TIM1_CH1,,TIM8_BKIN2,I2C3_SCL,,I2C5_SCL,USART1_CK,,,OTG_HS_SOF,UART7_RX,TIM8_BKIN2_COMP12,LCD_B3,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,,LPUART1_TX,I2C3_SMBA,SPI2_SCK/I2S2_CK,I2C5_SMBA,USART1_TX,,,,ETH_TX_ER,,DCMI_D0/PSSI_D0,LCD_R5,EVENTOUT, -PortA,PA10,,TIM1_CH3,,LPUART1_RX,,,,USART1_RX,,,OTG_HS_ID,MDIOS_MDIO,LCD_B4,DCMI_D1/PSSI_D1,LCD_B1,EVENTOUT, -PortA,PA11,,TIM1_CH4,,LPUART1_CTS,,SPI2_NSS/I2S2_WS,UART4_RX,USART1_CTS/USART1_NSS,,FDCAN1_RX,,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,,LPUART1_RTS/LPUART1_DE,,SPI2_SCK/I2S2_CK,UART4_TX,USART1_RTS/USART1_DE,SAI4_FS_B,FDCAN1_TX,,,TIM1_BKIN2,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,,,CEC,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,SPI6_NSS/I2S6_WS,UART4_RTS/UART4_DE,LCD_R3,,UART7_TX,,,LCD_B6,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,OCTOSPIM_P1_IO1,,DFSDM1_CKOUT,,UART4_CTS,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,LCD_G1,EVENTOUT,ADC12_INP9/ADC12_INN5 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,OCTOSPIM_P1_IO0,,DFSDM1_DATIN1,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,LCD_G0,EVENTOUT,ADC12_INP5 -PortB,PB2,RTC_OUT,SAI4_D1,SAI1_D1,,DFSDM1_CKIN1,,SAI1_SD_A,SPI3_MOSI/I2S3_SDO,SAI4_SD_A,OCTOSPIM_P1_CLK,OCTOSPIM_P1_DQS,ETH_TX_ER,,TIM23_ETR,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,,SPI6_SCK/I2S6_CK,SDMMC2_D2,CRS_SYNC,UART7_RX,,,TIM24_ETR,EVENTOUT, -PortB,PB4,NJTRST,TIM16_BKIN,TIM3_CH1,,,SPI1_MISO/I2S1_SDI,SPI3_MISO/I2S3_SDI,SPI2_NSS/I2S2_WS,SPI6_MISO/I2S6_SDI,SDMMC2_D3,,UART7_TX,,,,EVENTOUT, -PortB,PB5,,TIM17_BKIN,TIM3_CH2,LCD_B5,I2C1_SMBA,SPI1_MOSI/I2S1_SDO,I2C4_SMBA,SPI3_MOSI/I2S3_SDO,SPI6_MOSI/I2S6_SDO,FDCAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10/PSSI_D10,UART5_RX,EVENTOUT, -PortB,PB6,,TIM16_CH1N,TIM4_CH1,,I2C1_SCL,CEC,I2C4_SCL,USART1_TX,LPUART1_TX,FDCAN2_TX,OCTOSPIM_P1_NCS,DFSDM1_DATIN5,FMC_SDNE1,DCMI_D5/PSSI_D5,UART5_TX,EVENTOUT, -PortB,PB7,,TIM17_CH1N,TIM4_CH2,,I2C1_SDA,,I2C4_SDA,USART1_RX,LPUART1_RX,,,DFSDM1_CKIN5,FMC_NL,DCMI_VSYNC/PSSI_RDY,,EVENTOUT, -PortB,PB8,,TIM16_CH1,TIM4_CH3,DFSDM1_CKIN7,I2C1_SCL,,I2C4_SCL,SDMMC1_CKIN,UART4_RX,FDCAN1_RX,SDMMC2_D4,ETH_MII_TXD3,SDMMC1_D4,DCMI_D6/PSSI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,TIM17_CH1,TIM4_CH4,DFSDM1_DATIN7,I2C1_SDA,SPI2_NSS/I2S2_WS,I2C4_SDA,SDMMC1_CDIR,UART4_TX,FDCAN1_TX,SDMMC2_D5,I2C4_SMBA,SDMMC1_D5,DCMI_D7/PSSI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,,LPTIM2_IN1,I2C2_SCL,SPI2_SCK/I2S2_CK,DFSDM1_DATIN7,USART3_TX,,OCTOSPIM_P1_NCS,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,,LPTIM2_ETR,I2C2_SDA,,DFSDM1_CKIN7,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,OCTOSPIM_P1_NCLK,I2C2_SMBA,SPI2_NSS/I2S2_WS,DFSDM1_DATIN1,USART3_CK,,FDCAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OCTOSPIM_P1_IO0,TIM1_BKIN_COMP12,UART5_RX,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,LPTIM2_OUT,OCTOSPIM_P1_IO2,SPI2_SCK/I2S2_CK,DFSDM1_CKIN1,USART3_CTS/USART3_NSS,,FDCAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,SDMMC1_D0,DCMI_D2/PSSI_D2,UART5_TX,EVENTOUT, -PortB,PB14,,TIM1_CH2N,TIM12_CH1,TIM8_CH2N,USART1_TX,SPI2_MISO/I2S2_SDI,DFSDM1_DATIN2,USART3_RTS/USART3_DE,UART4_RTS/UART4_DE,SDMMC2_D0,,,FMC_D10/FMC_AD10,,LCD_CLK,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,TIM12_CH2,TIM8_CH3N,USART1_RX,SPI2_MOSI/I2S2_SDO,DFSDM1_CKIN2,,UART4_CTS,SDMMC2_D1,,,FMC_D11/FMC_AD11,,LCD_G7,EVENTOUT, -PortC,PC0,,FMC_D12/FMC_AD12,,DFSDM1_CKIN0,,,DFSDM1_DATIN4,,SAI4_FS_B,FMC_A25,OTG_HS_ULPI_STP,LCD_G2,FMC_SDNWE,,LCD_R5,EVENTOUT,ADC123_INP10 -PortC,PC1,TRACED0,SAI4_D1,SAI1_D1,DFSDM1_DATIN0,DFSDM1_CKIN4,SPI2_MOSI/I2S2_SDO,SAI1_SD_A,,SAI4_SD_A,SDMMC2_CK,OCTOSPIM_P1_IO4,ETH_MDC,MDIOS_MDC,,LCD_G5,EVENTOUT,ADC123_INP11/ADC123_INN10 -PortC,PC2,PWR_DEEPSLEEP,,,DFSDM1_CKIN1,OCTOSPIM_P1_IO5,SPI2_MISO/I2S2_SDI,DFSDM1_CKOUT,,,OCTOSPIM_P1_IO2,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_INP12/ADC123_INN11 -PortC,PC3,PWR_SLEEP,,,DFSDM1_DATIN1,OCTOSPIM_P1_IO6,SPI2_MOSI/I2S2_SDO,,,,OCTOSPIM_P1_IO0,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC123_INP13/ADC123_INN12 -PortC,PC4,PWR_DEEPSLEEP,FMC_A22,,DFSDM1_CKIN2,,I2S1_MCK,,,,SPDIFRX1_IN3,SDMMC2_CKIN,ETH_MII_RXD0/ETH_RMII_RXD0,FMC_SDNE0,,LCD_R7,EVENTOUT,ADC12_INP4 -PortC,PC5,PWR_SLEEP,SAI4_D3,SAI1_D3,DFSDM1_DATIN2,PSSI_D15,,,,,SPDIFRX1_IN4,OCTOSPIM_P1_DQS,ETH_MII_RXD1/ETH_RMII_RXD1,FMC_SDCKE0,COMP1_OUT,LCD_DE,EVENTOUT,ADC12_INP8/ADC12_INN4 -PortC,PC6,,,TIM3_CH1,TIM8_CH1,DFSDM1_CKIN3,I2S2_MCK,,USART6_TX,SDMMC1_D0DIR,FMC_NWAIT,SDMMC2_D6,,SDMMC1_D6,DCMI_D0/PSSI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,DBTRGIO,,TIM3_CH2,TIM8_CH2,DFSDM1_DATIN3,,I2S3_MCK,USART6_RX,SDMMC1_D123DIR,FMC_NE1,SDMMC2_D7,SWPMI_TX,SDMMC1_D7,DCMI_D1/PSSI_D1,LCD_G6,EVENTOUT, -PortC,PC8,TRACED1,,TIM3_CH3,TIM8_CH3,,,,USART6_CK,UART5_RTS/UART5_DE,FMC_NE2/FMC_NCE,FMC_INT,SWPMI_RX,SDMMC1_D0,DCMI_D2/PSSI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,I2C5_SDA,,UART5_CTS,OCTOSPIM_P1_IO0,LCD_G3,SWPMI_SUSPEND,SDMMC1_D1,DCMI_D3/PSSI_D3,LCD_B2,EVENTOUT, -PortC,PC10,,,,DFSDM1_CKIN5,I2C5_SDA,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,OCTOSPIM_P1_IO1,LCD_B1,SWPMI_RX,SDMMC1_D2,DCMI_D8/PSSI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,,DFSDM1_DATIN5,I2C5_SCL,,SPI3_MISO/I2S3_SDI,USART3_RX,UART4_RX,OCTOSPIM_P1_NCS,,,SDMMC1_D3,DCMI_D4/PSSI_D4,LCD_B4,EVENTOUT, -PortC,PC12,TRACED3,FMC_D6/FMC_AD6,TIM15_CH1,,I2C5_SMBA,SPI6_SCK/I2S6_CK,SPI3_MOSI/I2S3_SDO,USART3_CK,UART5_TX,,,,SDMMC1_CK,DCMI_D9/PSSI_D9,LCD_R6,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,DFSDM1_CKIN6,,,,,UART4_RX,FDCAN1_RX,,UART9_CTS,FMC_D2/FMC_AD2,,LCD_B1,EVENTOUT, -PortD,PD1,,,,DFSDM1_DATIN6,,,,,UART4_TX,FDCAN1_TX,,,FMC_D3/FMC_AD3,,,EVENTOUT, -PortD,PD2,TRACED2,FMC_D7/FMC_AD7,TIM3_ETR,,TIM15_BKIN,,,,UART5_RX,LCD_B7,,,SDMMC1_CMD,DCMI_D11/PSSI_D11,LCD_B2,EVENTOUT, -PortD,PD3,,,,DFSDM1_CKOUT,,SPI2_SCK/I2S2_CK,,USART2_CTS/USART2_NSS,,,,,FMC_CLK,DCMI_D5/PSSI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,,,,,,USART2_RTS/USART2_DE,,,OCTOSPIM_P1_IO4,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,OCTOSPIM_P1_IO5,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,SAI4_D1,SAI1_D1,DFSDM1_CKIN4,DFSDM1_DATIN1,SPI3_MOSI/I2S3_SDO,SAI1_SD_A,USART2_RX,SAI4_SD_A,,OCTOSPIM_P1_IO6,SDMMC2_CK,FMC_NWAIT,DCMI_D10/PSSI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,DFSDM1_DATIN4,,SPI1_MOSI/I2S1_SDO,DFSDM1_CKIN1,USART2_CK,,SPDIFRX1_IN1,OCTOSPIM_P1_IO7,SDMMC2_CMD,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,DFSDM1_CKIN3,,,,USART3_TX,,SPDIFRX1_IN2,,,FMC_D13/FMC_AD13,,,EVENTOUT, -PortD,PD9,,,,DFSDM1_DATIN3,,,,USART3_RX,,,,,FMC_D14/FMC_AD14,,,EVENTOUT, -PortD,PD10,,,,DFSDM1_CKOUT,,,,USART3_CK,,,,,FMC_D15/FMC_AD15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,LPTIM2_IN2,I2C4_SMBA,,,USART3_CTS/USART3_NSS,,OCTOSPIM_P1_IO0,SAI4_SD_A,,FMC_A16/FMC_CLE,,,EVENTOUT, -PortD,PD12,,LPTIM1_IN1,TIM4_CH1,LPTIM2_IN1,I2C4_SCL,FDCAN3_RX,,USART3_RTS/USART3_DE,,OCTOSPIM_P1_IO1,SAI4_FS_A,,FMC_A17/FMC_ALE,DCMI_D12/PSSI_D12,,EVENTOUT, -PortD,PD13,,LPTIM1_OUT,TIM4_CH2,,I2C4_SDA,FDCAN3_TX,,,,OCTOSPIM_P1_IO3,SAI4_SCK_A,UART9_RTS/UART9_DE,FMC_A18,DCMI_D13/PSSI_D13,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,UART8_CTS,,,UART9_RX,FMC_D0/FMC_AD0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,UART8_RTS/UART8_DE,,,UART9_TX,FMC_D1/FMC_AD1,,,EVENTOUT, -PortE,PE0,,LPTIM1_ETR,TIM4_ETR,,LPTIM2_ETR,,,,UART8_RX,,SAI4_MCLK_A,,FMC_NBL0,DCMI_D2/PSSI_D2,LCD_R0,EVENTOUT, -PortE,PE1,,LPTIM1_IN2,,,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3/PSSI_D3,LCD_R6,EVENTOUT, -PortE,PE2,TRACECLK,,SAI1_CK1,,USART10_RX,SPI4_SCK,SAI1_MCLK_A,,SAI4_MCLK_A,OCTOSPIM_P1_IO2,SAI4_CK1,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,TIM15_BKIN,,SAI1_SD_B,,SAI4_SD_B,,,USART10_TX,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,SAI1_D2,DFSDM1_DATIN3,TIM15_CH1N,SPI4_NSS,SAI1_FS_A,,SAI4_FS_A,,SAI4_D2,,FMC_A20,DCMI_D4/PSSI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,SAI1_CK2,DFSDM1_CKIN3,TIM15_CH1,SPI4_MISO,SAI1_SCK_A,,SAI4_SCK_A,,SAI4_CK2,,FMC_A21,DCMI_D6/PSSI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,TIM1_BKIN2,SAI1_D1,,TIM15_CH2,SPI4_MOSI,SAI1_SD_A,,SAI4_SD_A,SAI4_D1,SAI4_MCLK_B,TIM1_BKIN2_COMP12,FMC_A22,DCMI_D7/PSSI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,DFSDM1_DATIN2,,,,UART7_RX,,,OCTOSPIM_P1_IO4,,FMC_D4/FMC_AD4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,DFSDM1_CKIN2,,,,UART7_TX,,,OCTOSPIM_P1_IO5,,FMC_D5/FMC_AD5,COMP2_OUT,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,DFSDM1_CKOUT,,,,UART7_RTS/UART7_DE,,,OCTOSPIM_P1_IO6,,FMC_D6/FMC_AD6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,DFSDM1_DATIN4,,,,UART7_CTS,,,OCTOSPIM_P1_IO7,,FMC_D7/FMC_AD7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,DFSDM1_CKIN4,,SPI4_NSS,,,,,SAI4_SD_B,OCTOSPIM_P1_NCS,FMC_D8/FMC_AD8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,DFSDM1_DATIN5,,SPI4_SCK,,,,,SAI4_SCK_B,,FMC_D9/FMC_AD9,COMP1_OUT,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,DFSDM1_CKIN5,,SPI4_MISO,,,,,SAI4_FS_B,,FMC_D10/FMC_AD10,COMP2_OUT,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI4_MCLK_B,,FMC_D11/FMC_AD11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,USART10_CK,FMC_D12/FMC_AD12,TIM1_BKIN_COMP12,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,I2C5_SDA,,,OCTOSPIM_P2_IO0,,,FMC_A0,TIM23_CH1,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,I2C5_SCL,,,OCTOSPIM_P2_IO1,,,FMC_A1,TIM23_CH2,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,I2C5_SMBA,,,OCTOSPIM_P2_IO2,,,FMC_A2,TIM23_CH3,,EVENTOUT, -PortF,PF3,,,,,,,,,,OCTOSPIM_P2_IO3,,,FMC_A3,TIM23_CH4,,EVENTOUT,ADC3_INP5 -PortF,PF4,,,,,,,,,,OCTOSPIM_P2_CLK,,,FMC_A4,,,EVENTOUT,ADC3_INP9/ADC3_INN5 -PortF,PF5,,,,,,,,,,OCTOSPIM_P2_NCLK,,,FMC_A5,,,EVENTOUT,ADC3_INP4 -PortF,PF6,,TIM16_CH1,FDCAN3_RX,,,SPI5_NSS,SAI1_SD_B,UART7_RX,SAI4_SD_B,,OCTOSPIM_P1_IO3,,,TIM23_CH1,,EVENTOUT,ADC3_INP8/ADC3_INN4 -PortF,PF7,,TIM17_CH1,FDCAN3_TX,,,SPI5_SCK,SAI1_MCLK_B,UART7_TX,SAI4_MCLK_B,,OCTOSPIM_P1_IO2,,,TIM23_CH2,,EVENTOUT,ADC3_INP3 -PortF,PF8,,TIM16_CH1N,,,,SPI5_MISO,SAI1_SCK_B,UART7_RTS/UART7_DE,SAI4_SCK_B,TIM13_CH1,OCTOSPIM_P1_IO0,,,TIM23_CH3,,EVENTOUT,ADC3_INP7/ADC3_INN3 -PortF,PF9,,TIM17_CH1N,,,,SPI5_MOSI,SAI1_FS_B,UART7_CTS,SAI4_FS_B,TIM14_CH1,OCTOSPIM_P1_IO1,,,TIM23_CH4,,EVENTOUT,ADC3_INP2 -PortF,PF10,,TIM16_BKIN,SAI1_D3,,PSSI_D15,,,,,OCTOSPIM_P1_CLK,SAI4_D3,,,DCMI_D11/PSSI_D11,LCD_DE,EVENTOUT,ADC3_INP6/ADC3_INN2 -PortF,PF11,,,,,,SPI5_MOSI,,,,OCTOSPIM_P1_NCLK,SAI4_SD_B,,FMC_NRAS,DCMI_D12/PSSI_D12,TIM24_CH1,EVENTOUT,ADC1_INP2 -PortF,PF12,,,,,,,,,,OCTOSPIM_P2_DQS,,,FMC_A6,,TIM24_CH2,EVENTOUT,ADC1_INP5/ADC1_INN2 -PortF,PF13,,,,DFSDM1_DATIN6,I2C4_SMBA,,,,,,,,FMC_A7,,TIM24_CH3,EVENTOUT,ADC2_INP2 -PortF,PF14,,,,DFSDM1_CKIN6,I2C4_SCL,,,,,,,,FMC_A8,,TIM24_CH4,EVENTOUT,ADC2_INP6/ADC2_INN2 -PortF,PF15,,,,,I2C4_SDA,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,OCTOSPIM_P2_IO4,,UART9_RX,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,OCTOSPIM_P2_IO5,,UART9_TX,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,TIM8_BKIN,,,,,,,,TIM8_BKIN_COMP12,FMC_A12,,TIM24_ETR,EVENTOUT, -PortG,PG3,,,,TIM8_BKIN2,,,,,,,,TIM8_BKIN2_COMP12,FMC_A13,TIM23_ETR,,EVENTOUT, -PortG,PG4,,TIM1_BKIN2,,,,,,,,,,TIM1_BKIN2_COMP12,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,TIM1_ETR,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,TIM17_BKIN,,,,,,,,,OCTOSPIM_P1_NCS,,FMC_NE3,DCMI_D12/PSSI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,,,,,SAI1_MCLK_A,USART6_CK,,OCTOSPIM_P2_DQS,,,FMC_INT,DCMI_D13/PSSI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,TIM8_ETR,,SPI6_NSS/I2S6_WS,,USART6_RTS/USART6_DE,SPDIFRX1_IN3,,,ETH_PPS_OUT,FMC_SDCLK,,LCD_G7,EVENTOUT, -PortG,PG9,,,FDCAN3_TX,,,SPI1_MISO/I2S1_SDI,,USART6_RX,SPDIFRX1_IN4,OCTOSPIM_P1_IO6,SAI4_FS_B,SDMMC2_D0,FMC_NE2/FMC_NCE,DCMI_VSYNC/PSSI_RDY,,EVENTOUT, -PortG,PG10,,,FDCAN3_RX,OCTOSPIM_P2_IO6,,SPI1_NSS/I2S1_WS,,,,LCD_G3,SAI4_SD_B,SDMMC2_D1,FMC_NE3,DCMI_D2/PSSI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,LPTIM1_IN2,,,USART10_RX,SPI1_SCK/I2S1_CK,,,SPDIFRX1_IN1,OCTOSPIM_P2_IO7,SDMMC2_D2,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DCMI_D3/PSSI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,LPTIM1_IN1,,OCTOSPIM_P2_NCS,USART10_TX,SPI6_MISO/I2S6_SDI,,USART6_RTS/USART6_DE,SPDIFRX1_IN2,LCD_B4,SDMMC2_D3,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_NE4,TIM23_CH1,LCD_B1,EVENTOUT, -PortG,PG13,TRACED0,LPTIM1_OUT,,,USART10_CTS/USART10_NSS,SPI6_SCK/I2S6_CK,,USART6_CTS/USART6_NSS,,,SDMMC2_D6,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,TIM23_CH2,LCD_R0,EVENTOUT, -PortG,PG14,TRACED1,LPTIM1_ETR,,,USART10_RTS/USART10_DE,SPI6_MOSI/I2S6_SDO,,USART6_TX,,OCTOSPIM_P1_IO7,SDMMC2_D7,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,TIM23_CH3,LCD_B0,EVENTOUT, -PortG,PG15,,,,,,,,USART6_CTS/USART6_NSS,,OCTOSPIM_P2_DQS,,USART10_CK,FMC_NCAS,DCMI_D13/PSSI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,FMC/LPTIM1/SAI4/TIM16/17/TIM1x/TIM2x,FDCAN3/PDM_SAI1/TIM3/4/5/12/15,DFSDM1/LCD/LPTIM2/3/4/5/LPUART1/OCTOSPIM_P1/2/TIM8,CEC/DCMI/PSSI/DFSDM1/I2C1/2/3/4/5/LPTIM2/OCTOSPIM_P1/TIM15/USART1/10,CEC/FDCAN3/SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/6,DFSDM1/I2C4/5/OCTOSPIM_P1/SAI1/SPI3/I2S3/UART4,SDMMC1/SPI2/I2S2/SPI3/I2S3/SPI6/UART7/USART1/2/3/6,LPUART1/SAI4/SDMMC1/SPDIFRX1/SPI6/UART4/5/8,FDCAN1/2/FMC/LCD/OCTOSPIM_P1/2/SAI4/SDMMC2/SPDIFRX1/TIM13/14,CRS/FMC/LCD/OCTOSPIM_P1/OTG1_FS/OTG1_HS/SAI4/SDMMC2/TIM8,DFSDM1/ETH/I2C4/LCD/MDIOS/OCTOSPIM_P1/SDMMC2/SWPMI1/TIM1x/TIM8/UART7/9/USART10,FMC/LCD/MDIOS/OCTOSPIM_P1/SDMMC1/TIM1x/TIM8,COMP/DCMI/PSSI/LCD/TIM1x/TIM23,LCD/TIM24/UART5,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR ,TIM5_CH1 ,TIM8_ETR ,TIM15_BKIN ,SPI6_NSS/I2S6_WS , ,USART2_CTS/USART2_NSS ,UART4_TX ,SDMMC2_CMD ,SAI4_SD_B ,ETH_MII_CRS ,FMC_A19 , , ,EVENTOUT,ADC1_INP16 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 ,LPTIM3_OUT ,TIM15_CH1N , , ,USART2_RTS/USART2_DE ,UART4_RX ,OCTOSPIM_P1_IO3 ,SAI4_MCLK_B ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK ,OCTOSPIM_P1_DQS , ,LCD_R2 ,EVENTOUT,ADC1_INP17/ADC1_INN16 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,LPTIM4_OUT ,TIM15_CH1 , ,OCTOSPIM_P1_IO0 ,USART2_TX ,SAI4_SCK_B , , ,ETH_MDIO ,MDIOS_MDIO , ,LCD_R1 ,EVENTOUT,ADC12_INP14 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,LPTIM5_OUT ,TIM15_CH2 ,I2S6_MCK ,OCTOSPIM_P1_IO2 ,USART2_RX , ,LCD_B2 ,OTG_HS_ULPI_D0 ,ETH_MII_COL ,OCTOSPIM_P1_CLK , ,LCD_B5 ,EVENTOUT,ADC12_INP15 +PortA,PA4 ,D1PWREN , ,TIM5_ETR , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK ,SPI6_NSS/I2S6_WS , , , ,FMC_D8/FMC_AD8 ,DCMI_HSYNC/PSSI_DE ,LCD_VSYNC ,EVENTOUT,ADC12_INP18 +PortA,PA5 ,D2PWREN ,TIM2_CH1/TIM2_ETR , ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , ,SPI6_SCK/I2S6_CK , ,OTG_HS_ULPI_CK , ,FMC_D9/FMC_AD9 ,PSSI_D14 ,LCD_R4 ,EVENTOUT,ADC12_INP19/ADC12_INN18 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,SPI1_MISO/I2S1_SDI ,OCTOSPIM_P1_IO3 , ,SPI6_MISO/I2S6_SDI ,TIM13_CH1 ,TIM8_BKIN_COMP12 ,MDIOS_MDC ,TIM1_BKIN_COMP12 ,DCMI_PIXCLK/PSSI_PDCK ,LCD_G2 ,EVENTOUT,ADC12_INP3 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,SPI1_MOSI/I2S1_SDO , , ,SPI6_MOSI/I2S6_SDO ,TIM14_CH1 ,OCTOSPIM_P1_IO2 ,ETH_MII_RX_DV/ETH_RMII_CRS_DV ,FMC_SDNWE , ,LCD_VSYNC ,EVENTOUT,ADC12_INP7/ADC12_INN3 +PortA,PA8 ,MCO1 ,TIM1_CH1 , ,TIM8_BKIN2 ,I2C3_SCL , ,I2C5_SCL ,USART1_CK , , ,OTG_HS_SOF ,UART7_RX ,TIM8_BKIN2_COMP12 ,LCD_B3 ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , ,LPUART1_TX ,I2C3_SMBA ,SPI2_SCK/I2S2_CK ,I2C5_SMBA ,USART1_TX , , , ,ETH_TX_ER , ,DCMI_D0/PSSI_D0 ,LCD_R5 ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , ,LPUART1_RX , , , ,USART1_RX , , ,OTG_HS_ID ,MDIOS_MDIO ,LCD_B4 ,DCMI_D1/PSSI_D1 ,LCD_B1 ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , ,LPUART1_CTS , ,SPI2_NSS/I2S2_WS ,UART4_RX ,USART1_CTS/USART1_NSS , ,FDCAN1_RX , , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , ,LPUART1_RTS/LPUART1_DE , ,SPI2_SCK/I2S2_CK ,UART4_TX ,USART1_RTS/USART1_DE ,SAI4_FS_B ,FDCAN1_TX , , ,TIM1_BKIN2 , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR , , ,CEC ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,SPI6_NSS/I2S6_WS ,UART4_RTS/UART4_DE ,LCD_R3 , ,UART7_TX , , ,LCD_B6 ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N ,OCTOSPIM_P1_IO1 , ,DFSDM1_CKOUT , ,UART4_CTS ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , ,LCD_G1 ,EVENTOUT,ADC12_INP9/ADC12_INN5 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N ,OCTOSPIM_P1_IO0 , ,DFSDM1_DATIN1 , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , ,LCD_G0 ,EVENTOUT,ADC12_INP5 +PortB,PB2 ,RTC_OUT ,SAI4_D1 ,SAI1_D1 , ,DFSDM1_CKIN1 , ,SAI1_SD_A ,SPI3_MOSI/I2S3_SDO ,SAI4_SD_A ,OCTOSPIM_P1_CLK ,OCTOSPIM_P1_DQS ,ETH_TX_ER , ,TIM23_ETR , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK , ,SPI6_SCK/I2S6_CK ,SDMMC2_D2 ,CRS_SYNC ,UART7_RX , , ,TIM24_ETR ,EVENTOUT, +PortB,PB4 ,NJTRST ,TIM16_BKIN ,TIM3_CH1 , , ,SPI1_MISO/I2S1_SDI ,SPI3_MISO/I2S3_SDI ,SPI2_NSS/I2S2_WS ,SPI6_MISO/I2S6_SDI ,SDMMC2_D3 , ,UART7_TX , , , ,EVENTOUT, +PortB,PB5 , ,TIM17_BKIN ,TIM3_CH2 ,LCD_B5 ,I2C1_SMBA ,SPI1_MOSI/I2S1_SDO ,I2C4_SMBA ,SPI3_MOSI/I2S3_SDO ,SPI6_MOSI/I2S6_SDO ,FDCAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10/PSSI_D10 ,UART5_RX ,EVENTOUT, +PortB,PB6 , ,TIM16_CH1N ,TIM4_CH1 , ,I2C1_SCL ,CEC ,I2C4_SCL ,USART1_TX ,LPUART1_TX ,FDCAN2_TX ,OCTOSPIM_P1_NCS ,DFSDM1_DATIN5 ,FMC_SDNE1 ,DCMI_D5/PSSI_D5 ,UART5_TX ,EVENTOUT, +PortB,PB7 , ,TIM17_CH1N ,TIM4_CH2 , ,I2C1_SDA , ,I2C4_SDA ,USART1_RX ,LPUART1_RX , , ,DFSDM1_CKIN5 ,FMC_NL ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortB,PB8 , ,TIM16_CH1 ,TIM4_CH3 ,DFSDM1_CKIN7 ,I2C1_SCL , ,I2C4_SCL ,SDMMC1_CKIN ,UART4_RX ,FDCAN1_RX ,SDMMC2_D4 ,ETH_MII_TXD3 ,SDMMC1_D4 ,DCMI_D6/PSSI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , ,TIM17_CH1 ,TIM4_CH4 ,DFSDM1_DATIN7 ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,I2C4_SDA ,SDMMC1_CDIR ,UART4_TX ,FDCAN1_TX ,SDMMC2_D5 ,I2C4_SMBA ,SDMMC1_D5 ,DCMI_D7/PSSI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , ,LPTIM2_IN1 ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,DFSDM1_DATIN7 ,USART3_TX , ,OCTOSPIM_P1_NCS ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , ,LPTIM2_ETR ,I2C2_SDA , ,DFSDM1_CKIN7 ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , , ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,OCTOSPIM_P1_NCLK ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,DFSDM1_DATIN1 ,USART3_CK , ,FDCAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OCTOSPIM_P1_IO0 ,TIM1_BKIN_COMP12 ,UART5_RX ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , ,LPTIM2_OUT ,OCTOSPIM_P1_IO2 ,SPI2_SCK/I2S2_CK ,DFSDM1_CKIN1 ,USART3_CTS/USART3_NSS , ,FDCAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 ,SDMMC1_D0 ,DCMI_D2/PSSI_D2 ,UART5_TX ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N ,TIM12_CH1 ,TIM8_CH2N ,USART1_TX ,SPI2_MISO/I2S2_SDI ,DFSDM1_DATIN2 ,USART3_RTS/USART3_DE ,UART4_RTS/UART4_DE ,SDMMC2_D0 , , ,FMC_D10/FMC_AD10 , ,LCD_CLK ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N ,TIM12_CH2 ,TIM8_CH3N ,USART1_RX ,SPI2_MOSI/I2S2_SDO ,DFSDM1_CKIN2 , ,UART4_CTS ,SDMMC2_D1 , , ,FMC_D11/FMC_AD11 , ,LCD_G7 ,EVENTOUT, +PortC,PC0 , ,FMC_D12/FMC_AD12 , ,DFSDM1_CKIN0 , , ,DFSDM1_DATIN4 , ,SAI4_FS_B ,FMC_A25 ,OTG_HS_ULPI_STP ,LCD_G2 ,FMC_SDNWE , ,LCD_R5 ,EVENTOUT,ADC123_INP10 +PortC,PC1 ,TRACED0 ,SAI4_D1 ,SAI1_D1 ,DFSDM1_DATIN0 ,DFSDM1_CKIN4 ,SPI2_MOSI/I2S2_SDO ,SAI1_SD_A , ,SAI4_SD_A ,SDMMC2_CK ,OCTOSPIM_P1_IO4 ,ETH_MDC ,MDIOS_MDC , ,LCD_G5 ,EVENTOUT,ADC123_INP11/ADC123_INN10 +PortC,PC2 ,PWR_DEEPSLEEP, , ,DFSDM1_CKIN1 ,OCTOSPIM_P1_IO5 ,SPI2_MISO/I2S2_SDI ,DFSDM1_CKOUT , , ,OCTOSPIM_P1_IO2 ,OTG_HS_ULPI_DIR ,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_INP12/ADC123_INN11/C_ADC3_INN1/C_ADC3_INP0 +PortC,PC3 ,PWR_SLEEP , , ,DFSDM1_DATIN1 ,OCTOSPIM_P1_IO6 ,SPI2_MOSI/I2S2_SDO , , , ,OCTOSPIM_P1_IO0 ,OTG_HS_ULPI_NXT ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_INP13/ADC12_INN12/C_ADC3_INP1 +PortC,PC4 ,PWR_DEEPSLEEP,FMC_A22 , ,DFSDM1_CKIN2 , ,I2S1_MCK , , , ,SPDIFRX1_IN3 ,SDMMC2_CKIN ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , ,LCD_R7 ,EVENTOUT,ADC12_INP4 +PortC,PC5 ,PWR_SLEEP ,SAI4_D3 ,SAI1_D3 ,DFSDM1_DATIN2 ,PSSI_D15 , , , , ,SPDIFRX1_IN4 ,OCTOSPIM_P1_DQS ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 ,COMP1_OUT ,LCD_DE ,EVENTOUT,ADC12_INP8/ADC12_INN4 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 ,DFSDM1_CKIN3 ,I2S2_MCK , ,USART6_TX ,SDMMC1_D0DIR ,FMC_NWAIT ,SDMMC2_D6 , ,SDMMC1_D6 ,DCMI_D0/PSSI_D0 ,LCD_HSYNC ,EVENTOUT, +PortC,PC7 ,DBTRGIO , ,TIM3_CH2 ,TIM8_CH2 ,DFSDM1_DATIN3 , ,I2S3_MCK ,USART6_RX ,SDMMC1_D123DIR ,FMC_NE1 ,SDMMC2_D7 ,SWPMI_TX ,SDMMC1_D7 ,DCMI_D1/PSSI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 ,TRACED1 , ,TIM3_CH3 ,TIM8_CH3 , , , ,USART6_CK ,UART5_RTS/UART5_DE ,FMC_NE2/FMC_NCE ,FMC_INT ,SWPMI_RX ,SDMMC1_D0 ,DCMI_D2/PSSI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN ,I2C5_SDA , ,UART5_CTS ,OCTOSPIM_P1_IO0 ,LCD_G3 ,SWPMI_SUSPEND ,SDMMC1_D1 ,DCMI_D3/PSSI_D3 ,LCD_B2 ,EVENTOUT, +PortC,PC10, , , ,DFSDM1_CKIN5 ,I2C5_SDA , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,OCTOSPIM_P1_IO1 ,LCD_B1 ,SWPMI_RX ,SDMMC1_D2 ,DCMI_D8/PSSI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , , ,DFSDM1_DATIN5 ,I2C5_SCL , ,SPI3_MISO/I2S3_SDI ,USART3_RX ,UART4_RX ,OCTOSPIM_P1_NCS , , ,SDMMC1_D3 ,DCMI_D4/PSSI_D4 ,LCD_B4 ,EVENTOUT, +PortC,PC12,TRACED3 ,FMC_D6/FMC_AD6 ,TIM15_CH1 , ,I2C5_SMBA ,SPI6_SCK/I2S6_CK ,SPI3_MOSI/I2S3_SDO ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9/PSSI_D9 ,LCD_R6 ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,DFSDM1_CKIN6 , , , , ,UART4_RX ,FDCAN1_RX , ,UART9_CTS ,FMC_D2/FMC_AD2 , ,LCD_B1 ,EVENTOUT, +PortD,PD1 , , , ,DFSDM1_DATIN6 , , , , ,UART4_TX ,FDCAN1_TX , , ,FMC_D3/FMC_AD3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 ,FMC_D7/FMC_AD7 ,TIM3_ETR , ,TIM15_BKIN , , , ,UART5_RX ,LCD_B7 , , ,SDMMC1_CMD ,DCMI_D11/PSSI_D11 ,LCD_B2 ,EVENTOUT, +PortD,PD3 , , , ,DFSDM1_CKOUT , ,SPI2_SCK/I2S2_CK , ,USART2_CTS/USART2_NSS , , , , ,FMC_CLK ,DCMI_D5/PSSI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_RTS/USART2_DE , , ,OCTOSPIM_P1_IO4 , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , ,OCTOSPIM_P1_IO5 , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , ,SAI4_D1 ,SAI1_D1 ,DFSDM1_CKIN4 ,DFSDM1_DATIN1 ,SPI3_MOSI/I2S3_SDO ,SAI1_SD_A ,USART2_RX ,SAI4_SD_A , ,OCTOSPIM_P1_IO6 ,SDMMC2_CK ,FMC_NWAIT ,DCMI_D10/PSSI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , ,DFSDM1_DATIN4 , ,SPI1_MOSI/I2S1_SDO ,DFSDM1_CKIN1 ,USART2_CK , ,SPDIFRX1_IN1 ,OCTOSPIM_P1_IO7 ,SDMMC2_CMD ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , ,DFSDM1_CKIN3 , , , ,USART3_TX , ,SPDIFRX1_IN2 , , ,FMC_D13/FMC_AD13 , , ,EVENTOUT, +PortD,PD9 , , , ,DFSDM1_DATIN3 , , , ,USART3_RX , , , , ,FMC_D14/FMC_AD14 , , ,EVENTOUT, +PortD,PD10, , , ,DFSDM1_CKOUT , , , ,USART3_CK , , , , ,FMC_D15/FMC_AD15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , ,LPTIM2_IN2 ,I2C4_SMBA , , ,USART3_CTS/USART3_NSS , ,OCTOSPIM_P1_IO0 ,SAI4_SD_A , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, ,LPTIM1_IN1 ,TIM4_CH1 ,LPTIM2_IN1 ,I2C4_SCL ,FDCAN3_RX , ,USART3_RTS/USART3_DE , ,OCTOSPIM_P1_IO1 ,SAI4_FS_A , ,FMC_A17/FMC_ALE ,DCMI_D12/PSSI_D12 , ,EVENTOUT, +PortD,PD13, ,LPTIM1_OUT ,TIM4_CH2 , ,I2C4_SDA ,FDCAN3_TX , , , ,OCTOSPIM_P1_IO3 ,SAI4_SCK_A ,UART9_RTS/UART9_DE ,FMC_A18 ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , ,UART8_CTS , , ,UART9_RX ,FMC_D0/FMC_AD0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , ,UART8_RTS/UART8_DE , , ,UART9_TX ,FMC_D1/FMC_AD1 , , ,EVENTOUT, +PortE,PE0 , ,LPTIM1_ETR ,TIM4_ETR , ,LPTIM2_ETR , , , ,UART8_RX , ,SAI4_MCLK_A , ,FMC_NBL0 ,DCMI_D2/PSSI_D2 ,LCD_R0 ,EVENTOUT, +PortE,PE1 , ,LPTIM1_IN2 , , , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3/PSSI_D3 ,LCD_R6 ,EVENTOUT, +PortE,PE2 ,TRACECLK , ,SAI1_CK1 , ,USART10_RX ,SPI4_SCK ,SAI1_MCLK_A , ,SAI4_MCLK_A ,OCTOSPIM_P1_IO2 ,SAI4_CK1 ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , ,TIM15_BKIN , ,SAI1_SD_B , ,SAI4_SD_B , , ,USART10_TX ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,SAI1_D2 ,DFSDM1_DATIN3 ,TIM15_CH1N ,SPI4_NSS ,SAI1_FS_A , ,SAI4_FS_A , ,SAI4_D2 , ,FMC_A20 ,DCMI_D4/PSSI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,SAI1_CK2 ,DFSDM1_CKIN3 ,TIM15_CH1 ,SPI4_MISO ,SAI1_SCK_A , ,SAI4_SCK_A , ,SAI4_CK2 , ,FMC_A21 ,DCMI_D6/PSSI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 ,TIM1_BKIN2 ,SAI1_D1 , ,TIM15_CH2 ,SPI4_MOSI ,SAI1_SD_A , ,SAI4_SD_A ,SAI4_D1 ,SAI4_MCLK_B ,TIM1_BKIN2_COMP12 ,FMC_A22 ,DCMI_D7/PSSI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , ,DFSDM1_DATIN2 , , , ,UART7_RX , , ,OCTOSPIM_P1_IO4 , ,FMC_D4/FMC_AD4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , ,DFSDM1_CKIN2 , , , ,UART7_TX , , ,OCTOSPIM_P1_IO5 , ,FMC_D5/FMC_AD5 ,COMP2_OUT , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , ,DFSDM1_CKOUT , , , ,UART7_RTS/UART7_DE , , ,OCTOSPIM_P1_IO6 , ,FMC_D6/FMC_AD6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , ,DFSDM1_DATIN4 , , , ,UART7_CTS , , ,OCTOSPIM_P1_IO7 , ,FMC_D7/FMC_AD7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , ,DFSDM1_CKIN4 , ,SPI4_NSS , , , , ,SAI4_SD_B ,OCTOSPIM_P1_NCS ,FMC_D8/FMC_AD8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , ,DFSDM1_DATIN5 , ,SPI4_SCK , , , , ,SAI4_SCK_B , ,FMC_D9/FMC_AD9 ,COMP1_OUT ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , ,DFSDM1_CKIN5 , ,SPI4_MISO , , , , ,SAI4_FS_B , ,FMC_D10/FMC_AD10 ,COMP2_OUT ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI4_MCLK_B , ,FMC_D11/FMC_AD11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , ,USART10_CK ,FMC_D12/FMC_AD12 ,TIM1_BKIN_COMP12 ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , ,I2C5_SDA , , ,OCTOSPIM_P2_IO0 , , ,FMC_A0 ,TIM23_CH1 , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , ,I2C5_SCL , , ,OCTOSPIM_P2_IO1 , , ,FMC_A1 ,TIM23_CH2 , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , ,I2C5_SMBA , , ,OCTOSPIM_P2_IO2 , , ,FMC_A2 ,TIM23_CH3 , ,EVENTOUT, +PortF,PF3 , , , , , , , , , ,OCTOSPIM_P2_IO3 , , ,FMC_A3 ,TIM23_CH4 , ,EVENTOUT,ADC3_INP5 +PortF,PF4 , , , , , , , , , ,OCTOSPIM_P2_CLK , , ,FMC_A4 , , ,EVENTOUT,ADC3_INP9/ADC3_INN5 +PortF,PF5 , , , , , , , , , ,OCTOSPIM_P2_NCLK , , ,FMC_A5 , , ,EVENTOUT,ADC3_INP4 +PortF,PF6 , ,TIM16_CH1 ,FDCAN3_RX , , ,SPI5_NSS ,SAI1_SD_B ,UART7_RX ,SAI4_SD_B , ,OCTOSPIM_P1_IO3 , , ,TIM23_CH1 , ,EVENTOUT,ADC3_INP8/ADC3_INN4 +PortF,PF7 , ,TIM17_CH1 ,FDCAN3_TX , , ,SPI5_SCK ,SAI1_MCLK_B ,UART7_TX ,SAI4_MCLK_B , ,OCTOSPIM_P1_IO2 , , ,TIM23_CH2 , ,EVENTOUT,ADC3_INP3 +PortF,PF8 , ,TIM16_CH1N , , , ,SPI5_MISO ,SAI1_SCK_B ,UART7_RTS/UART7_DE ,SAI4_SCK_B ,TIM13_CH1 ,OCTOSPIM_P1_IO0 , , ,TIM23_CH3 , ,EVENTOUT,ADC3_INP7/ADC3_INN3 +PortF,PF9 , ,TIM17_CH1N , , , ,SPI5_MOSI ,SAI1_FS_B ,UART7_CTS ,SAI4_FS_B ,TIM14_CH1 ,OCTOSPIM_P1_IO1 , , ,TIM23_CH4 , ,EVENTOUT,ADC3_INP2 +PortF,PF10, ,TIM16_BKIN ,SAI1_D3 , ,PSSI_D15 , , , , ,OCTOSPIM_P1_CLK ,SAI4_D3 , , ,DCMI_D11/PSSI_D11 ,LCD_DE ,EVENTOUT,ADC3_INP6/ADC3_INN2 +PortF,PF11, , , , , ,SPI5_MOSI , , , ,OCTOSPIM_P1_NCLK ,SAI4_SD_B , ,FMC_NRAS ,DCMI_D12/PSSI_D12 ,TIM24_CH1 ,EVENTOUT,ADC1_INP2 +PortF,PF12, , , , , , , , , ,OCTOSPIM_P2_DQS , , ,FMC_A6 , ,TIM24_CH2 ,EVENTOUT,ADC1_INP5/ADC1_INN2 +PortF,PF13, , , ,DFSDM1_DATIN6 ,I2C4_SMBA , , , , , , , ,FMC_A7 , ,TIM24_CH3 ,EVENTOUT,ADC2_INP2 +PortF,PF14, , , ,DFSDM1_CKIN6 ,I2C4_SCL , , , , , , , ,FMC_A8 , ,TIM24_CH4 ,EVENTOUT,ADC2_INP6/ADC2_INN2 +PortF,PF15, , , , ,I2C4_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , ,OCTOSPIM_P2_IO4 , ,UART9_RX ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , ,OCTOSPIM_P2_IO5 , ,UART9_TX ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , ,TIM8_BKIN , , , , , , , ,TIM8_BKIN_COMP12 ,FMC_A12 , ,TIM24_ETR ,EVENTOUT, +PortG,PG3 , , , ,TIM8_BKIN2 , , , , , , , ,TIM8_BKIN2_COMP12 ,FMC_A13 ,TIM23_ETR , ,EVENTOUT, +PortG,PG4 , ,TIM1_BKIN2 , , , , , , , , , ,TIM1_BKIN2_COMP12 ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , ,TIM1_ETR , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , ,TIM17_BKIN , , , , , , , , ,OCTOSPIM_P1_NCS , ,FMC_NE3 ,DCMI_D12/PSSI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , , , , , ,SAI1_MCLK_A ,USART6_CK , ,OCTOSPIM_P2_DQS , , ,FMC_INT ,DCMI_D13/PSSI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , ,TIM8_ETR , ,SPI6_NSS/I2S6_WS , ,USART6_RTS/USART6_DE ,SPDIFRX1_IN3 , , ,ETH_PPS_OUT ,FMC_SDCLK , ,LCD_G7 ,EVENTOUT, +PortG,PG9 , , ,FDCAN3_TX , , ,SPI1_MISO/I2S1_SDI , ,USART6_RX ,SPDIFRX1_IN4 ,OCTOSPIM_P1_IO6 ,SAI4_FS_B ,SDMMC2_D0 ,FMC_NE2/FMC_NCE ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortG,PG10, , ,FDCAN3_RX ,OCTOSPIM_P2_IO6 , ,SPI1_NSS/I2S1_WS , , , ,LCD_G3 ,SAI4_SD_B ,SDMMC2_D1 ,FMC_NE3 ,DCMI_D2/PSSI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, ,LPTIM1_IN2 , , ,USART10_RX ,SPI1_SCK/I2S1_CK , , ,SPDIFRX1_IN1 ,OCTOSPIM_P2_IO7 ,SDMMC2_D2 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3/PSSI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, ,LPTIM1_IN1 , ,OCTOSPIM_P2_NCS ,USART10_TX ,SPI6_MISO/I2S6_SDI , ,USART6_RTS/USART6_DE ,SPDIFRX1_IN2 ,LCD_B4 ,SDMMC2_D3 ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_NE4 ,TIM23_CH1 ,LCD_B1 ,EVENTOUT, +PortG,PG13,TRACED0 ,LPTIM1_OUT , , ,USART10_CTS/USART10_NSS ,SPI6_SCK/I2S6_CK , ,USART6_CTS/USART6_NSS , , ,SDMMC2_D6 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 ,TIM23_CH2 ,LCD_R0 ,EVENTOUT, +PortG,PG14,TRACED1 ,LPTIM1_ETR , , ,USART10_RTS/USART10_DE ,SPI6_MOSI/I2S6_SDO , ,USART6_TX , ,OCTOSPIM_P1_IO7 ,SDMMC2_D7 ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 ,TIM23_CH3 ,LCD_B0 ,EVENTOUT, +PortG,PG15, , , , , , , ,USART6_CTS/USART6_NSS , ,OCTOSPIM_P2_DQS , ,USART10_CK ,FMC_NCAS ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32h743_af.csv b/ports/stm32/boards/stm32h743_af.csv index 32e67e2bdc09d..4a291265c48fb 100644 --- a/ports/stm32/boards/stm32h743_af.csv +++ b/ports/stm32/boards/stm32h743_af.csv @@ -1,170 +1,170 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS,TIM1/2/16/17/LPTIM1/HRTIM1,SAI1/TIM3/4/5/12/HRTIM1,LPUART/TIM8/LPTIM2/3/4/5/HRTIM1/DFSDM,I2C1/2/3/4/USART1/TIM15/LPTIM2/DFSDM/CEC,SPI1/2/3/4/5/6/CEC,SPI2/3/SAI1/3/I2C4/UART4/DFSDM,SPI2/3/6/USART1/2/3/6/UART7/SDMMC1,SPI6/SAI2/4/UART4/5/8/LPUART/SDMMC1/SPDIFRX,SAI4/FDCAN1/2/TIM13/14/QUADSPI/FMC/SDMMC2/LCD/SPDIFRX,SAI2/4/TIM8/QUADSPI/SDMMC2/OTG1_HS/OTG2_FS/LCD,I2C4/UART7/SWPMI1/TIM1/8/DFSDM/SDMMC2/MDIOS/ETH,TIM1/8/FMC/SDMMC1/MDIOS/OTG1_FS/LCD,TIM1/DCMI/LCD/COMP,UART5/LCD,SYS,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,TIM15_BKIN,,,USART2_CTS/USART2_NSS,UART4_TX,SDMMC2_CMD,SAI2_SD_B,ETH_MII_CRS,,,,EVENTOUT,ADC1_INP16/ADC12_INN1/ADC12_INP0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,LPTIM3_OUT,TIM15_CH1N,,,USART2_RTS,UART4_RX,QUADSPI_BK1_IO3,SAI2_MCK_B,ETH_MII_RX_CLK/ETH_RMII_REF_CLK,,,LCD_R2,EVENTOUT,ADC1_INN16/ADC1_INP17/ADC12_INP1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,LPTIM4_OUT,TIM15_CH1,,,USART2_TX,SAI2_SCK_B,,,ETH_MDIO,MDIOS_MDIO,,LCD_R1,EVENTOUT,ADC12_INP14 -PortA,PA3,,TIM2_CH4,TIM5_CH4,LPTIM5_OUT,TIM15_CH2,,,USART2_RX,,LCD_B2,OTG_HS_ULPI_D0,ETH_MII_COL,,,LCD_B5,EVENTOUT,ADC12_INP15 -PortA,PA4,,,TIM5_ETR,,,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,USART2_CK,SPI6_NSS,,,,OTG_HS_SOF,DCMI_HSYNC,LCD_VSYNC,EVENTOUT,ADC12_INP18 -PortA,PA5,,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,SPI1_SCK/I2S1_CK,,,SPI6_SCK,,OTG_HS_ULPI_CK,,,,LCD_R4,EVENTOUT,ADC12_INN18/ADC12_INP19 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO/I2S1_SDI,,,SPI6_MISO,TIM13_CH1,TIM8_BKIN_COMP12,MDIOS_MDC,TIM1_BKIN_COMP12,DCMI_PIXCLK,LCD_G2,EVENTOUT,ADC12_INP3 -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI/I2S1_SDO,,,SPI6_MOSI,TIM14_CH1,,ETH_MII_RX_DV/ETH_RMII_CRS_DV,FMC_SDNWE,,,EVENTOUT,ADC12_INN3/ADC12_INP7 -PortA,PA8,MCO1,TIM1_CH1,HRTIM_CHB2,TIM8_BKIN2,I2C3_SCL,,,USART1_CK,,,OTG_FS_SOF,UART7_RX,TIM8_BKIN2_COMP12,LCD_B3,LCD_R6,EVENTOUT, -PortA,PA9,,TIM1_CH2,HRTIM_CHC1,LPUART1_TX,I2C3_SMBA,SPI2_SCK/I2S2_CK,,USART1_TX,,CAN1_RXFD,,ETH_TX_ER,,DCMI_D0,LCD_R5,EVENTOUT, -PortA,PA10,,TIM1_CH3,HRTIM_CHC2,LPUART1_RX,,,,USART1_RX,,CAN1_TXFD,OTG_FS_ID,MDIOS_MDIO,LCD_B4,DCMI_D1,LCD_B1,EVENTOUT, -PortA,PA11,,TIM1_CH4,HRTIM_CHD1,LPUART1_CTS,,SPI2_NSS/I2S2_WS,UART4_RX,USART1_CTS/USART1_NSS,,CAN1_RX,OTG_FS_DM,,,,LCD_R4,EVENTOUT, -PortA,PA12,,TIM1_ETR,HRTIM_CHD2,LPUART1_RTS,,SPI2_SCK/I2S2_CK,UART4_TX,USART1_RTS,SAI2_FS_B,CAN1_TX,OTG_FS_DP,,,,LCD_R5,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1/TIM2_ETR,HRTIM_FLT1,,HDMI_CEC,SPI1_NSS/I2S1_WS,SPI3_NSS/I2S3_WS,SPI6_NSS,UART4_RTS,,,UART7_TX,,,,EVENTOUT, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,DFSDM_CKOUT,,UART4_CTS,LCD_R3,OTG_HS_ULPI_D1,ETH_MII_RXD2,,,LCD_G1,EVENTOUT,ADC12_INN5/ADC12_INP9 -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,DFSDM_DATIN1,,,LCD_R6,OTG_HS_ULPI_D2,ETH_MII_RXD3,,,LCD_G0,EVENTOUT,ADC12_INP5 -PortB,PB2,,,SAI1_D1,,DFSDM_CKIN1,,SAI1_SD_A,SPI3_MOSI/I2S3_SDO,SAI4_SD_A,QUADSPI_CLK,SAI4_D1,ETH_TX_ER,,,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,HRTIM_FLT4,,,SPI1_SCK/I2S1_CK,SPI3_SCK/I2S3_CK,,SPI6_SCK,SDMMC2_D2,,UART7_RX,,,,EVENTOUT, -PortB,PB4,NJTRST,TIM16_BKIN,TIM3_CH1,HRTIM_EEV6,,SPI1_MISO/I2S1_SDI,SPI3_MISO/I2S3_SDI,SPI2_NSS/I2S2_WS,SPI6_MISO,SDMMC2_D3,,UART7_TX,,,,EVENTOUT, -PortB,PB5,,TIM17_BKIN,TIM3_CH2,HRTIM_EEV7,I2C1_SMBA,SPI1_MOSI/I2S1_SDO,I2C4_SMBA,SPI3_MOSI/I2S3_SDO,SPI6_MOSI,CAN2_RX,OTG_HS_ULPI_D7,ETH_PPS_OUT,FMC_SDCKE1,DCMI_D10,UART5_RX,EVENTOUT, -PortB,PB6,,TIM16_CH1N,TIM4_CH1,HRTIM_EEV8,I2C1_SCL,HDMI_CEC,I2C4_SCL,USART1_TX,LPUART1_TX,CAN2_TX,QUADSPI_BK1_NCS,DFSDM_DATIN5,FMC_SDNE1,DCMI_D5,UART5_TX,EVENTOUT, -PortB,PB7,,TIM17_CH1N,TIM4_CH2,HRTIM_EEV9,I2C1_SDA,,I2C4_SDA,USART1_RX,LPUART1_RX,CAN2_TXFD,,DFSDM_CKIN5,FMC_NL,DCMI_VSYNC,,EVENTOUT, -PortB,PB8,,TIM16_CH1,TIM4_CH3,DFSDM_CKIN7,I2C1_SCL,,I2C4_SCL,SDMMC1_CKIN,UART4_RX,CAN1_RX,SDMMC2_D4,ETH_MII_TXD3,SDMMC1_D4,DCMI_D6,LCD_B6,EVENTOUT, -PortB,PB9,,TIM17_CH1,TIM4_CH4,DFSDM_DATIN7,I2C1_SDA,SPI2_NSS/I2S2_WS,I2C4_SDA,SDMMC1_CDIR,UART4_TX,CAN1_TX,SDMMC2_D5,I2C4_SMBA,SDMMC1_D5,DCMI_D7,LCD_B7,EVENTOUT, -PortB,PB10,,TIM2_CH3,HRTIM_SCOUT,LPTIM2_IN1,I2C2_SCL,SPI2_SCK/I2S2_CK,DFSDM_DATIN7,USART3_TX,,QUADSPI_BK1_NCS,OTG_HS_ULPI_D3,ETH_MII_RX_ER,,,LCD_G4,EVENTOUT, -PortB,PB11,,TIM2_CH4,HRTIM_SCIN,LPTIM2_ETR,I2C2_SDA,,DFSDM_CKIN7,USART3_RX,,,OTG_HS_ULPI_D4,ETH_MII_TX_EN/ETH_RMII_TX_EN,,,LCD_G5,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,,I2C2_SMBA,SPI2_NSS/I2S2_WS,DFSDM_DATIN1,USART3_CK,,CAN2_RX,OTG_HS_ULPI_D5,ETH_MII_TXD0/ETH_RMII_TXD0,OTG_HS_ID,TIM1_BKIN_COMP12,UART5_RX,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,LPTIM2_OUT,,SPI2_SCK/I2S2_CK,DFSDM_CKIN1,USART3_CTS/USART3_NSS,,CAN2_TX,OTG_HS_ULPI_D6,ETH_MII_TXD1/ETH_RMII_TXD1,,,UART5_TX,EVENTOUT, -PortB,PB14,,TIM1_CH2N,TIM12_CH1,TIM8_CH2N,USART1_TX,SPI2_MISO/I2S2_SDI,DFSDM_DATIN2,USART3_RTS,UART4_RTS,SDMMC2_D0,,,OTG_HS_DM,,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,TIM12_CH2,TIM8_CH3N,USART1_RX,SPI2_MOSI/I2S2_SDO,DFSDM_CKIN2,,UART4_CTS,SDMMC2_D1,,,OTG_HS_DP,,,EVENTOUT, -PortC,PC0,,,,DFSDM_CKIN0,,,DFSDM_DATIN4,,SAI2_FS_B,,OTG_HS_ULPI_STP,,FMC_SDNWE,,LCD_R5,EVENTOUT,ADC123_INP10 -PortC,PC1,TRACED0,,SAI1_D1,DFSDM_DATIN0,DFSDM_CKIN4,SPI2_MOSI/I2S2_SDO,SAI1_SD_A,,SAI4_SD_A,SDMMC2_CK,SAI4_D1,ETH_MDC,MDIOS_MDC,,,EVENTOUT,ADC123_INN10/ADC123_INP11 -PortC,PC2,,,,DFSDM_CKIN1,,SPI2_MISO/I2S2_SDI,DFSDM_CKOUT,,,,OTG_HS_ULPI_DIR,ETH_MII_TXD2,FMC_SDNE0,,,EVENTOUT,ADC123_INN11/ADC123_INP12/ADC3_INN1/ADC3_INP0 -PortC,PC3,,,,DFSDM_DATIN1,,SPI2_MOSI/I2S2_SDO,,,,,OTG_HS_ULPI_NXT,ETH_MII_TX_CLK,FMC_SDCKE0,,,EVENTOUT,ADC12_INN12/ADC12_INP13/ADC3_INP1 -PortC,PC4,,,,DFSDM_CKIN2,,I2S1_MCK,,,,SPDIFRX_IN2,,ETH_MII_RXD0/ETH_RMII_RXD0,FMC_SDNE0,,,EVENTOUT,ADC12_INP4 -PortC,PC5,,,SAI1_D3,DFSDM_DATIN2,,,,,,SPDIFRX_IN3,SAI4_D3,ETH_MII_RXD1/ETH_RMII_RXD1,FMC_SDCKE0,COMP_1_OUT,,EVENTOUT,ADC12_INN4/ADC12_INP8 -PortC,PC6,,HRTIM_CHA1,TIM3_CH1,TIM8_CH1,DFSDM_CKIN3,I2S2_MCK,,USART6_TX,SDMMC1_D0DIR,FMC_NWAIT,SDMMC2_D6,,SDMMC1_D6,DCMI_D0,LCD_HSYNC,EVENTOUT, -PortC,PC7,TRGIO,HRTIM_CHA2,TIM3_CH2,TIM8_CH2,DFSDM_DATIN3,,I2S3_MCK,USART6_RX,SDMMC1_D123DIR,FMC_NE1,SDMMC2_D7,SWPMI_TX,SDMMC1_D7,DCMI_D1,LCD_G6,EVENTOUT, -PortC,PC8,TRACED1,HRTIM_CHB1,TIM3_CH3,TIM8_CH3,,,,USART6_CK,UART5_RTS,FMC_NE2/FMC_NCE,,SWPMI_RX,SDMMC1_D0,DCMI_D2,,EVENTOUT, -PortC,PC9,MCO2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,,UART5_CTS,QUADSPI_BK1_IO0,LCD_G3,SWPMI_SUSPEND,SDMMC1_D1,DCMI_D3,LCD_B2,EVENTOUT, -PortC,PC10,,,HRTIM_EEV1,DFSDM_CKIN5,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,QUADSPI_BK1_IO1,,,SDMMC1_D2,DCMI_D8,LCD_R2,EVENTOUT, -PortC,PC11,,,HRTIM_FLT2,DFSDM_DATIN5,,,SPI3_MISO/I2S3_SDI,USART3_RX,UART4_RX,QUADSPI_BK2_NCS,,,SDMMC1_D3,DCMI_D4,,EVENTOUT, -PortC,PC12,TRACED3,,HRTIM_EEV2,,,,SPI3_MOSI/I2S3_SDO,USART3_CK,UART5_TX,,,,SDMMC1_CK,DCMI_D9,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,DFSDM_CKIN6,,,SAI3_SCK_A,,UART4_RX,CAN1_RX,,,FMC_D2/FMC_DA2,,,EVENTOUT, -PortD,PD1,,,,DFSDM_DATIN6,,,SAI3_SD_A,,UART4_TX,CAN1_TX,,,FMC_D3/FMC_DA3,,,EVENTOUT, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,,UART5_RX,,,,SDMMC1_CMD,DCMI_D11,,EVENTOUT, -PortD,PD3,,,,DFSDM_CKOUT,,SPI2_SCK/I2S2_CK,,USART2_CTS/USART2_NSS,,,,,FMC_CLK,DCMI_D5,LCD_G7,EVENTOUT, -PortD,PD4,,,HRTIM_FLT3,,,,SAI3_FS_A,USART2_RTS,,CAN1_RXFD,,,FMC_NOE,,,EVENTOUT, -PortD,PD5,,,HRTIM_EEV3,,,,,USART2_TX,,CAN1_TXFD,,,FMC_NWE,,,EVENTOUT, -PortD,PD6,,,SAI1_D1,DFSDM_CKIN4,DFSDM_DATIN1,SPI3_MOSI/I2S3_SDO,SAI1_SD_A,USART2_RX,SAI4_SD_A,CAN2_RXFD,SAI4_D1,SDMMC2_CK,FMC_NWAIT,DCMI_D10,LCD_B2,EVENTOUT, -PortD,PD7,,,,DFSDM_DATIN4,,SPI1_MOSI/I2S1_SDO,DFSDM_CKIN1,USART2_CK,,SPDIFRX_IN0,,SDMMC2_CMD,FMC_NE1,,,EVENTOUT, -PortD,PD8,,,,DFSDM_CKIN3,,,SAI3_SCK_B,USART3_TX,,SPDIFRX_IN1,,,FMC_D13/FMC_DA13,,,EVENTOUT, -PortD,PD9,,,,DFSDM_DATIN3,,,SAI3_SD_B,USART3_RX,,CAN2_RXFD,,,FMC_D14/FMC_DA14,,,EVENTOUT, -PortD,PD10,,,,DFSDM_CKOUT,,,SAI3_FS_B,USART3_CK,,CAN2_TXFD,,,FMC_D15/FMC_DA15,,LCD_B3,EVENTOUT, -PortD,PD11,,,,LPTIM2_IN2,I2C4_SMBA,,,USART3_CTS/USART3_NSS,,QUADSPI_BK1_IO0,SAI2_SD_A,,FMC_A16,,,EVENTOUT, -PortD,PD12,,LPTIM1_IN1,TIM4_CH1,LPTIM2_IN1,I2C4_SCL,,,USART3_RTS,,QUADSPI_BK1_IO1,SAI2_FS_A,,FMC_A17,,,EVENTOUT, -PortD,PD13,,LPTIM1_OUT,TIM4_CH2,,I2C4_SDA,,,,,QUADSPI_BK1_IO3,SAI2_SCK_A,,FMC_A18,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,SAI3_MCLK_B,,UART8_CTS,,,,FMC_D0/FMC_DA0,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,SAI3_MCLK_A,,UART8_RTS,,,,FMC_D1/FMC_DA1,,,EVENTOUT, -PortE,PE0,,LPTIM1_ETR,TIM4_ETR,HRTIM_SCIN,LPTIM2_ETR,,,,UART8_RX,CAN1_RXFD,SAI2_MCK_A,,FMC_NBL0,DCMI_D2,,EVENTOUT, -PortE,PE1,,LPTIM1_IN2,,HRTIM_SCOUT,,,,,UART8_TX,CAN1_TXFD,,,FMC_NBL1,DCMI_D3,,EVENTOUT, -PortE,PE2,TRACECLK,,SAI1_CK1,,,SPI4_SCK,SAI1_MCLK_A,,SAI4_MCLK_A,QUADSPI_BK1_IO2,SAI4_CK1,ETH_MII_TXD3,FMC_A23,,,EVENTOUT, -PortE,PE3,TRACED0,,,,TIM15_BKIN,,SAI1_SD_B,,SAI4_SD_B,,,,FMC_A19,,,EVENTOUT, -PortE,PE4,TRACED1,,SAI1_D2,DFSDM_DATIN3,TIM15_CH1N,SPI4_NSS,SAI1_FS_A,,SAI4_FS_A,,SAI4_D2,,FMC_A20,DCMI_D4,LCD_B0,EVENTOUT, -PortE,PE5,TRACED2,,SAI1_CK2,DFSDM_CKIN3,TIM15_CH1,SPI4_MISO,SAI1_SCK_A,,SAI4_SCK_A,,SAI4_CK2,,FMC_A21,DCMI_D6,LCD_G0,EVENTOUT, -PortE,PE6,TRACED3,TIM1_BKIN2,SAI1_D1,,TIM15_CH2,SPI4_MOSI,SAI1_SD_A,,SAI4_SD_A,SAI4_D1,SAI2_MCK_B,TIM1_BKIN2_COMP12,FMC_A22,DCMI_D7,LCD_G1,EVENTOUT, -PortE,PE7,,TIM1_ETR,,DFSDM_DATIN2,,,,UART7_RX,,,QUADSPI_BK2_IO0,,FMC_D4/FMC_DA4,,,EVENTOUT, -PortE,PE8,,TIM1_CH1N,,DFSDM_CKIN2,,,,UART7_TX,,,QUADSPI_BK2_IO1,,FMC_D5/FMC_DA5,COMP_2_OUT,,EVENTOUT, -PortE,PE9,,TIM1_CH1,,DFSDM_CKOUT,,,,UART7_RTS,,,QUADSPI_BK2_IO2,,FMC_D6/FMC_DA6,,,EVENTOUT, -PortE,PE10,,TIM1_CH2N,,DFSDM_DATIN4,,,,UART7_CTS,,,QUADSPI_BK2_IO3,,FMC_D7/FMC_DA7,,,EVENTOUT, -PortE,PE11,,TIM1_CH2,,DFSDM_CKIN4,,SPI4_NSS,,,,,SAI2_SD_B,,FMC_D8/FMC_DA8,,LCD_G3,EVENTOUT, -PortE,PE12,,TIM1_CH3N,,DFSDM_DATIN5,,SPI4_SCK,,,,,SAI2_SCK_B,,FMC_D9/FMC_DA9,COMP_1_OUT,LCD_B4,EVENTOUT, -PortE,PE13,,TIM1_CH3,,DFSDM_CKIN5,,SPI4_MISO,,,,,SAI2_FS_B,,FMC_D10/FMC_DA10,COMP_2_OUT,LCD_DE,EVENTOUT, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCK_B,,FMC_D11/FMC_DA11,,LCD_CLK,EVENTOUT, -PortE,PE15,,TIM1_BKIN,,,,HDMI__TIM1_BKIN,,,,,,,FMC_D12/FMC_DA12,TIM1_BKIN_COMP12,LCD_R7,EVENTOUT, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_INP5 -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_INN5/ADC3_INP9 -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_INP4 -PortF,PF6,,TIM16_CH1,,,,SPI5_NSS,SAI1_SD_B,UART7_RX,SAI4_SD_B,QUADSPI_BK1_IO3,,,,,,EVENTOUT,ADC3_INN4/ADC3_INP8 -PortF,PF7,,TIM17_CH1,,,,SPI5_SCK,SAI1_MCLK_B,UART7_TX,SAI4_MCLK_B,QUADSPI_BK1_IO2,,,,,,EVENTOUT,ADC3_INP3 -PortF,PF8,,TIM16_CH1N,,,,SPI5_MISO,SAI1_SCK_B,UART7_RTS,SAI4_SCK_B,TIM13_CH1,QUADSPI_BK1_IO0,,,,,EVENTOUT,ADC3_INN3/ADC3_INP7 -PortF,PF9,,TIM17_CH1N,,,,SPI5_MOSI,SAI1_FS_B,UART7_CTS,SAI4_FS_B,TIM14_CH1,QUADSPI_BK1_IO1,,,,,EVENTOUT,ADC3_INP2 -PortF,PF10,,TIM16_BKIN,SAI1_D3,,,,,,,QUADSPI_CLK,SAI4_D3,,,DCMI_D11,LCD_DE,EVENTOUT,ADC3_INN2/ADC3_INP6 -PortF,PF11,,,,,,SPI5_MOSI,,,,,SAI2_SD_B,,FMC_SDNRAS,DCMI_D12,,EVENTOUT,ADC1_INP2 -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT,ADC1_INN2/DC1_INP6 -PortF,PF13,,,,DFSDM_DATIN6,I2C4_SMBA,,,,,,,,FMC_A7,,,EVENTOUT,ACD2_INP2 -PortF,PF14,,,,DFSDM_CKIN6,I2C4_SCL,,,,,,,,FMC_A8,,,EVENTOUT,ADC2_INN2/ADC2_INP6 -PortF,PF15,,,,,I2C4_SDA,,,,,,,,FMC_A9,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,FMC_A10,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,FMC_A11,,,EVENTOUT, -PortG,PG2,,,,TIM8_BKIN,,,,,,,,TIM8_BKIN_COMP12,FMC_A12,,,EVENTOUT, -PortG,PG3,,,,TIM8_BKIN2,,,,,,,,TIM8_BKIN2_COMP12,FMC_A13,,,EVENTOUT, -PortG,PG4,,TIM1_BKIN2,,,,,,,,,,TIM1_BKIN2_COMP12,FMC_A14/FMC_BA0,,,EVENTOUT, -PortG,PG5,,TIM1_ETR,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT, -PortG,PG6,,TIM17_BKIN,HRTIM_CHE1,,,,,,,,QUADSPI_BK1_NCS,,FMC_NE3,DCMI_D12,LCD_R7,EVENTOUT, -PortG,PG7,,,HRTIM_CHE2,,,,SAI1_MCLK_A,USART6_CK,,,,,FMC_INT,DCMI_D13,LCD_CLK,EVENTOUT, -PortG,PG8,,,,TIM8_ETR,,SPI6_NSS,,USART6_RTS,SPDIFRX_IN2,,,ETH_PPS_OUT,FMC_SDCLK,,LCD_G7,EVENTOUT, -PortG,PG9,,,,,,SPI1_MISO/I2S1_SDI,,USART6_RX,SPDIFRX_IN3,QUADSPI_BK2_IO2,SAI2_FS_B,,FMC_NE2/FMC_NCE,DCMI_VSYNC,,EVENTOUT, -PortG,PG10,,,HRTIM_FLT5,,,SPI1_NSS/I2S1_WS,,,,LCD_G3,SAI2_SD_B,,FMC_NE3,DCMI_D2,LCD_B2,EVENTOUT, -PortG,PG11,,,HRTIM_EEV4,,,SPI1_SCK/I2S1_CK,,,SPDIFRX_IN0,,SDMMC2_D2,ETH_MII_TX_EN/ETH_RMII_TX_EN,,DCMI_D3,LCD_B3,EVENTOUT, -PortG,PG12,,LPTIM1_IN1,HRTIM_EEV5,,,SPI6_MISO,,USART6_RTS,SPDIFRX_IN1,LCD_B4,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_NE4,,LCD_B1,EVENTOUT, -PortG,PG13,TRACED0,LPTIM1_OUT,HRTIM_EEV10,,,SPI6_SCK,,USART6_CTS/USART6_NSS,,,,ETH_MII_TXD0/ETH_RMII_TXD0,FMC_A24,,LCD_R0,EVENTOUT, -PortG,PG14,TRACED1,LPTIM1_ETR,,,,SPI6_MOSI,,USART6_TX,,QUADSPI_BK2_IO3,,ETH_MII_TXD1/ETH_RMII_TXD1,FMC_A25,,LCD_B0,EVENTOUT, -PortG,PG15,,,,,,,,USART6_CTS/USART6_NSS,,,,,FMC_SDNCAS,DCMI_D13,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH2,,LPTIM1_IN2,,,,,,,,QUADSPI_BK2_IO0,SAI2_SCK_B,ETH_MII_CRS,FMC_SDCKE0,,LCD_R0,EVENTOUT,ADC3_INP13 -PortH,PH3,,,,,,,,,,QUADSPI_BK2_IO1,SAI2_MCK_B,ETH_MII_COL,FMC_SDNE0,,LCD_R1,EVENTOUT,ADC3_INN13/ADC3_INP14 -PortH,PH4,,,,,I2C2_SCL,,,,,LCD_G5,OTG_HS_ULPI_NXT,,,,LCD_G4,EVENTOUT,ADC3_INN14/ADC3_INP15 -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT,ADC3_INN15/ADC3_INP16 -PortH,PH6,,,TIM12_CH1,,I2C2_SMBA,SPI5_SCK,,,,,,ETH_MII_RXD2,FMC_SDNE1,DCMI_D8,,EVENTOUT, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,ETH_MII_RXD3,FMC_SDCKE1,DCMI_D9,,EVENTOUT, -PortH,PH8,,,TIM5_ETR,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC,LCD_R2,EVENTOUT, -PortH,PH9,,,TIM12_CH2,,I2C3_SMBA,,,,,,,,FMC_D17,DCMI_D0,LCD_R3,EVENTOUT, -PortH,PH10,,,TIM5_CH1,,I2C4_SMBA,,,,,,,,FMC_D18,DCMI_D1,LCD_R4,EVENTOUT, -PortH,PH11,,,TIM5_CH2,,I2C4_SCL,,,,,,,,FMC_D19,DCMI_D2,LCD_R5,EVENTOUT, -PortH,PH12,,,TIM5_CH3,,I2C4_SDA,,,,,,,,FMC_D20,DCMI_D3,LCD_R6,EVENTOUT, -PortH,PH13,,,,TIM8_CH1N,,,,,UART4_TX,CAN1_TX,,,FMC_D21,,LCD_G2,EVENTOUT, -PortH,PH14,,,,TIM8_CH2N,,,,,UART4_RX,CAN1_RX,,,FMC_D22,DCMI_D4,LCD_G3,EVENTOUT, -PortH,PH15,,,,TIM8_CH3N,,,,,,CAN1_TXFD,,,FMC_D23,DCMI_D11,LCD_G4,EVENTOUT, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS/I2S2_WS,,,,CAN1_RXFD,,,FMC_D24,DCMI_D13,LCD_G5,EVENTOUT, -PortI,PI1,,,,TIM8_BKIN2,,SPI2_SCK/I2S2_CK,,,,,,TIM8_BKIN2_COMP12,FMC_D25,DCMI_D8,LCD_G6,EVENTOUT, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO/I2S2_SDI,,,,,,,FMC_D26,DCMI_D9,LCD_G7,EVENTOUT, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI/I2S2_SDO,,,,,,,FMC_D27,DCMI_D10,,EVENTOUT, -PortI,PI4,,,,TIM8_BKIN,,,,,,,SAI2_MCK_A,TIM8_BKIN_COMP12,FMC_NBL2,DCMI_D5,LCD_B4,EVENTOUT, -PortI,PI5,,,,TIM8_CH1,,,,,,,SAI2_SCK_A,,FMC_NBL3,DCMI_VSYNC,LCD_B5,EVENTOUT, -PortI,PI6,,,,TIM8_CH2,,,,,,,SAI2_SD_A,,FMC_D28,DCMI_D6,LCD_B6,EVENTOUT, -PortI,PI7,,,,TIM8_CH3,,,,,,,SAI2_FS_A,,FMC_D29,DCMI_D7,LCD_B7,EVENTOUT, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT, -PortI,PI9,,,,,,,,,UART4_RX,CAN1_RX,,,FMC_D30,,LCD_VSYNC,EVENTOUT, -PortI,PI10,,,,,,,,,,CAN1_RXFD,,ETH_MII_RX_ER,FMC_D31,,LCD_HSYNC,EVENTOUT, -PortI,PI11,,,,,,,,,,LCD_G6,OTG_HS_ULPI_DIR,,,,,EVENTOUT, -PortI,PI12,,,,,,,,,,,,ETH_TX_ER,,,LCD_HSYNC,EVENTOUT, -PortI,PI13,,,,,,,,,,,,,,,LCD_VSYNC,EVENTOUT, -PortI,PI14,,,,,,,,,,,,,,,LCD_CLK,EVENTOUT, -PortI,PI15,,,,,,,,,,LCD_G2,,,,,LCD_R0,EVENTOUT, -PortJ,PJ0,,,,,,,,,,LCD_R7,,,,,LCD_R1,EVENTOUT, -PortJ,PJ1,,,,,,,,,,,,,,,LCD_R2,EVENTOUT, -PortJ,PJ2,,,,,,,,,,,,,,,LCD_R3,EVENTOUT, -PortJ,PJ3,,,,,,,,,,,,,,,LCD_R4,EVENTOUT, -PortJ,PJ4,,,,,,,,,,,,,,,LCD_R5,EVENTOUT, -PortJ,PJ5,,,,,,,,,,,,,,,LCD_R6,EVENTOUT, -PortJ,PJ6,,,,TIM8_CH2,,,,,,,,,,,LCD_R7,EVENTOUT, -PortJ,PJ7,TRGIN,,,TIM8_CH2N,,,,,,,,,,,LCD_G0,EVENTOUT, -PortJ,PJ8,,TIM1_CH3N,,TIM8_CH1,,,,,UART8_TX,,,,,,LCD_G1,EVENTOUT, -PortJ,PJ9,,TIM1_CH3,,TIM8_CH1N,,,,,UART8_RX,,,,,,LCD_G2,EVENTOUT, -PortJ,PJ10,,TIM1_CH2N,,TIM8_CH2,,SPI5_MOSI,,,,,,,,,LCD_G3,EVENTOUT, -PortJ,PJ11,,TIM1_CH2,,TIM8_CH2N,,SPI5_MISO,,,,,,,,,LCD_G4,EVENTOUT, -PortJ,PJ12,TRGOUT,,,,,,,,,LCD_G3,,,,,LCD_B0,EVENTOUT, -PortJ,PJ13,,,,,,,,,,LCD_B4,,,,,LCD_B1,EVENTOUT, -PortJ,PJ14,,,,,,,,,,,,,,,LCD_B2,EVENTOUT, -PortJ,PJ15,,,,,,,,,,,,,,,LCD_B3,EVENTOUT, -PortK,PK0,,TIM1_CH1N,,TIM8_CH3,,SPI5_SCK,,,,,,,,,LCD_G5,EVENTOUT, -PortK,PK1,,TIM1_CH1,,TIM8_CH3N,,SPI5_NSS,,,,,,,,,LCD_G6,EVENTOUT, -PortK,PK2,,TIM1_BKIN,,TIM8_BKIN,,,,,,,TIM8_BKIN_COMP12,TIM1_BKIN_COMP12,,,LCD_G7,EVENTOUT, -PortK,PK3,,,,,,,,,,,,,,,LCD_B4,EVENTOUT, -PortK,PK4,,,,,,,,,,,,,,,LCD_B5,EVENTOUT, -PortK,PK5,,,,,,,,,,,,,,,LCD_B6,EVENTOUT, -PortK,PK6,,,,,,,,,,,,,,,LCD_B7,EVENTOUT, -PortK,PK7,,,,,,,,,,,,,,,LCD_DE,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,TIM1/2/16/17/LPTIM1/HRTIM1,SAI1/TIM3/4/5/12/HRTIM1,LPUART/TIM8/LPTIM2/3/4/5/HRTIM1/DFSDM,I2C1/2/3/4/USART1/TIM15/LPTIM2/DFSDM/CEC,SPI1/2/3/4/5/6/CEC,SPI2/3/SAI1/3/I2C4/UART4/DFSDM,SPI2/3/6/USART1/2/3/6/UART7/SDMMC1,SPI6/SAI2/4/UART4/5/8/LPUART/SDMMC1/SPDIFRX,SAI4/FDCAN1/2/TIM13/14/QUADSPI/FMC/SDMMC2/LCD/SPDIFRX,SAI2/4/TIM8/QUADSPI/SDMMC2/OTG1_HS/OTG2_FS/LCD,I2C4/UART7/SWPMI1/TIM1/8/DFSDM/SDMMC2/MDIOS/ETH,TIM1/8/FMC/SDMMC1/MDIOS/OTG1_FS/LCD,TIM1/DCMI/LCD/COMP,UART5/LCD,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR ,TIM5_CH1 ,TIM8_ETR ,TIM15_BKIN , , ,USART2_CTS/USART2_NSS ,UART4_TX ,SDMMC2_CMD ,SAI2_SD_B ,ETH_MII_CRS , , , ,EVENTOUT,ADC1_INP16/C_ADC12_INN1/C_ADC12_INP0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 ,LPTIM3_OUT ,TIM15_CH1N , , ,USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 ,SAI2_MCK_B ,ETH_MII_RX_CLK/ETH_RMII_REF_CLK , , ,LCD_R2 ,EVENTOUT,ADC1_INN16/ADC1_INP17/C_ADC12_INP1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,LPTIM4_OUT ,TIM15_CH1 , , ,USART2_TX ,SAI2_SCK_B , , ,ETH_MDIO ,MDIOS_MDIO , ,LCD_R1 ,EVENTOUT,ADC12_INP14 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,LPTIM5_OUT ,TIM15_CH2 , , ,USART2_RX , ,LCD_B2 ,OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LCD_B5 ,EVENTOUT,ADC12_INP15 +PortA,PA4 , , ,TIM5_ETR , , ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,USART2_CK ,SPI6_NSS , , , ,OTG_HS_SOF ,DCMI_HSYNC ,LCD_VSYNC,EVENTOUT,ADC12_INP18 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR , ,TIM8_CH1N , ,SPI1_SCK/I2S1_CK , , ,SPI6_SCK , ,OTG_HS_ULPI_CK , , , ,LCD_R4 ,EVENTOUT,ADC12_INN18/ADC12_INP19 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,SPI1_MISO/I2S1_SDI, , ,SPI6_MISO ,TIM13_CH1 ,TIM8_BKIN_COMP12 ,MDIOS_MDC ,TIM1_BKIN_COMP12 ,DCMI_PIXCLK ,LCD_G2 ,EVENTOUT,ADC12_INP3 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,SPI1_MOSI/I2S1_SDO, , ,SPI6_MOSI ,TIM14_CH1 , ,ETH_MII_RX_DV/ETH_RMII_CRS_DV ,FMC_SDNWE , , ,EVENTOUT,ADC12_INN3/ADC12_INP7 +PortA,PA8 ,MCO1 ,TIM1_CH1 ,HRTIM_CHB2 ,TIM8_BKIN2 ,I2C3_SCL , , ,USART1_CK , , ,OTG_FS_SOF ,UART7_RX ,TIM8_BKIN2_COMP12 ,LCD_B3 ,LCD_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 ,HRTIM_CHC1 ,LPUART1_TX ,I2C3_SMBA ,SPI2_SCK/I2S2_CK , ,USART1_TX , ,CAN1_RXFD , ,ETH_TX_ER , ,DCMI_D0 ,LCD_R5 ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 ,HRTIM_CHC2 ,LPUART1_RX , , , ,USART1_RX , ,CAN1_TXFD ,OTG_FS_ID ,MDIOS_MDIO ,LCD_B4 ,DCMI_D1 ,LCD_B1 ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,HRTIM_CHD1 ,LPUART1_CTS , ,SPI2_NSS/I2S2_WS ,UART4_RX ,USART1_CTS/USART1_NSS , ,CAN1_RX ,OTG_FS_DM , , , ,LCD_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR ,HRTIM_CHD2 ,LPUART1_RTS , ,SPI2_SCK/I2S2_CK ,UART4_TX ,USART1_RTS ,SAI2_FS_B ,CAN1_TX ,OTG_FS_DP , , , ,LCD_R5 ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1/TIM2_ETR ,HRTIM_FLT1 , ,HDMI_CEC ,SPI1_NSS/I2S1_WS ,SPI3_NSS/I2S3_WS ,SPI6_NSS ,UART4_RTS , , ,UART7_TX , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , , ,DFSDM_CKOUT , ,UART4_CTS ,LCD_R3 ,OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , ,LCD_G1 ,EVENTOUT,ADC12_INN5/ADC12_INP9 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,DFSDM_DATIN1 , , ,LCD_R6 ,OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , ,LCD_G0 ,EVENTOUT,ADC12_INP5 +PortB,PB2 , , ,SAI1_D1 , ,DFSDM_CKIN1 , ,SAI1_SD_A ,SPI3_MOSI/I2S3_SDO ,SAI4_SD_A ,QUADSPI_CLK ,SAI4_D1 ,ETH_TX_ER , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 ,HRTIM_FLT4 , , ,SPI1_SCK/I2S1_CK ,SPI3_SCK/I2S3_CK , ,SPI6_SCK ,SDMMC2_D2 , ,UART7_RX , , , ,EVENTOUT, +PortB,PB4 ,NJTRST ,TIM16_BKIN ,TIM3_CH1 ,HRTIM_EEV6 , ,SPI1_MISO/I2S1_SDI,SPI3_MISO/I2S3_SDI ,SPI2_NSS/I2S2_WS ,SPI6_MISO ,SDMMC2_D3 , ,UART7_TX , , , ,EVENTOUT, +PortB,PB5 , ,TIM17_BKIN ,TIM3_CH2 ,HRTIM_EEV7 ,I2C1_SMBA ,SPI1_MOSI/I2S1_SDO,I2C4_SMBA ,SPI3_MOSI/I2S3_SDO ,SPI6_MOSI ,CAN2_RX ,OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 ,UART5_RX ,EVENTOUT, +PortB,PB6 , ,TIM16_CH1N ,TIM4_CH1 ,HRTIM_EEV8 ,I2C1_SCL ,HDMI_CEC ,I2C4_SCL ,USART1_TX ,LPUART1_TX ,CAN2_TX ,QUADSPI_BK1_NCS ,DFSDM_DATIN5 ,FMC_SDNE1 ,DCMI_D5 ,UART5_TX ,EVENTOUT, +PortB,PB7 , ,TIM17_CH1N ,TIM4_CH2 ,HRTIM_EEV9 ,I2C1_SDA , ,I2C4_SDA ,USART1_RX ,LPUART1_RX ,CAN2_TXFD , ,DFSDM_CKIN5 ,FMC_NL ,DCMI_VSYNC , ,EVENTOUT, +PortB,PB8 , ,TIM16_CH1 ,TIM4_CH3 ,DFSDM_CKIN7 ,I2C1_SCL , ,I2C4_SCL ,SDMMC1_CKIN ,UART4_RX ,CAN1_RX ,SDMMC2_D4 ,ETH_MII_TXD3 ,SDMMC1_D4 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortB,PB9 , ,TIM17_CH1 ,TIM4_CH4 ,DFSDM_DATIN7 ,I2C1_SDA ,SPI2_NSS/I2S2_WS ,I2C4_SDA ,SDMMC1_CDIR ,UART4_TX ,CAN1_TX ,SDMMC2_D5 ,I2C4_SMBA ,SDMMC1_D5 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 ,HRTIM_SCOUT ,LPTIM2_IN1 ,I2C2_SCL ,SPI2_SCK/I2S2_CK ,DFSDM_DATIN7 ,USART3_TX , ,QUADSPI_BK1_NCS ,OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LCD_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 ,HRTIM_SCIN ,LPTIM2_ETR ,I2C2_SDA , ,DFSDM_CKIN7 ,USART3_RX , , ,OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , , ,LCD_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,SPI2_NSS/I2S2_WS ,DFSDM_DATIN1 ,USART3_CK , ,CAN2_RX ,OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,OTG_HS_ID ,TIM1_BKIN_COMP12 ,UART5_RX ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , ,LPTIM2_OUT , ,SPI2_SCK/I2S2_CK ,DFSDM_CKIN1 ,USART3_CTS/USART3_NSS , ,CAN2_TX ,OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , ,UART5_TX ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N ,TIM12_CH1 ,TIM8_CH2N ,USART1_TX ,SPI2_MISO/I2S2_SDI,DFSDM_DATIN2 ,USART3_RTS ,UART4_RTS ,SDMMC2_D0 , , ,OTG_HS_DM , , ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N ,TIM12_CH2 ,TIM8_CH3N ,USART1_RX ,SPI2_MOSI/I2S2_SDO,DFSDM_CKIN2 , ,UART4_CTS ,SDMMC2_D1 , , ,OTG_HS_DP , , ,EVENTOUT, +PortC,PC0 , , , ,DFSDM_CKIN0 , , ,DFSDM_DATIN4 , ,SAI2_FS_B , ,OTG_HS_ULPI_STP , ,FMC_SDNWE , ,LCD_R5 ,EVENTOUT,ADC123_INP10 +PortC,PC1 ,TRACED0 , ,SAI1_D1 ,DFSDM_DATIN0 ,DFSDM_CKIN4 ,SPI2_MOSI/I2S2_SDO,SAI1_SD_A , ,SAI4_SD_A ,SDMMC2_CK ,SAI4_D1 ,ETH_MDC ,MDIOS_MDC , , ,EVENTOUT,ADC123_INN10/ADC123_INP11 +PortC,PC2 , , , ,DFSDM_CKIN1 , ,SPI2_MISO/I2S2_SDI,DFSDM_CKOUT , , , ,OTG_HS_ULPI_DIR ,ETH_MII_TXD2 ,FMC_SDNE0 , , ,EVENTOUT,ADC123_INN11/ADC123_INP12/C_ADC3_INN1/C_ADC3_INP0 +PortC,PC3 , , , ,DFSDM_DATIN1 , ,SPI2_MOSI/I2S2_SDO, , , , ,OTG_HS_ULPI_NXT ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_INN12/ADC12_INP13/C_ADC3_INP1 +PortC,PC4 , , , ,DFSDM_CKIN2 , ,I2S1_MCK , , , ,SPDIFRX_IN2 , ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_INP4 +PortC,PC5 , , ,SAI1_D3 ,DFSDM_DATIN2 , , , , , ,SPDIFRX_IN3 ,SAI4_D3 ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 ,COMP_1_OUT , ,EVENTOUT,ADC12_INN4/ADC12_INP8 +PortC,PC6 , ,HRTIM_CHA1 ,TIM3_CH1 ,TIM8_CH1 ,DFSDM_CKIN3 ,I2S2_MCK , ,USART6_TX ,SDMMC1_D0DIR ,FMC_NWAIT ,SDMMC2_D6 , ,SDMMC1_D6 ,DCMI_D0 ,LCD_HSYNC,EVENTOUT, +PortC,PC7 ,TRGIO ,HRTIM_CHA2 ,TIM3_CH2 ,TIM8_CH2 ,DFSDM_DATIN3 , ,I2S3_MCK ,USART6_RX ,SDMMC1_D123DIR ,FMC_NE1 ,SDMMC2_D7 ,SWPMI_TX ,SDMMC1_D7 ,DCMI_D1 ,LCD_G6 ,EVENTOUT, +PortC,PC8 ,TRACED1 ,HRTIM_CHB1 ,TIM3_CH3 ,TIM8_CH3 , , , ,USART6_CK ,UART5_RTS ,FMC_NE2/FMC_NCE , ,SWPMI_RX ,SDMMC1_D0 ,DCMI_D2 , ,EVENTOUT, +PortC,PC9 ,MCO2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , , ,UART5_CTS ,QUADSPI_BK1_IO0 ,LCD_G3 ,SWPMI_SUSPEND ,SDMMC1_D1 ,DCMI_D3 ,LCD_B2 ,EVENTOUT, +PortC,PC10, , ,HRTIM_EEV1 ,DFSDM_CKIN5 , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDMMC1_D2 ,DCMI_D8 ,LCD_R2 ,EVENTOUT, +PortC,PC11, , ,HRTIM_FLT2 ,DFSDM_DATIN5 , , ,SPI3_MISO/I2S3_SDI ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDMMC1_D3 ,DCMI_D4 , ,EVENTOUT, +PortC,PC12,TRACED3 , ,HRTIM_EEV2 , , , ,SPI3_MOSI/I2S3_SDO ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9 , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,DFSDM_CKIN6 , , ,SAI3_SCK_A , ,UART4_RX ,CAN1_RX , , ,FMC_D2/FMC_DA2 , , ,EVENTOUT, +PortD,PD1 , , , ,DFSDM_DATIN6 , , ,SAI3_SD_A , ,UART4_TX ,CAN1_TX , , ,FMC_D3/FMC_DA3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR , , , , , ,UART5_RX , , , ,SDMMC1_CMD ,DCMI_D11 , ,EVENTOUT, +PortD,PD3 , , , ,DFSDM_CKOUT , ,SPI2_SCK/I2S2_CK , ,USART2_CTS/USART2_NSS , , , , ,FMC_CLK ,DCMI_D5 ,LCD_G7 ,EVENTOUT, +PortD,PD4 , , ,HRTIM_FLT3 , , , ,SAI3_FS_A ,USART2_RTS , ,CAN1_RXFD , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , ,HRTIM_EEV3 , , , , ,USART2_TX , ,CAN1_TXFD , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , ,SAI1_D1 ,DFSDM_CKIN4 ,DFSDM_DATIN1 ,SPI3_MOSI/I2S3_SDO,SAI1_SD_A ,USART2_RX ,SAI4_SD_A ,CAN2_RXFD ,SAI4_D1 ,SDMMC2_CK ,FMC_NWAIT ,DCMI_D10 ,LCD_B2 ,EVENTOUT, +PortD,PD7 , , , ,DFSDM_DATIN4 , ,SPI1_MOSI/I2S1_SDO,DFSDM_CKIN1 ,USART2_CK , ,SPDIFRX_IN0 , ,SDMMC2_CMD ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , ,DFSDM_CKIN3 , , ,SAI3_SCK_B ,USART3_TX , ,SPDIFRX_IN1 , , ,FMC_D13/FMC_DA13 , , ,EVENTOUT, +PortD,PD9 , , , ,DFSDM_DATIN3 , , ,SAI3_SD_B ,USART3_RX , ,CAN2_RXFD , , ,FMC_D14/FMC_DA14 , , ,EVENTOUT, +PortD,PD10, , , ,DFSDM_CKOUT , , ,SAI3_FS_B ,USART3_CK , ,CAN2_TXFD , , ,FMC_D15/FMC_DA15 , ,LCD_B3 ,EVENTOUT, +PortD,PD11, , , ,LPTIM2_IN2 ,I2C4_SMBA , , ,USART3_CTS/USART3_NSS , ,QUADSPI_BK1_IO0 ,SAI2_SD_A , ,FMC_A16 , , ,EVENTOUT, +PortD,PD12, ,LPTIM1_IN1 ,TIM4_CH1 ,LPTIM2_IN1 ,I2C4_SCL , , ,USART3_RTS , ,QUADSPI_BK1_IO1 ,SAI2_FS_A , ,FMC_A17 , , ,EVENTOUT, +PortD,PD13, ,LPTIM1_OUT ,TIM4_CH2 , ,I2C4_SDA , , , , ,QUADSPI_BK1_IO3 ,SAI2_SCK_A , ,FMC_A18 , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , ,SAI3_MCLK_B , ,UART8_CTS , , , ,FMC_D0/FMC_DA0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , ,SAI3_MCLK_A , ,UART8_RTS , , , ,FMC_D1/FMC_DA1 , , ,EVENTOUT, +PortE,PE0 , ,LPTIM1_ETR ,TIM4_ETR ,HRTIM_SCIN ,LPTIM2_ETR , , , ,UART8_RX ,CAN1_RXFD ,SAI2_MCK_A , ,FMC_NBL0 ,DCMI_D2 , ,EVENTOUT, +PortE,PE1 , ,LPTIM1_IN2 , ,HRTIM_SCOUT , , , , ,UART8_TX ,CAN1_TXFD , , ,FMC_NBL1 ,DCMI_D3 , ,EVENTOUT, +PortE,PE2 ,TRACECLK , ,SAI1_CK1 , , ,SPI4_SCK ,SAI1_MCLK_A , ,SAI4_MCLK_A ,QUADSPI_BK1_IO2 ,SAI4_CK1 ,ETH_MII_TXD3 ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , , , ,TIM15_BKIN , ,SAI1_SD_B , ,SAI4_SD_B , , , ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,SAI1_D2 ,DFSDM_DATIN3 ,TIM15_CH1N ,SPI4_NSS ,SAI1_FS_A , ,SAI4_FS_A , ,SAI4_D2 , ,FMC_A20 ,DCMI_D4 ,LCD_B0 ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,SAI1_CK2 ,DFSDM_CKIN3 ,TIM15_CH1 ,SPI4_MISO ,SAI1_SCK_A , ,SAI4_SCK_A , ,SAI4_CK2 , ,FMC_A21 ,DCMI_D6 ,LCD_G0 ,EVENTOUT, +PortE,PE6 ,TRACED3 ,TIM1_BKIN2 ,SAI1_D1 , ,TIM15_CH2 ,SPI4_MOSI ,SAI1_SD_A , ,SAI4_SD_A ,SAI4_D1 ,SAI2_MCK_B ,TIM1_BKIN2_COMP12 ,FMC_A22 ,DCMI_D7 ,LCD_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , ,DFSDM_DATIN2 , , , ,UART7_RX , , ,QUADSPI_BK2_IO0 , ,FMC_D4/FMC_DA4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , ,DFSDM_CKIN2 , , , ,UART7_TX , , ,QUADSPI_BK2_IO1 , ,FMC_D5/FMC_DA5 ,COMP_2_OUT , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , ,DFSDM_CKOUT , , , ,UART7_RTS , , ,QUADSPI_BK2_IO2 , ,FMC_D6/FMC_DA6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , ,DFSDM_DATIN4 , , , ,UART7_CTS , , ,QUADSPI_BK2_IO3 , ,FMC_D7/FMC_DA7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , ,DFSDM_CKIN4 , ,SPI4_NSS , , , , ,SAI2_SD_B , ,FMC_D8/FMC_DA8 , ,LCD_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , ,DFSDM_DATIN5 , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9/FMC_DA9 ,COMP_1_OUT ,LCD_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , ,DFSDM_CKIN5 , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10/FMC_DA10 ,COMP_2_OUT ,LCD_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCK_B , ,FMC_D11/FMC_DA11 , ,LCD_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , ,HDMI__TIM1_BKIN , , , , , , ,FMC_D12/FMC_DA12 ,TIM1_BKIN_COMP12 ,LCD_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_INP5 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_INN5/ADC3_INP9 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_INP4 +PortF,PF6 , ,TIM16_CH1 , , , ,SPI5_NSS ,SAI1_SD_B ,UART7_RX ,SAI4_SD_B ,QUADSPI_BK1_IO3 , , , , , ,EVENTOUT,ADC3_INN4/ADC3_INP8 +PortF,PF7 , ,TIM17_CH1 , , , ,SPI5_SCK ,SAI1_MCLK_B ,UART7_TX ,SAI4_MCLK_B ,QUADSPI_BK1_IO2 , , , , , ,EVENTOUT,ADC3_INP3 +PortF,PF8 , ,TIM16_CH1N , , , ,SPI5_MISO ,SAI1_SCK_B ,UART7_RTS ,SAI4_SCK_B ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , ,EVENTOUT,ADC3_INN3/ADC3_INP7 +PortF,PF9 , ,TIM17_CH1N , , , ,SPI5_MOSI ,SAI1_FS_B ,UART7_CTS ,SAI4_FS_B ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , ,EVENTOUT,ADC3_INP2 +PortF,PF10, ,TIM16_BKIN ,SAI1_D3 , , , , , , ,QUADSPI_CLK ,SAI4_D3 , , ,DCMI_D11 ,LCD_DE ,EVENTOUT,ADC3_INN2/ADC3_INP6 +PortF,PF11, , , , , ,SPI5_MOSI , , , , ,SAI2_SD_B , ,FMC_SDNRAS ,DCMI_D12 , ,EVENTOUT,ADC1_INP2 +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT,ADC1_INN2/ADC1_INP6 +PortF,PF13, , , ,DFSDM_DATIN6 ,I2C4_SMBA , , , , , , , ,FMC_A7 , , ,EVENTOUT,ADC2_INP2 +PortF,PF14, , , ,DFSDM_CKIN6 ,I2C4_SCL , , , , , , , ,FMC_A8 , , ,EVENTOUT,ADC2_INN2/ADC2_INP6 +PortF,PF15, , , , ,I2C4_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , ,TIM8_BKIN , , , , , , , ,TIM8_BKIN_COMP12 ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , ,TIM8_BKIN2 , , , , , , , ,TIM8_BKIN2_COMP12 ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , ,TIM1_BKIN2 , , , , , , , , , ,TIM1_BKIN2_COMP12 ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , ,TIM1_ETR , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , ,TIM17_BKIN ,HRTIM_CHE1 , , , , , , , ,QUADSPI_BK1_NCS , ,FMC_NE3 ,DCMI_D12 ,LCD_R7 ,EVENTOUT, +PortG,PG7 , , ,HRTIM_CHE2 , , , ,SAI1_MCLK_A ,USART6_CK , , , , ,FMC_INT ,DCMI_D13 ,LCD_CLK ,EVENTOUT, +PortG,PG8 , , , ,TIM8_ETR , ,SPI6_NSS , ,USART6_RTS ,SPDIFRX_IN2 , , ,ETH_PPS_OUT ,FMC_SDCLK , ,LCD_G7 ,EVENTOUT, +PortG,PG9 , , , , , ,SPI1_MISO/I2S1_SDI, ,USART6_RX ,SPDIFRX_IN3 ,QUADSPI_BK2_IO2 ,SAI2_FS_B , ,FMC_NE2/FMC_NCE ,DCMI_VSYNC , ,EVENTOUT, +PortG,PG10, , ,HRTIM_FLT5 , , ,SPI1_NSS/I2S1_WS , , , ,LCD_G3 ,SAI2_SD_B , ,FMC_NE3 ,DCMI_D2 ,LCD_B2 ,EVENTOUT, +PortG,PG11, , ,HRTIM_EEV4 , , ,SPI1_SCK/I2S1_CK , , ,SPDIFRX_IN0 , ,SDMMC2_D2 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3 ,LCD_B3 ,EVENTOUT, +PortG,PG12, ,LPTIM1_IN1 ,HRTIM_EEV5 , , ,SPI6_MISO , ,USART6_RTS ,SPDIFRX_IN1 ,LCD_B4 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_NE4 , ,LCD_B1 ,EVENTOUT, +PortG,PG13,TRACED0 ,LPTIM1_OUT ,HRTIM_EEV10 , , ,SPI6_SCK , ,USART6_CTS/USART6_NSS , , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , ,LCD_R0 ,EVENTOUT, +PortG,PG14,TRACED1 ,LPTIM1_ETR , , , ,SPI6_MOSI , ,USART6_TX , ,QUADSPI_BK2_IO3 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , ,LCD_B0 ,EVENTOUT, +PortG,PG15, , , , , , , ,USART6_CTS/USART6_NSS , , , , ,FMC_SDNCAS ,DCMI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , ,LPTIM1_IN2 , , , , , , , ,QUADSPI_BK2_IO0 ,SAI2_SCK_B ,ETH_MII_CRS ,FMC_SDCKE0 , ,LCD_R0 ,EVENTOUT,ADC3_INP13 +PortH,PH3 , , , , , , , , , ,QUADSPI_BK2_IO1 ,SAI2_MCK_B ,ETH_MII_COL ,FMC_SDNE0 , ,LCD_R1 ,EVENTOUT,ADC3_INN13/ADC3_INP14 +PortH,PH4 , , , , ,I2C2_SCL , , , , ,LCD_G5 ,OTG_HS_ULPI_NXT , , , ,LCD_G4 ,EVENTOUT,ADC3_INN14/ADC3_INP15 +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT,ADC3_INN15/ADC3_INP16 +PortH,PH6 , , ,TIM12_CH1 , ,I2C2_SMBA ,SPI5_SCK , , , , , ,ETH_MII_RXD2 ,FMC_SDNE1 ,DCMI_D8 , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , ,EVENTOUT, +PortH,PH8 , , ,TIM5_ETR , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LCD_R2 ,EVENTOUT, +PortH,PH9 , , ,TIM12_CH2 , ,I2C3_SMBA , , , , , , , ,FMC_D17 ,DCMI_D0 ,LCD_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1 , ,I2C4_SMBA , , , , , , , ,FMC_D18 ,DCMI_D1 ,LCD_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2 , ,I2C4_SCL , , , , , , , ,FMC_D19 ,DCMI_D2 ,LCD_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3 , ,I2C4_SDA , , , , , , , ,FMC_D20 ,DCMI_D3 ,LCD_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , ,UART4_TX ,CAN1_TX , , ,FMC_D21 , ,LCD_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , ,UART4_RX ,CAN1_RX , , ,FMC_D22 ,DCMI_D4 ,LCD_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , ,CAN1_TXFD , , ,FMC_D23 ,DCMI_D11 ,LCD_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4 , , ,SPI2_NSS/I2S2_WS , , , ,CAN1_RXFD , , ,FMC_D24 ,DCMI_D13 ,LCD_G5 ,EVENTOUT, +PortI,PI1 , , , ,TIM8_BKIN2 , ,SPI2_SCK/I2S2_CK , , , , , ,TIM8_BKIN2_COMP12 ,FMC_D25 ,DCMI_D8 ,LCD_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO/I2S2_SDI, , , , , , ,FMC_D26 ,DCMI_D9 ,LCD_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI/I2S2_SDO, , , , , , ,FMC_D27 ,DCMI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,SAI2_MCK_A ,TIM8_BKIN_COMP12 ,FMC_NBL2 ,DCMI_D5 ,LCD_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , ,FMC_NBL3 ,DCMI_VSYNC ,LCD_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , ,FMC_D28 ,DCMI_D6 ,LCD_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , ,FMC_D29 ,DCMI_D7 ,LCD_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , ,UART4_RX ,CAN1_RX , , ,FMC_D30 , ,LCD_VSYNC,EVENTOUT, +PortI,PI10, , , , , , , , , ,CAN1_RXFD , ,ETH_MII_RX_ER ,FMC_D31 , ,LCD_HSYNC,EVENTOUT, +PortI,PI11, , , , , , , , , ,LCD_G6 ,OTG_HS_ULPI_DIR , , , , ,EVENTOUT, +PortI,PI12, , , , , , , , , , , ,ETH_TX_ER , , ,LCD_HSYNC,EVENTOUT, +PortI,PI13, , , , , , , , , , , , , , ,LCD_VSYNC,EVENTOUT, +PortI,PI14, , , , , , , , , , , , , , ,LCD_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , ,LCD_G2 , , , , ,LCD_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , ,LCD_R7 , , , , ,LCD_R1 ,EVENTOUT, +PortJ,PJ1 , , , , , , , , , , , , , , ,LCD_R2 ,EVENTOUT, +PortJ,PJ2 , , , , , , , , , , , , , , ,LCD_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , , , , ,LCD_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , , , , ,LCD_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LCD_R6 ,EVENTOUT, +PortJ,PJ6 , , , ,TIM8_CH2 , , , , , , , , , , ,LCD_R7 ,EVENTOUT, +PortJ,PJ7 ,TRGIN , , ,TIM8_CH2N , , , , , , , , , , ,LCD_G0 ,EVENTOUT, +PortJ,PJ8 , ,TIM1_CH3N , ,TIM8_CH1 , , , , ,UART8_TX , , , , , ,LCD_G1 ,EVENTOUT, +PortJ,PJ9 , ,TIM1_CH3 , ,TIM8_CH1N , , , , ,UART8_RX , , , , , ,LCD_G2 ,EVENTOUT, +PortJ,PJ10, ,TIM1_CH2N , ,TIM8_CH2 , ,SPI5_MOSI , , , , , , , , ,LCD_G3 ,EVENTOUT, +PortJ,PJ11, ,TIM1_CH2 , ,TIM8_CH2N , ,SPI5_MISO , , , , , , , , ,LCD_G4 ,EVENTOUT, +PortJ,PJ12,TRGOUT , , , , , , , , ,LCD_G3 , , , , ,LCD_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , ,LCD_B4 , , , , ,LCD_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LCD_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LCD_B3 ,EVENTOUT, +PortK,PK0 , ,TIM1_CH1N , ,TIM8_CH3 , ,SPI5_SCK , , , , , , , , ,LCD_G5 ,EVENTOUT, +PortK,PK1 , ,TIM1_CH1 , ,TIM8_CH3N , ,SPI5_NSS , , , , , , , , ,LCD_G6 ,EVENTOUT, +PortK,PK2 , ,TIM1_BKIN , ,TIM8_BKIN , , , , , , ,TIM8_BKIN_COMP12 ,TIM1_BKIN_COMP12 , , ,LCD_G7 ,EVENTOUT, +PortK,PK3 , , , , , , , , , , , , , , ,LCD_B4 ,EVENTOUT, +PortK,PK4 , , , , , , , , , , , , , , ,LCD_B5 ,EVENTOUT, +PortK,PK5 , , , , , , , , , , , , , , ,LCD_B6 ,EVENTOUT, +PortK,PK6 , , , , , , , , , , , , , , ,LCD_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LCD_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32h7b3_af.csv b/ports/stm32/boards/stm32h7b3_af.csv index 0e1747161f3a3..1acef21f37e56 100644 --- a/ports/stm32/boards/stm32h7b3_af.csv +++ b/ports/stm32/boards/stm32h7b3_af.csv @@ -1,175 +1,170 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,ADC -PortA,PA0,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,TIM15_BKIN,I2S6_WS/SPI6_NSS,,USART2_CTS/USART2_NSS,UART4_TX,SDMMC2_CMD,SAI2_SD_B,,,,,EVENTOUT/EVENTOUT,ADC1_INP16, -PortA,PA0_C,,TIM2_CH1/TIM2_ETR,TIM5_CH1,TIM8_ETR,TIM15_BKIN,I2S6_WS/SPI6_NSS,,USART2_CTS/USART2_NSS,UART4_TX,SDMMC2_CMD,SAI2_SD_B,,,,,EVENTOUT/EVENTOUT,ADC1_INP16, -PortA,PA1,,TIM2_CH2,TIM5_CH2,LPTIM3_OUT,TIM15_CH1N,,,USART2_DE/USART2_RTS,UART4_RX,OCTOSPIM_P1_IO3,SAI2_MCLK_B,OCTOSPIM_P1_DQS,,,LTDC_R2,EVENTOUT/EVENTOUT,ADC1_INN16/ADC1_INP17, -PortA,PA10,,TIM1_CH3,,LPUART1_RX,,,,USART1_RX,,,USB_OTG_HS_ID,MDIOS_MDIO,LTDC_B4,DCMI_D1/PSSI_D1,LTDC_B1,EVENTOUT/EVENTOUT,, -PortA,PA11,,TIM1_CH4,,LPUART1_CTS,,I2S2_WS/SPI2_NSS,UART4_RX,USART1_CTS/USART1_NSS,,FDCAN1_RX,,,,,LTDC_R4,EVENTOUT/EVENTOUT,, -PortA,PA12,,TIM1_ETR,,LPUART1_DE/LPUART1_RTS,,I2S2_CK/SPI2_SCK,UART4_TX,USART1_DE/USART1_RTS,SAI2_FS_B,FDCAN1_TX,,,,,LTDC_R5,EVENTOUT/EVENTOUT,, -PortA,PA13,DEBUG_JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortA,PA14,DEBUG_JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortA,PA15,DEBUG_JTDI,TIM2_CH1/TIM2_ETR,,,CEC,I2S1_WS/SPI1_NSS,I2S3_WS/SPI3_NSS,I2S6_WS/SPI6_NSS,UART4_DE/UART4_RTS,LTDC_R3,,UART7_TX,,,LTDC_B6,EVENTOUT/EVENTOUT,, -PortA,PA1_C,,TIM2_CH2,TIM5_CH2,LPTIM3_OUT,TIM15_CH1N,,,USART2_DE/USART2_RTS,UART4_RX,OCTOSPIM_P1_IO3,SAI2_MCLK_B,OCTOSPIM_P1_DQS,,,LTDC_R2,EVENTOUT/EVENTOUT,ADC1_INN16/ADC1_INP17, -PortA,PA2,,TIM2_CH3,TIM5_CH3,,TIM15_CH1,,DFSDM2_CKIN1,USART2_TX,SAI2_SCK_B,,,,MDIOS_MDIO,,LTDC_R1,EVENTOUT/EVENTOUT,ADC1_INP14, -PortA,PA3,,TIM2_CH4,TIM5_CH4,OCTOSPIM_P1_CLK,TIM15_CH2,I2S6_MCK,,USART2_RX,,LTDC_B2,USB_OTG_HS_ULPI_D0,,,,LTDC_B5,EVENTOUT/EVENTOUT,ADC1_INP15, -PortA,PA4,,,TIM5_ETR,,,I2S1_WS/SPI1_NSS,I2S3_WS/SPI3_NSS,USART2_CK,I2S6_WS/SPI6_NSS,,,,,DCMI_HSYNC/PSSI_DE,LTDC_VSYNC,EVENTOUT/EVENTOUT,ADC1_INP18, -PortA,PA5,PWR_NDSTOP2,TIM2_CH1/TIM2_ETR,,TIM8_CH1N,,I2S1_CK/SPI1_SCK,,,I2S6_CK/SPI6_SCK,,USB_OTG_HS_ULPI_CK,,,PSSI_D14,LTDC_R4,EVENTOUT/EVENTOUT,ADC1_INN18/ADC1_INP19, -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,I2S1_SDI/SPI1_MISO,OCTOSPIM_P1_IO3,,I2S6_SDI/SPI6_MISO,TIM13_CH1,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2,MDIOS_MDC,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,DCMI_PIXCLK/PSSI_PDCK,LTDC_G2,EVENTOUT/EVENTOUT,ADC1_INP3/ADC2_INP3, -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,DFSDM2_DATIN1,I2S1_SDO/SPI1_MOSI,,,I2S6_SDO/SPI6_MOSI,TIM14_CH1,OCTOSPIM_P1_IO2,,FMC_SDNWE,,LTDC_VSYNC,EVENTOUT/EVENTOUT,ADC1_INN3/ADC1_INP7/ADC2_INN3/ADC2_INP7, -PortA,PA8,RCC_MCO_1,TIM1_CH1,,TIM8_BKIN2,I2C3_SCL,,,USART1_CK,,,USB_OTG_HS_SOF,UART7_RX,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2,LTDC_B3,LTDC_R6,EVENTOUT/EVENTOUT,, -PortA,PA9,,TIM1_CH2,,LPUART1_TX,I2C3_SMBA,I2S2_CK/SPI2_SCK,,USART1_TX,,,,,,DCMI_D0/PSSI_D0,LTDC_R5,EVENTOUT/EVENTOUT,, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,DFSDM2_CKOUT,,DFSDM1_CKOUT,,UART4_CTS,LTDC_R3,USB_OTG_HS_ULPI_D1,OCTOSPIM_P1_IO1,,,LTDC_G1,EVENTOUT/EVENTOUT,ADC1_INN5/ADC1_INP9/ADC2_INN5/ADC2_INP9, -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,DFSDM1_DATIN1,,,LTDC_R6,USB_OTG_HS_ULPI_D2,OCTOSPIM_P1_IO0,,,LTDC_G0,EVENTOUT/EVENTOUT,ADC1_INP5/ADC2_INP5, -PortB,PB10,,TIM2_CH3,,LPTIM2_IN1,I2C2_SCL,I2S2_CK/SPI2_SCK,DFSDM1_DATIN7,USART3_TX,,OCTOSPIM_P1_NCS,USB_OTG_HS_ULPI_D3,,,,LTDC_G4,EVENTOUT/EVENTOUT,, -PortB,PB11,,TIM2_CH4,,LPTIM2_ETR,I2C2_SDA,,DFSDM1_CKIN7,USART3_RX,,,USB_OTG_HS_ULPI_D4,,,,LTDC_G5,EVENTOUT/EVENTOUT,, -PortB,PB12,,TIM1_BKIN,,OCTOSPIM_P1_NCLK,I2C2_SMBA,I2S2_WS/SPI2_NSS,DFSDM1_DATIN1,USART3_CK,,FDCAN2_RX,USB_OTG_HS_ULPI_D5,DFSDM2_DATIN1,,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,UART5_RX,EVENTOUT/EVENTOUT,, -PortB,PB13,,TIM1_CH1N,,LPTIM2_OUT,DFSDM2_CKIN1,I2S2_CK/SPI2_SCK,DFSDM1_CKIN1,USART3_CTS/USART3_NSS,,FDCAN2_TX,USB_OTG_HS_ULPI_D6,,SDMMC1_D0,DCMI_D2/PSSI_D2,UART5_TX,EVENTOUT/EVENTOUT,, -PortB,PB14,,TIM1_CH2N,TIM12_CH1,TIM8_CH2N,USART1_TX,I2S2_SDI/SPI2_MISO,DFSDM1_DATIN2,USART3_DE/USART3_RTS,UART4_DE/UART4_RTS,SDMMC2_D0,,,,,LTDC_CLK,EVENTOUT/EVENTOUT,, -PortB,PB15,RTC_REFIN,TIM1_CH3N,TIM12_CH2,TIM8_CH3N,USART1_RX,I2S2_SDO/SPI2_MOSI,DFSDM1_CKIN2,,UART4_CTS,SDMMC2_D1,,,,,LTDC_G7,EVENTOUT/EVENTOUT,, -PortB,PB2,RTC_OUT_ALARM,,SAI1_D1,,DFSDM1_CKIN1,,SAI1_SD_A,I2S3_SDO/SPI3_MOSI,,OCTOSPIM_P1_CLK,OCTOSPIM_P1_DQS,,,,,EVENTOUT/EVENTOUT,, -PortB,PB3,DEBUG_JTDO/SWO,TIM2_CH2,,,,I2S1_CK/SPI1_SCK,I2S3_CK/SPI3_SCK,,I2S6_CK/SPI6_SCK,SDMMC2_D2,CRS_SYNC,UART7_RX,,,,EVENTOUT/EVENTOUT,, -PortB,PB4,,TIM16_BKIN,TIM3_CH1,,,I2S1_SDI/SPI1_MISO,I2S3_SDI/SPI3_MISO,I2S2_WS/SPI2_NSS,I2S6_SDI/SPI6_MISO,SDMMC2_D3,,UART7_TX,,,,EVENTOUT/EVENTOUT,, -PortB,PB5,,TIM17_BKIN,TIM3_CH2,,I2C1_SMBA,I2S1_SDO/SPI1_MOSI,I2C4_SMBA,I2S3_SDO/SPI3_MOSI,I2S6_SDO/SPI6_MOSI,FDCAN2_RX,USB_OTG_HS_ULPI_D7,LTDC_B5,FMC_SDCKE1,DCMI_D10/PSSI_D10,UART5_RX,EVENTOUT/EVENTOUT,, -PortB,PB6,,TIM16_CH1N,TIM4_CH1,,I2C1_SCL,CEC,I2C4_SCL,USART1_TX,LPUART1_TX,FDCAN2_TX,OCTOSPIM_P1_NCS,DFSDM1_DATIN5,FMC_SDNE1,DCMI_D5/PSSI_D5,UART5_TX,EVENTOUT/EVENTOUT,, -PortB,PB7,,TIM17_CH1N,TIM4_CH2,,I2C1_SDA,,I2C4_SDA,USART1_RX,LPUART1_RX,,,DFSDM1_CKIN5,FMC_NL,DCMI_VSYNC/PSSI_RDY,,EVENTOUT/EVENTOUT,, -PortB,PB8,,TIM16_CH1,TIM4_CH3,DFSDM1_CKIN7,I2C1_SCL,,I2C4_SCL,SDMMC1_CKIN,UART4_RX,FDCAN1_RX,SDMMC2_D4,,SDMMC1_D4,DCMI_D6/PSSI_D6,LTDC_B6,EVENTOUT/EVENTOUT,, -PortB,PB9,,TIM17_CH1,TIM4_CH4,DFSDM1_DATIN7,I2C1_SDA,I2S2_WS/SPI2_NSS,I2C4_SDA,SDMMC1_CDIR,UART4_TX,FDCAN1_TX,SDMMC2_D5,I2C4_SMBA,SDMMC1_D5,DCMI_D7/PSSI_D7,LTDC_B7,EVENTOUT/EVENTOUT,, -PortC,PC0,,,,DFSDM1_CKIN0,,,DFSDM1_DATIN4,,SAI2_FS_B,FMC_A25,USB_OTG_HS_ULPI_STP,LTDC_G2,FMC_SDNWE,,LTDC_R5,EVENTOUT/EVENTOUT,ADC1_INP10/ADC2_INP10, -PortC,PC1,DEBUG_TRACED0,,SAI1_D1,DFSDM1_DATIN0,DFSDM1_CKIN4,I2S2_SDO/SPI2_MOSI,SAI1_SD_A,,,SDMMC2_CK,OCTOSPIM_P1_IO4,,MDIOS_MDC,,LTDC_G5,EVENTOUT/EVENTOUT,ADC1_INN10/ADC1_INP11/ADC2_INN10/ADC2_INP11, -PortC,PC10,,,,DFSDM1_CKIN5,DFSDM2_CKIN0,,I2S3_CK/SPI3_SCK,USART3_TX,UART4_TX,OCTOSPIM_P1_IO1,LTDC_B1,SWPMI1_RX,SDMMC1_D2,DCMI_D8/PSSI_D8,LTDC_R2,EVENTOUT/EVENTOUT,, -PortC,PC11,,,,DFSDM1_DATIN5,DFSDM2_DATIN0,,I2S3_SDI/SPI3_MISO,USART3_RX,UART4_RX,OCTOSPIM_P1_NCS,,,SDMMC1_D3,DCMI_D4/PSSI_D4,LTDC_B4,EVENTOUT/EVENTOUT,, -PortC,PC12,DEBUG_TRACED3,,TIM15_CH1,,DFSDM2_CKOUT,I2S6_CK/SPI6_SCK,I2S3_SDO/SPI3_MOSI,USART3_CK,UART5_TX,,,,SDMMC1_CK,DCMI_D9/PSSI_D9,LTDC_R6,EVENTOUT/EVENTOUT,, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortC,PC14-OSC32_IN,,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortC,PC15-OSC32_OUT,,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortC,PC2,PWR_CSTOP,,,DFSDM1_CKIN1,,I2S2_SDI/SPI2_MISO,DFSDM1_CKOUT,,,OCTOSPIM_P1_IO2,USB_OTG_HS_ULPI_DIR,OCTOSPIM_P1_IO5,FMC_SDNE0,,,EVENTOUT/EVENTOUT,ADC1_INN11/ADC1_INP12/ADC2_INN11/ADC2_INP12, -PortC,PC2_C,PWR_CSTOP,,,DFSDM1_CKIN1,,I2S2_SDI/SPI2_MISO,DFSDM1_CKOUT,,,OCTOSPIM_P1_IO2,USB_OTG_HS_ULPI_DIR,OCTOSPIM_P1_IO5,FMC_SDNE0,,,EVENTOUT/EVENTOUT,ADC1_INN11/ADC1_INP12/ADC2_INN11/ADC2_INP12, -PortC,PC3,PWR_CSLEEP,,,DFSDM1_DATIN1,,I2S2_SDO/SPI2_MOSI,,,,OCTOSPIM_P1_IO0,USB_OTG_HS_ULPI_NXT,OCTOSPIM_P1_IO6,FMC_SDCKE0,,,EVENTOUT/EVENTOUT,ADC2_INP1, -PortC,PC3_C,PWR_CSLEEP,,,DFSDM1_DATIN1,,I2S2_SDO/SPI2_MOSI,,,,OCTOSPIM_P1_IO0,USB_OTG_HS_ULPI_NXT,OCTOSPIM_P1_IO6,FMC_SDCKE0,,,EVENTOUT/EVENTOUT,ADC2_INP1, -PortC,PC4,,,,DFSDM1_CKIN2,,I2S1_MCK,,,,SPDIFRX_IN3,,,FMC_SDNE0,,LTDC_R7,EVENTOUT/EVENTOUT,ADC1_INP4/ADC2_INP4, -PortC,PC5,,,SAI1_D3,DFSDM1_DATIN2,PSSI_D15,,,,,SPDIFRX_IN4,OCTOSPIM_P1_DQS,,FMC_SDCKE0,COMP1_OUT,LTDC_DE,EVENTOUT/EVENTOUT,ADC1_INN4/ADC1_INP8/ADC2_INN4/ADC2_INP8, -PortC,PC6,,,TIM3_CH1,TIM8_CH1,DFSDM1_CKIN3,I2S2_MCK,,USART6_TX,SDMMC1_D0DIR,FMC_NWAIT,SDMMC2_D6,,SDMMC1_D6,DCMI_D0/PSSI_D0,LTDC_HSYNC,EVENTOUT/EVENTOUT,, -PortC,PC7,DEBUG_TRGIO,,TIM3_CH2,TIM8_CH2,DFSDM1_DATIN3,,I2S3_MCK,USART6_RX,SDMMC1_D123DIR,FMC_NE1,SDMMC2_D7,SWPMI1_TX,SDMMC1_D7,DCMI_D1/PSSI_D1,LTDC_G6,EVENTOUT/EVENTOUT,, -PortC,PC8,DEBUG_TRACED1,,TIM3_CH3,TIM8_CH3,,,,USART6_CK,UART5_DE/UART5_RTS,FMC_NCE/FMC_NE2,FMC_INT,SWPMI1_RX,SDMMC1_D0,DCMI_D2/PSSI_D2,,EVENTOUT/EVENTOUT,, -PortC,PC9,RCC_MCO_2,,TIM3_CH4,TIM8_CH4,I2C3_SDA,I2S_CKIN,,,UART5_CTS,OCTOSPIM_P1_IO0,LTDC_G3,SWPMI1_SUSPEND,SDMMC1_D1,DCMI_D3/PSSI_D3,LTDC_B2,EVENTOUT/EVENTOUT,, -PortD,PD0,,,,DFSDM1_CKIN6,,,,,UART4_RX,FDCAN1_RX,,UART9_CTS,FMC_D2/FMC_DA2,,LTDC_B1,EVENTOUT/EVENTOUT,, -PortD,PD1,,,,DFSDM1_DATIN6,,,,,UART4_TX,FDCAN1_TX,,,FMC_D3/FMC_DA3,,,EVENTOUT/EVENTOUT,, -PortD,PD10,,,,DFSDM1_CKOUT,DFSDM2_CKOUT,,,USART3_CK,,,,,FMC_D15/FMC_DA15,,LTDC_B3,EVENTOUT/EVENTOUT,, -PortD,PD11,,,,LPTIM2_IN2,I2C4_SMBA,,,USART3_CTS/USART3_NSS,,OCTOSPIM_P1_IO0,SAI2_SD_A,,FMC_A16/FMC_CLE,,,EVENTOUT/EVENTOUT,, -PortD,PD12,,LPTIM1_IN1,TIM4_CH1,LPTIM2_IN1,I2C4_SCL,,,USART3_DE/USART3_RTS,,OCTOSPIM_P1_IO1,SAI2_FS_A,,FMC_A17/FMC_ALE,DCMI_D12/PSSI_D12,,EVENTOUT/EVENTOUT,, -PortD,PD13,,LPTIM1_OUT,TIM4_CH2,,I2C4_SDA,,,,,OCTOSPIM_P1_IO3,SAI2_SCK_A,UART9_DE/UART9_RTS,FMC_A18,DCMI_D13/PSSI_D13,,EVENTOUT/EVENTOUT,, -PortD,PD14,,,TIM4_CH3,,,,,,UART8_CTS,,,UART9_RX,FMC_D0/FMC_DA0,,,EVENTOUT/EVENTOUT,, -PortD,PD15,,,TIM4_CH4,,,,,,UART8_DE/UART8_RTS,,,UART9_TX,FMC_D1/FMC_DA1,,,EVENTOUT/EVENTOUT,, -PortD,PD2,DEBUG_TRACED2,,TIM3_ETR,,TIM15_BKIN,,,,UART5_RX,LTDC_B7,,,SDMMC1_CMD,DCMI_D11/PSSI_D11,LTDC_B2,EVENTOUT/EVENTOUT,, -PortD,PD3,,,,DFSDM1_CKOUT,,I2S2_CK/SPI2_SCK,,USART2_CTS/USART2_NSS,,,,,FMC_CLK,DCMI_D5/PSSI_D5,LTDC_G7,EVENTOUT/EVENTOUT,, -PortD,PD4,,,,,,,,USART2_DE/USART2_RTS,,,OCTOSPIM_P1_IO4,,FMC_NOE,,,EVENTOUT/EVENTOUT,, -PortD,PD5,,,,,,,,USART2_TX,,,OCTOSPIM_P1_IO5,,FMC_NWE,,,EVENTOUT/EVENTOUT,, -PortD,PD6,,,SAI1_D1,DFSDM1_CKIN4,DFSDM1_DATIN1,I2S3_SDO/SPI3_MOSI,SAI1_SD_A,USART2_RX,,,OCTOSPIM_P1_IO6,SDMMC2_CK,FMC_NWAIT,DCMI_D10/PSSI_D10,LTDC_B2,EVENTOUT/EVENTOUT,, -PortD,PD7,,,,DFSDM1_DATIN4,,I2S1_SDO/SPI1_MOSI,DFSDM1_CKIN1,USART2_CK,,SPDIFRX_IN1,OCTOSPIM_P1_IO7,SDMMC2_CMD,FMC_NE1,,,EVENTOUT/EVENTOUT,, -PortD,PD8,,,,DFSDM1_CKIN3,,,,USART3_TX,,SPDIFRX_IN2,,,FMC_D13/FMC_DA13,,,EVENTOUT/EVENTOUT,, -PortD,PD9,,,,DFSDM1_DATIN3,,,,USART3_RX,,,,,FMC_D14/FMC_DA14,,,EVENTOUT/EVENTOUT,, -PortD,PDR_ON,,,,,,,,,,,,,,,,EVENTOUT,, -PortE,PE0,,LPTIM1_ETR,TIM4_ETR,,LPTIM2_ETR,,,,UART8_RX,,SAI2_MCLK_A,,FMC_NBL0,DCMI_D2/PSSI_D2,LTDC_R0,EVENTOUT/EVENTOUT,, -PortE,PE1,,LPTIM1_IN2,,,,,,,UART8_TX,,,,FMC_NBL1,DCMI_D3/PSSI_D3,LTDC_R6,EVENTOUT/EVENTOUT,, -PortE,PE10,,TIM1_CH2N,,DFSDM1_DATIN4,,,,UART7_CTS,,,OCTOSPIM_P1_IO7,,FMC_D7/FMC_DA7,,,EVENTOUT/EVENTOUT,, -PortE,PE11,,TIM1_CH2,,DFSDM1_CKIN4,,SPI4_NSS,,,,,SAI2_SD_B,OCTOSPIM_P1_NCS,FMC_D8/FMC_DA8,,LTDC_G3,EVENTOUT/EVENTOUT,, -PortE,PE12,,TIM1_CH3N,,DFSDM1_DATIN5,,SPI4_SCK,,,,,SAI2_SCK_B,,FMC_D9/FMC_DA9,COMP1_OUT,LTDC_B4,EVENTOUT/EVENTOUT,, -PortE,PE13,,TIM1_CH3,,DFSDM1_CKIN5,,SPI4_MISO,,,,,SAI2_FS_B,,FMC_D10/FMC_DA10,COMP2_OUT,LTDC_DE,EVENTOUT/EVENTOUT,, -PortE,PE14,,TIM1_CH4,,,,SPI4_MOSI,,,,,SAI2_MCLK_B,,FMC_D11/FMC_DA11,,LTDC_CLK,EVENTOUT/EVENTOUT,, -PortE,PE15,,TIM1_BKIN,,,,,,,,,,USART10_CK,FMC_D12/FMC_DA12,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,LTDC_R7,EVENTOUT/EVENTOUT,, -PortE,PE2,DEBUG_TRACECLK,,SAI1_CK1,,,SPI4_SCK,SAI1_MCLK_A,,,OCTOSPIM_P1_IO2,,USART10_RX,FMC_A23,,,EVENTOUT/EVENTOUT,, -PortE,PE3,DEBUG_TRACED0,,,,TIM15_BKIN,,SAI1_SD_B,,,,,USART10_TX,FMC_A19,,,EVENTOUT/EVENTOUT,, -PortE,PE4,DEBUG_TRACED1,,SAI1_D2,DFSDM1_DATIN3,TIM15_CH1N,SPI4_NSS,SAI1_FS_A,,,,,,FMC_A20,DCMI_D4/PSSI_D4,LTDC_B0,EVENTOUT/EVENTOUT,, -PortE,PE5,DEBUG_TRACED2,,SAI1_CK2,DFSDM1_CKIN3,TIM15_CH1,SPI4_MISO,SAI1_SCK_A,,,,,,FMC_A21,DCMI_D6/PSSI_D6,LTDC_G0,EVENTOUT/EVENTOUT,, -PortE,PE6,DEBUG_TRACED3,TIM1_BKIN2,SAI1_D1,,TIM15_CH2,SPI4_MOSI,SAI1_SD_A,,,,SAI2_MCLK_B,TIM1_BKIN2_COMP1/TIM1_BKIN2_COMP2,FMC_A22,DCMI_D7/PSSI_D7,LTDC_G1,EVENTOUT/EVENTOUT,, -PortE,PE7,,TIM1_ETR,,DFSDM1_DATIN2,,,,UART7_RX,,,OCTOSPIM_P1_IO4,,FMC_D4/FMC_DA4,,,EVENTOUT/EVENTOUT,, -PortE,PE8,,TIM1_CH1N,,DFSDM1_CKIN2,,,,UART7_TX,,,OCTOSPIM_P1_IO5,,FMC_D5/FMC_DA5,COMP2_OUT,,EVENTOUT/EVENTOUT,, -PortE,PE9,,TIM1_CH1,,DFSDM1_CKOUT,,,,UART7_DE/UART7_RTS,,,OCTOSPIM_P1_IO6,,FMC_D6/FMC_DA6,,,EVENTOUT/EVENTOUT,, -PortF,PF0,,,,,I2C2_SDA,,,,,OCTOSPIM_P2_IO0,,,FMC_A0,,,EVENTOUT/EVENTOUT,, -PortF,PF1,,,,,I2C2_SCL,,,,,OCTOSPIM_P2_IO1,,,FMC_A1,,,EVENTOUT/EVENTOUT,, -PortF,PF10,,TIM16_BKIN,SAI1_D3,,PSSI_D15,,,,,OCTOSPIM_P1_CLK,,,,DCMI_D11/PSSI_D11,LTDC_DE,EVENTOUT/EVENTOUT,, -PortF,PF11,,,,,,SPI5_MOSI,,,,OCTOSPIM_P1_NCLK,SAI2_SD_B,,FMC_SDNRAS,DCMI_D12/PSSI_D12,,EVENTOUT/EVENTOUT,ADC1_INP2, -PortF,PF12,,,,,,,,,,OCTOSPIM_P2_DQS,,,FMC_A6,,,EVENTOUT/EVENTOUT,ADC1_INN2/ADC1_INP6, -PortF,PF13,,,,DFSDM1_DATIN6,I2C4_SMBA,,,,,,,,FMC_A7,,,EVENTOUT/EVENTOUT,ADC2_INP2, -PortF,PF14,,,,DFSDM1_CKIN6,I2C4_SCL,,,,,,,,FMC_A8,,,EVENTOUT/EVENTOUT,ADC2_INN2/ADC2_INP6, -PortF,PF15,,,,,I2C4_SDA,,,,,,,,FMC_A9,,,EVENTOUT/EVENTOUT,, -PortF,PF2,,,,,I2C2_SMBA,,,,,OCTOSPIM_P2_IO2,,,FMC_A2,,,EVENTOUT/EVENTOUT,, -PortF,PF3,,,,,,,,,,OCTOSPIM_P2_IO3,,,FMC_A3,,,EVENTOUT/EVENTOUT,, -PortF,PF4,,,,,,,,,,OCTOSPIM_P2_CLK,,,FMC_A4,,,EVENTOUT/EVENTOUT,, -PortF,PF5,,,,,,,,,,OCTOSPIM_P2_NCLK,,,FMC_A5,,,EVENTOUT/EVENTOUT,, -PortF,PF6,,TIM16_CH1,,,,SPI5_NSS,SAI1_SD_B,UART7_RX,,,OCTOSPIM_P1_IO3,,,,,EVENTOUT/EVENTOUT,, -PortF,PF7,,TIM17_CH1,,,,SPI5_SCK,SAI1_MCLK_B,UART7_TX,,,OCTOSPIM_P1_IO2,,,,,EVENTOUT/EVENTOUT,, -PortF,PF8,,TIM16_CH1N,,,,SPI5_MISO,SAI1_SCK_B,UART7_DE/UART7_RTS,,TIM13_CH1,OCTOSPIM_P1_IO0,,,,,EVENTOUT/EVENTOUT,, -PortF,PF9,,TIM17_CH1N,,,,SPI5_MOSI,SAI1_FS_B,UART7_CTS,,TIM14_CH1,OCTOSPIM_P1_IO1,,,,,EVENTOUT/EVENTOUT,, -PortG,PG0,,,,,,,,,,OCTOSPIM_P2_IO4,,UART9_RX,FMC_A10,,,EVENTOUT/EVENTOUT,, -PortG,PG1,,,,,,,,,,OCTOSPIM_P2_IO5,,UART9_TX,FMC_A11,,,EVENTOUT/EVENTOUT,, -PortG,PG10,,,,OCTOSPIM_P2_IO6,,I2S1_WS/SPI1_NSS,,,,LTDC_G3,SAI2_SD_B,SDMMC2_D1,FMC_NE3,DCMI_D2/PSSI_D2,LTDC_B2,EVENTOUT/EVENTOUT,, -PortG,PG11,,LPTIM1_IN2,,,,I2S1_CK/SPI1_SCK,,,SPDIFRX_IN1,OCTOSPIM_P2_IO7,SDMMC2_D2,USART10_RX,,DCMI_D3/PSSI_D3,LTDC_B3,EVENTOUT/EVENTOUT,, -PortG,PG12,,LPTIM1_IN1,,OCTOSPIM_P2_NCS,,I2S6_SDI/SPI6_MISO,,USART6_DE/USART6_RTS,SPDIFRX_IN2,LTDC_B4,SDMMC2_D3,USART10_TX,FMC_NE4,,LTDC_B1,EVENTOUT/EVENTOUT,, -PortG,PG13,DEBUG_TRACED0,LPTIM1_OUT,,,,I2S6_CK/SPI6_SCK,,USART6_CTS/USART6_NSS,,,SDMMC2_D6,USART10_CTS/USART10_NSS,FMC_A24,,LTDC_R0,EVENTOUT/EVENTOUT,, -PortG,PG14,DEBUG_TRACED1,LPTIM1_ETR,,,,I2S6_SDO/SPI6_MOSI,,USART6_TX,,OCTOSPIM_P1_IO7,SDMMC2_D7,USART10_DE/USART10_RTS,FMC_A25,,LTDC_B0,EVENTOUT/EVENTOUT,, -PortG,PG15,,,,,,,,USART6_CTS/USART6_NSS,,OCTOSPIM_P2_DQS,,USART10_CK,FMC_SDNCAS,DCMI_D13/PSSI_D13,,EVENTOUT/EVENTOUT,, -PortG,PG2,,,,TIM8_BKIN,,,,,,,,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2,FMC_A12,,,EVENTOUT/EVENTOUT,, -PortG,PG3,,,,TIM8_BKIN2,,,,,,,,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2,FMC_A13,,,EVENTOUT/EVENTOUT,, -PortG,PG4,,TIM1_BKIN2,,,,,,,,,,TIM1_BKIN2_COMP1/TIM1_BKIN2_COMP2,FMC_A14/FMC_BA0,,,EVENTOUT/EVENTOUT,, -PortG,PG5,,TIM1_ETR,,,,,,,,,,,FMC_A15/FMC_BA1,,,EVENTOUT/EVENTOUT,, -PortG,PG6,,TIM17_BKIN,,,,,,,,,OCTOSPIM_P1_NCS,,FMC_NE3,DCMI_D12/PSSI_D12,LTDC_R7,EVENTOUT/EVENTOUT,, -PortG,PG7,,,,,,,SAI1_MCLK_A,USART6_CK,,OCTOSPIM_P2_DQS,,,FMC_INT,DCMI_D13/PSSI_D13,LTDC_CLK,EVENTOUT/EVENTOUT,, -PortG,PG8,,,,TIM8_ETR,,I2S6_WS/SPI6_NSS,,USART6_DE/USART6_RTS,SPDIFRX_IN3,,,,FMC_SDCLK,,LTDC_G7,EVENTOUT/EVENTOUT,, -PortG,PG9,,,,,,I2S1_SDI/SPI1_MISO,,USART6_RX,SPDIFRX_IN4,OCTOSPIM_P1_IO6,SAI2_FS_B,SDMMC2_D0,FMC_NCE/FMC_NE2,DCMI_VSYNC/PSSI_RDY,,EVENTOUT/EVENTOUT,, -PortH,PH0-OSC_IN,,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortH,PH1-OSC_OUT,,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortH,PH10,,,TIM5_CH1,,I2C4_SMBA,,,,,,,,FMC_D18,DCMI_D1/PSSI_D1,LTDC_R4,EVENTOUT/EVENTOUT,, -PortH,PH11,,,TIM5_CH2,,I2C4_SCL,,,,,,,,FMC_D19,DCMI_D2/PSSI_D2,LTDC_R5,EVENTOUT/EVENTOUT,, -PortH,PH12,,,TIM5_CH3,,I2C4_SDA,,,,,,,,FMC_D20,DCMI_D3/PSSI_D3,LTDC_R6,EVENTOUT/EVENTOUT,, -PortH,PH13,,,,TIM8_CH1N,,,,,UART4_TX,FDCAN1_TX,,,FMC_D21,,LTDC_G2,EVENTOUT/EVENTOUT,, -PortH,PH14,,,,TIM8_CH2N,,,,,UART4_RX,FDCAN1_RX,,,FMC_D22,DCMI_D4/PSSI_D4,LTDC_G3,EVENTOUT/EVENTOUT,, -PortH,PH15,,,,TIM8_CH3N,,,,,,,,,FMC_D23,DCMI_D11/PSSI_D11,LTDC_G4,EVENTOUT/EVENTOUT,, -PortH,PH2,,LPTIM1_IN2,,,,,,,,OCTOSPIM_P1_IO4,SAI2_SCK_B,,FMC_SDCKE0,,LTDC_R0,EVENTOUT/EVENTOUT,, -PortH,PH3,,,,,,,,,,OCTOSPIM_P1_IO5,SAI2_MCLK_B,,FMC_SDNE0,,LTDC_R1,EVENTOUT/EVENTOUT,, -PortH,PH4,,,,,I2C2_SCL,,,,,LTDC_G5,USB_OTG_HS_ULPI_NXT,,,PSSI_D14,LTDC_G4,EVENTOUT/EVENTOUT,, -PortH,PH5,,,,,I2C2_SDA,SPI5_NSS,,,,,,,FMC_SDNWE,,,EVENTOUT/EVENTOUT,, -PortH,PH6,,,TIM12_CH1,,I2C2_SMBA,SPI5_SCK,,,,,,,FMC_SDNE1,DCMI_D8/PSSI_D8,,EVENTOUT/EVENTOUT,, -PortH,PH7,,,,,I2C3_SCL,SPI5_MISO,,,,,,,FMC_SDCKE1,DCMI_D9/PSSI_D9,,EVENTOUT/EVENTOUT,, -PortH,PH8,,,TIM5_ETR,,I2C3_SDA,,,,,,,,FMC_D16,DCMI_HSYNC/PSSI_DE,LTDC_R2,EVENTOUT/EVENTOUT,, -PortH,PH9,,,TIM12_CH2,,I2C3_SMBA,,,,,,,,FMC_D17,DCMI_D0/PSSI_D0,LTDC_R3,EVENTOUT/EVENTOUT,, -PortI,PI0,,,TIM5_CH4,,,I2S2_WS/SPI2_NSS,,,,,,,FMC_D24,DCMI_D13/PSSI_D13,LTDC_G5,EVENTOUT/EVENTOUT,, -PortI,PI1,,,,TIM8_BKIN2,,I2S2_CK/SPI2_SCK,,,,,,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2,FMC_D25,DCMI_D8/PSSI_D8,LTDC_G6,EVENTOUT/EVENTOUT,, -PortI,PI10,,,,OCTOSPIM_P2_IO1,,,,,,,,,FMC_D31,PSSI_D14,LTDC_HSYNC,EVENTOUT/EVENTOUT,, -PortI,PI11,,,,OCTOSPIM_P2_IO2,,,,,,LTDC_G6,USB_OTG_HS_ULPI_DIR,,,PSSI_D15,,EVENTOUT/EVENTOUT,, -PortI,PI12,,,,OCTOSPIM_P2_IO3,,,,,,,,,,,LTDC_HSYNC,EVENTOUT/EVENTOUT,, -PortI,PI13,,,,OCTOSPIM_P2_CLK,,,,,,,,,,,LTDC_VSYNC,EVENTOUT/EVENTOUT,, -PortI,PI14,,,,OCTOSPIM_P2_NCLK,,,,,,,,,,,LTDC_CLK,EVENTOUT/EVENTOUT,, -PortI,PI15,,,,,,,,,,LTDC_G2,,,,,LTDC_R0,EVENTOUT/EVENTOUT,, -PortI,PI2,,,,TIM8_CH4,,I2S2_SDI/SPI2_MISO,,,,,,,FMC_D26,DCMI_D9/PSSI_D9,LTDC_G7,EVENTOUT/EVENTOUT,, -PortI,PI3,,,,TIM8_ETR,,I2S2_SDO/SPI2_MOSI,,,,,,,FMC_D27,DCMI_D10/PSSI_D10,,EVENTOUT/EVENTOUT,, -PortI,PI4,,,,TIM8_BKIN,,,,,,,SAI2_MCLK_A,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2,FMC_NBL2,DCMI_D5/PSSI_D5,LTDC_B4,EVENTOUT/EVENTOUT,, -PortI,PI5,,,,TIM8_CH1,,,,,,,SAI2_SCK_A,,FMC_NBL3,DCMI_VSYNC/PSSI_RDY,LTDC_B5,EVENTOUT/EVENTOUT,, -PortI,PI6,,,,TIM8_CH2,,,,,,,SAI2_SD_A,,FMC_D28,DCMI_D6/PSSI_D6,LTDC_B6,EVENTOUT/EVENTOUT,, -PortI,PI7,,,,TIM8_CH3,,,,,,,SAI2_FS_A,,FMC_D29,DCMI_D7/PSSI_D7,LTDC_B7,EVENTOUT/EVENTOUT,, -PortI,PI8,,,,,,,,,,,,,,,,EVENTOUT/EVENTOUT,, -PortI,PI9,,,,OCTOSPIM_P2_IO0,,,,,UART4_RX,FDCAN1_RX,,,FMC_D30,,LTDC_VSYNC,EVENTOUT/EVENTOUT,, -PortJ,PJ0,,,,,,,,,,LTDC_R7,,,,,LTDC_R1,EVENTOUT/EVENTOUT,, -PortJ,PJ1,,,,OCTOSPIM_P2_IO4,,,,,,,,,,,LTDC_R2,EVENTOUT/EVENTOUT,, -PortJ,PJ10,,TIM1_CH2N,,TIM8_CH2,,SPI5_MOSI,,,,,,,,,LTDC_G3,EVENTOUT/EVENTOUT,, -PortJ,PJ11,,TIM1_CH2,,TIM8_CH2N,,SPI5_MISO,,,,,,,,,LTDC_G4,EVENTOUT/EVENTOUT,, -PortJ,PJ12,DEBUG_TRGOUT,,,,,,,,,LTDC_G3,,,,,LTDC_B0,EVENTOUT/EVENTOUT,, -PortJ,PJ13,,,,,,,,,,LTDC_B4,,,,,LTDC_B1,EVENTOUT/EVENTOUT,, -PortJ,PJ14,,,,,,,,,,,,,,,LTDC_B2,EVENTOUT/EVENTOUT,, -PortJ,PJ15,,,,,,,,,,,,,,,LTDC_B3,EVENTOUT/EVENTOUT,, -PortJ,PJ2,,,,OCTOSPIM_P2_IO5,,,,,,,,,,,LTDC_R3,EVENTOUT/EVENTOUT,, -PortJ,PJ3,,,,,,,,,,,,UART9_DE/UART9_RTS,,,LTDC_R4,EVENTOUT/EVENTOUT,, -PortJ,PJ4,,,,,,,,,,,,UART9_CTS,,,LTDC_R5,EVENTOUT/EVENTOUT,, -PortJ,PJ5,,,,,,,,,,,,,,,LTDC_R6,EVENTOUT/EVENTOUT,, -PortJ,PJ6,,,,TIM8_CH2,,,,,,,,,,,LTDC_R7,EVENTOUT/EVENTOUT,, -PortJ,PJ7,DEBUG_TRGIN,,,TIM8_CH2N,,,,,,,,,,,LTDC_G0,EVENTOUT/EVENTOUT,, -PortJ,PJ8,,TIM1_CH3N,,TIM8_CH1,,,,,UART8_TX,,,,,,LTDC_G1,EVENTOUT/EVENTOUT,, -PortJ,PJ9,,TIM1_CH3,,TIM8_CH1N,,,,,UART8_RX,,,,,,LTDC_G2,EVENTOUT/EVENTOUT,, -PortK,PK0,,TIM1_CH1N,,TIM8_CH3,,SPI5_SCK,,,,,,,,,LTDC_G5,EVENTOUT/EVENTOUT,, -PortK,PK1,,TIM1_CH1,,TIM8_CH3N,,SPI5_NSS,,,,,,,,,LTDC_G6,EVENTOUT/EVENTOUT,, -PortK,PK2,,TIM1_BKIN,,TIM8_BKIN,,,,,,,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,,,LTDC_G7,EVENTOUT/EVENTOUT,, -PortK,PK3,,,,OCTOSPIM_P2_IO6,,,,,,,,,,,LTDC_B4,EVENTOUT/EVENTOUT,, -PortK,PK4,,,,OCTOSPIM_P2_IO7,,,,,,,,,,,LTDC_B5,EVENTOUT/EVENTOUT,, -PortK,PK5,,,,OCTOSPIM_P2_NCS,,,,,,,,,,,LTDC_B6,EVENTOUT/EVENTOUT,, -PortK,PK6,,,,OCTOSPIM_P2_DQS,,,,,,,,,,,LTDC_B7,EVENTOUT/EVENTOUT,, -PortK,PK7,,,,,,,,,,,,,,,LTDC_DE,EVENTOUT/EVENTOUT,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS ,LPTIM1/TIM1/2/16/17,PDM_SAI1/TIM3/4/5/12/15,DFSDM1/LPTIM2/3/LPUART1/OCTOSPIM_P1/2/TIM8,CEC/DCMI/PSSI/DFSDM1/2/I2C1/2/3/4/LPTIM2/TIM15/USART1,CEC/SPI1/I2S1/SPI2/I2S2/SPI3/I2S3/SPI4/5/SPI6/I2S6,DFSDM1/2/I2C4/OCTOSPIM_P1/SAI1/SPI3/I2S3/UART4,SDMMC1/SPI2/I2S2/SPI3/I2S3/SPI6/I2S6/UART7/USART1/2/3/6,LPUART1/SAI2/SDMMC1/SPDIFRX1/SPI6/I2S6/UART4/5/8,FDCAN1/2/FMC/LCD/OCTOSPIM_P1/2/SDMMC2/SPDIFRX1/TIM13/14,CRS/FMC/LCD/OCTOSPIM_P1/OTG1_FS/OTG1_HS/SAI2/SDMMC2/TIM8,DFSDM1/2/I2C4/LCD/MDIOS/OCTOSPIM_P1/SDMMC2/SWPMI1/TIM1/8/UART7/9/USART10,FMC/LCD/MDIOS/SDMMC1/TIM1/8 ,COMP/DCMI/PSSI/LCD/TIM1 ,LCD/UART5 ,SYS ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR ,TIM5_CH1 ,TIM8_ETR ,TIM15_BKIN ,I2S6_WS/SPI6_NSS , ,USART2_CTS/USART2_NSS ,UART4_TX ,SDMMC2_CMD ,SAI2_SD_B , , , , ,EVENTOUT,ADC1_INP16/C_ADC1_INP0/C_ADC1_INN1 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 ,LPTIM3_OUT ,TIM15_CH1N , , ,USART2_DE/USART2_RTS ,UART4_RX ,OCTOSPIM_P1_IO3 ,SAI2_MCLK_B ,OCTOSPIM_P1_DQS , , ,LTDC_R2 ,EVENTOUT,ADC1_INN16/ADC1_INP17/C_ADC1_INP1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 , ,TIM15_CH1 , ,DFSDM2_CKIN1 ,USART2_TX ,SAI2_SCK_B , , , ,MDIOS_MDIO , ,LTDC_R1 ,EVENTOUT,ADC1_INP14 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,OCTOSPIM_P1_CLK ,TIM15_CH2 ,I2S6_MCK , ,USART2_RX , ,LTDC_B2 ,USB_OTG_HS_ULPI_D0 , , , ,LTDC_B5 ,EVENTOUT,ADC1_INP15 +PortA,PA4 , , ,TIM5_ETR , , ,I2S1_WS/SPI1_NSS ,I2S3_WS/SPI3_NSS ,USART2_CK ,I2S6_WS/SPI6_NSS , , , , ,DCMI_HSYNC/PSSI_DE ,LTDC_VSYNC,EVENTOUT,ADC1_INP18 +PortA,PA5 ,PWR_NDSTOP2 ,TIM2_CH1/TIM2_ETR , ,TIM8_CH1N , ,I2S1_CK/SPI1_SCK , , ,I2S6_CK/SPI6_SCK , ,USB_OTG_HS_ULPI_CK , , ,PSSI_D14 ,LTDC_R4 ,EVENTOUT,ADC1_INN18/ADC1_INP19 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,I2S1_SDI/SPI1_MISO ,OCTOSPIM_P1_IO3 , ,I2S6_SDI/SPI6_MISO ,TIM13_CH1 ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,MDIOS_MDC ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2 ,DCMI_PIXCLK/PSSI_PDCK ,LTDC_G2 ,EVENTOUT,ADC12_INP3 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N ,DFSDM2_DATIN1 ,I2S1_SDO/SPI1_MOSI , , ,I2S6_SDO/SPI6_MOSI ,TIM14_CH1 ,OCTOSPIM_P1_IO2 , ,FMC_SDNWE , ,LTDC_VSYNC,EVENTOUT,ADC12_INN3/ADC12_INP7 +PortA,PA8 ,RCC_MCO_1 ,TIM1_CH1 , ,TIM8_BKIN2 ,I2C3_SCL , , ,USART1_CK , , ,USB_OTG_HS_SOF ,UART7_RX ,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2,LTDC_B3 ,LTDC_R6 ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , ,LPUART1_TX ,I2C3_SMBA ,I2S2_CK/SPI2_SCK , ,USART1_TX , , , , , ,DCMI_D0/PSSI_D0 ,LTDC_R5 ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , ,LPUART1_RX , , , ,USART1_RX , , ,USB_OTG_HS_ID ,MDIOS_MDIO ,LTDC_B4 ,DCMI_D1/PSSI_D1 ,LTDC_B1 ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 , ,LPUART1_CTS , ,I2S2_WS/SPI2_NSS ,UART4_RX ,USART1_CTS/USART1_NSS , ,FDCAN1_RX , , , , ,LTDC_R4 ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , ,LPUART1_DE/LPUART1_RTS , ,I2S2_CK/SPI2_SCK ,UART4_TX ,USART1_DE/USART1_RTS ,SAI2_FS_B ,FDCAN1_TX , , , , ,LTDC_R5 ,EVENTOUT, +PortA,PA13,DEBUG_JTMS/SWDIO, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,DEBUG_JTCK/SWCLK, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,DEBUG_JTDI ,TIM2_CH1/TIM2_ETR , , ,CEC ,I2S1_WS/SPI1_NSS ,I2S3_WS/SPI3_NSS ,I2S6_WS/SPI6_NSS ,UART4_DE/UART4_RTS ,LTDC_R3 , ,UART7_TX , , ,LTDC_B6 ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N ,DFSDM2_CKOUT , ,DFSDM1_CKOUT , ,UART4_CTS ,LTDC_R3 ,USB_OTG_HS_ULPI_D1 ,OCTOSPIM_P1_IO1 , , ,LTDC_G1 ,EVENTOUT,ADC12_INN5/ADC12_INP9 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,DFSDM1_DATIN1 , , ,LTDC_R6 ,USB_OTG_HS_ULPI_D2 ,OCTOSPIM_P1_IO0 , , ,LTDC_G0 ,EVENTOUT,ADC12_INP5 +PortB,PB2 ,RTC_OUT_ALARM , ,SAI1_D1 , ,DFSDM1_CKIN1 , ,SAI1_SD_A ,I2S3_SDO/SPI3_MOSI , ,OCTOSPIM_P1_CLK ,OCTOSPIM_P1_DQS , , , , ,EVENTOUT, +PortB,PB3 ,DEBUG_JTDO/SWO ,TIM2_CH2 , , , ,I2S1_CK/SPI1_SCK ,I2S3_CK/SPI3_SCK , ,I2S6_CK/SPI6_SCK ,SDMMC2_D2 ,CRS_SYNC ,UART7_RX , , , ,EVENTOUT, +PortB,PB4 , ,TIM16_BKIN ,TIM3_CH1 , , ,I2S1_SDI/SPI1_MISO ,I2S3_SDI/SPI3_MISO ,I2S2_WS/SPI2_NSS ,I2S6_SDI/SPI6_MISO ,SDMMC2_D3 , ,UART7_TX , , , ,EVENTOUT, +PortB,PB5 , ,TIM17_BKIN ,TIM3_CH2 , ,I2C1_SMBA ,I2S1_SDO/SPI1_MOSI ,I2C4_SMBA ,I2S3_SDO/SPI3_MOSI ,I2S6_SDO/SPI6_MOSI ,FDCAN2_RX ,USB_OTG_HS_ULPI_D7 ,LTDC_B5 ,FMC_SDCKE1 ,DCMI_D10/PSSI_D10 ,UART5_RX ,EVENTOUT, +PortB,PB6 , ,TIM16_CH1N ,TIM4_CH1 , ,I2C1_SCL ,CEC ,I2C4_SCL ,USART1_TX ,LPUART1_TX ,FDCAN2_TX ,OCTOSPIM_P1_NCS ,DFSDM1_DATIN5 ,FMC_SDNE1 ,DCMI_D5/PSSI_D5 ,UART5_TX ,EVENTOUT, +PortB,PB7 , ,TIM17_CH1N ,TIM4_CH2 , ,I2C1_SDA , ,I2C4_SDA ,USART1_RX ,LPUART1_RX , , ,DFSDM1_CKIN5 ,FMC_NL ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortB,PB8 , ,TIM16_CH1 ,TIM4_CH3 ,DFSDM1_CKIN7 ,I2C1_SCL , ,I2C4_SCL ,SDMMC1_CKIN ,UART4_RX ,FDCAN1_RX ,SDMMC2_D4 , ,SDMMC1_D4 ,DCMI_D6/PSSI_D6 ,LTDC_B6 ,EVENTOUT, +PortB,PB9 , ,TIM17_CH1 ,TIM4_CH4 ,DFSDM1_DATIN7 ,I2C1_SDA ,I2S2_WS/SPI2_NSS ,I2C4_SDA ,SDMMC1_CDIR ,UART4_TX ,FDCAN1_TX ,SDMMC2_D5 ,I2C4_SMBA ,SDMMC1_D5 ,DCMI_D7/PSSI_D7 ,LTDC_B7 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , ,LPTIM2_IN1 ,I2C2_SCL ,I2S2_CK/SPI2_SCK ,DFSDM1_DATIN7 ,USART3_TX , ,OCTOSPIM_P1_NCS ,USB_OTG_HS_ULPI_D3 , , , ,LTDC_G4 ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , ,LPTIM2_ETR ,I2C2_SDA , ,DFSDM1_CKIN7 ,USART3_RX , , ,USB_OTG_HS_ULPI_D4 , , , ,LTDC_G5 ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,OCTOSPIM_P1_NCLK ,I2C2_SMBA ,I2S2_WS/SPI2_NSS ,DFSDM1_DATIN1 ,USART3_CK , ,FDCAN2_RX ,USB_OTG_HS_ULPI_D5 ,DFSDM2_DATIN1 , ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,UART5_RX ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , ,LPTIM2_OUT ,DFSDM2_CKIN1 ,I2S2_CK/SPI2_SCK ,DFSDM1_CKIN1 ,USART3_CTS/USART3_NSS , ,FDCAN2_TX ,USB_OTG_HS_ULPI_D6 , ,SDMMC1_D0 ,DCMI_D2/PSSI_D2 ,UART5_TX ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N ,TIM12_CH1 ,TIM8_CH2N ,USART1_TX ,I2S2_SDI/SPI2_MISO ,DFSDM1_DATIN2 ,USART3_DE/USART3_RTS ,UART4_DE/UART4_RTS ,SDMMC2_D0 , , , , ,LTDC_CLK ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N ,TIM12_CH2 ,TIM8_CH3N ,USART1_RX ,I2S2_SDO/SPI2_MOSI ,DFSDM1_CKIN2 , ,UART4_CTS ,SDMMC2_D1 , , , , ,LTDC_G7 ,EVENTOUT, +PortC,PC0 , , , ,DFSDM1_CKIN0 , , ,DFSDM1_DATIN4 , ,SAI2_FS_B ,FMC_A25 ,USB_OTG_HS_ULPI_STP ,LTDC_G2 ,FMC_SDNWE , ,LTDC_R5 ,EVENTOUT,ADC12_INP10 +PortC,PC1 ,DEBUG_TRACED0 , ,SAI1_D1 ,DFSDM1_DATIN0 ,DFSDM1_CKIN4 ,I2S2_SDO/SPI2_MOSI ,SAI1_SD_A , , ,SDMMC2_CK ,OCTOSPIM_P1_IO4 , ,MDIOS_MDC , ,LTDC_G5 ,EVENTOUT,ADC12_INN10/ADC12_INP11 +PortC,PC2 ,PWR_CSTOP , , ,DFSDM1_CKIN1 , ,I2S2_SDI/SPI2_MISO ,DFSDM1_CKOUT , , ,OCTOSPIM_P1_IO2 ,USB_OTG_HS_ULPI_DIR ,OCTOSPIM_P1_IO5 ,FMC_SDNE0 , , ,EVENTOUT,ADC12_INN11/ADC12_INP12/C_ADC2_INP0/C_ADC2_INN1 +PortC,PC3 ,PWR_CSLEEP , , ,DFSDM1_DATIN1 , ,I2S2_SDO/SPI2_MOSI , , , ,OCTOSPIM_P1_IO0 ,USB_OTG_HS_ULPI_NXT ,OCTOSPIM_P1_IO6 ,FMC_SDCKE0 , , ,EVENTOUT,ADC12_INP13,ADC12_INN12/C_ADC2_INP1 +PortC,PC4 , , , ,DFSDM1_CKIN2 , ,I2S1_MCK , , , ,SPDIFRX_IN3 , , ,FMC_SDNE0 , ,LTDC_R7 ,EVENTOUT,ADC12_INP4 +PortC,PC5 , , ,SAI1_D3 ,DFSDM1_DATIN2 ,PSSI_D15 , , , , ,SPDIFRX_IN4 ,OCTOSPIM_P1_DQS , ,FMC_SDCKE0 ,COMP1_OUT ,LTDC_DE ,EVENTOUT,ADC12_INN4/ADC12_INP8 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 ,DFSDM1_CKIN3 ,I2S2_MCK , ,USART6_TX ,SDMMC1_D0DIR ,FMC_NWAIT ,SDMMC2_D6 , ,SDMMC1_D6 ,DCMI_D0/PSSI_D0 ,LTDC_HSYNC,EVENTOUT, +PortC,PC7 ,DEBUG_TRGIO , ,TIM3_CH2 ,TIM8_CH2 ,DFSDM1_DATIN3 , ,I2S3_MCK ,USART6_RX ,SDMMC1_D123DIR ,FMC_NE1 ,SDMMC2_D7 ,SWPMI1_TX ,SDMMC1_D7 ,DCMI_D1/PSSI_D1 ,LTDC_G6 ,EVENTOUT, +PortC,PC8 ,DEBUG_TRACED1 , ,TIM3_CH3 ,TIM8_CH3 , , , ,USART6_CK ,UART5_DE/UART5_RTS ,FMC_NCE/FMC_NE2 ,FMC_INT ,SWPMI1_RX ,SDMMC1_D0 ,DCMI_D2/PSSI_D2 , ,EVENTOUT, +PortC,PC9 ,RCC_MCO_2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,I2S_CKIN , , ,UART5_CTS ,OCTOSPIM_P1_IO0 ,LTDC_G3 ,SWPMI1_SUSPEND ,SDMMC1_D1 ,DCMI_D3/PSSI_D3 ,LTDC_B2 ,EVENTOUT, +PortC,PC10, , , ,DFSDM1_CKIN5 ,DFSDM2_CKIN0 , ,I2S3_CK/SPI3_SCK ,USART3_TX ,UART4_TX ,OCTOSPIM_P1_IO1 ,LTDC_B1 ,SWPMI1_RX ,SDMMC1_D2 ,DCMI_D8/PSSI_D8 ,LTDC_R2 ,EVENTOUT, +PortC,PC11, , , ,DFSDM1_DATIN5 ,DFSDM2_DATIN0 , ,I2S3_SDI/SPI3_MISO ,USART3_RX ,UART4_RX ,OCTOSPIM_P1_NCS , , ,SDMMC1_D3 ,DCMI_D4/PSSI_D4 ,LTDC_B4 ,EVENTOUT, +PortC,PC12,DEBUG_TRACED3 , ,TIM15_CH1 , ,DFSDM2_CKOUT ,I2S6_CK/SPI6_SCK ,I2S3_SDO/SPI3_MOSI ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9/PSSI_D9 ,LTDC_R6 ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,DFSDM1_CKIN6 , , , , ,UART4_RX ,FDCAN1_RX , ,UART9_CTS ,FMC_D2/FMC_DA2 , ,LTDC_B1 ,EVENTOUT, +PortD,PD1 , , , ,DFSDM1_DATIN6 , , , , ,UART4_TX ,FDCAN1_TX , , ,FMC_D3/FMC_DA3 , , ,EVENTOUT, +PortD,PD2 ,DEBUG_TRACED2 , ,TIM3_ETR , ,TIM15_BKIN , , , ,UART5_RX ,LTDC_B7 , , ,SDMMC1_CMD ,DCMI_D11/PSSI_D11 ,LTDC_B2 ,EVENTOUT, +PortD,PD3 , , , ,DFSDM1_CKOUT , ,I2S2_CK/SPI2_SCK , ,USART2_CTS/USART2_NSS , , , , ,FMC_CLK ,DCMI_D5/PSSI_D5 ,LTDC_G7 ,EVENTOUT, +PortD,PD4 , , , , , , , ,USART2_DE/USART2_RTS , , ,OCTOSPIM_P1_IO4 , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , ,OCTOSPIM_P1_IO5 , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , ,SAI1_D1 ,DFSDM1_CKIN4 ,DFSDM1_DATIN1 ,I2S3_SDO/SPI3_MOSI ,SAI1_SD_A ,USART2_RX , , ,OCTOSPIM_P1_IO6 ,SDMMC2_CK ,FMC_NWAIT ,DCMI_D10/PSSI_D10 ,LTDC_B2 ,EVENTOUT, +PortD,PD7 , , , ,DFSDM1_DATIN4 , ,I2S1_SDO/SPI1_MOSI ,DFSDM1_CKIN1 ,USART2_CK , ,SPDIFRX_IN1 ,OCTOSPIM_P1_IO7 ,SDMMC2_CMD ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , ,DFSDM1_CKIN3 , , , ,USART3_TX , ,SPDIFRX_IN2 , , ,FMC_D13/FMC_DA13 , , ,EVENTOUT, +PortD,PD9 , , , ,DFSDM1_DATIN3 , , , ,USART3_RX , , , , ,FMC_D14/FMC_DA14 , , ,EVENTOUT, +PortD,PD10, , , ,DFSDM1_CKOUT ,DFSDM2_CKOUT , , ,USART3_CK , , , , ,FMC_D15/FMC_DA15 , ,LTDC_B3 ,EVENTOUT, +PortD,PD11, , , ,LPTIM2_IN2 ,I2C4_SMBA , , ,USART3_CTS/USART3_NSS , ,OCTOSPIM_P1_IO0 ,SAI2_SD_A , ,FMC_A16/FMC_CLE , , ,EVENTOUT, +PortD,PD12, ,LPTIM1_IN1 ,TIM4_CH1 ,LPTIM2_IN1 ,I2C4_SCL , , ,USART3_DE/USART3_RTS , ,OCTOSPIM_P1_IO1 ,SAI2_FS_A , ,FMC_A17/FMC_ALE ,DCMI_D12/PSSI_D12 , ,EVENTOUT, +PortD,PD13, ,LPTIM1_OUT ,TIM4_CH2 , ,I2C4_SDA , , , , ,OCTOSPIM_P1_IO3 ,SAI2_SCK_A ,UART9_DE/UART9_RTS ,FMC_A18 ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , ,UART8_CTS , , ,UART9_RX ,FMC_D0/FMC_DA0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , ,UART8_DE/UART8_RTS , , ,UART9_TX ,FMC_D1/FMC_DA1 , , ,EVENTOUT, +PortE,PE0 , ,LPTIM1_ETR ,TIM4_ETR , ,LPTIM2_ETR , , , ,UART8_RX , ,SAI2_MCLK_A , ,FMC_NBL0 ,DCMI_D2/PSSI_D2 ,LTDC_R0 ,EVENTOUT, +PortE,PE1 , ,LPTIM1_IN2 , , , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3/PSSI_D3 ,LTDC_R6 ,EVENTOUT, +PortE,PE2 ,DEBUG_TRACECLK , ,SAI1_CK1 , , ,SPI4_SCK ,SAI1_MCLK_A , , ,OCTOSPIM_P1_IO2 , ,USART10_RX ,FMC_A23 , , ,EVENTOUT, +PortE,PE3 ,DEBUG_TRACED0 , , , ,TIM15_BKIN , ,SAI1_SD_B , , , , ,USART10_TX ,FMC_A19 , , ,EVENTOUT, +PortE,PE4 ,DEBUG_TRACED1 , ,SAI1_D2 ,DFSDM1_DATIN3 ,TIM15_CH1N ,SPI4_NSS ,SAI1_FS_A , , , , , ,FMC_A20 ,DCMI_D4/PSSI_D4 ,LTDC_B0 ,EVENTOUT, +PortE,PE5 ,DEBUG_TRACED2 , ,SAI1_CK2 ,DFSDM1_CKIN3 ,TIM15_CH1 ,SPI4_MISO ,SAI1_SCK_A , , , , , ,FMC_A21 ,DCMI_D6/PSSI_D6 ,LTDC_G0 ,EVENTOUT, +PortE,PE6 ,DEBUG_TRACED3 ,TIM1_BKIN2 ,SAI1_D1 , ,TIM15_CH2 ,SPI4_MOSI ,SAI1_SD_A , , , ,SAI2_MCLK_B ,TIM1_BKIN2_COMP1/TIM1_BKIN2_COMP2 ,FMC_A22 ,DCMI_D7/PSSI_D7 ,LTDC_G1 ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , ,DFSDM1_DATIN2 , , , ,UART7_RX , , ,OCTOSPIM_P1_IO4 , ,FMC_D4/FMC_DA4 , , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , ,DFSDM1_CKIN2 , , , ,UART7_TX , , ,OCTOSPIM_P1_IO5 , ,FMC_D5/FMC_DA5 ,COMP2_OUT , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , ,DFSDM1_CKOUT , , , ,UART7_DE/UART7_RTS , , ,OCTOSPIM_P1_IO6 , ,FMC_D6/FMC_DA6 , , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , ,DFSDM1_DATIN4 , , , ,UART7_CTS , , ,OCTOSPIM_P1_IO7 , ,FMC_D7/FMC_DA7 , , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , ,DFSDM1_CKIN4 , ,SPI4_NSS , , , , ,SAI2_SD_B ,OCTOSPIM_P1_NCS ,FMC_D8/FMC_DA8 , ,LTDC_G3 ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , ,DFSDM1_DATIN5 , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9/FMC_DA9 ,COMP1_OUT ,LTDC_B4 ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , ,DFSDM1_CKIN5 , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10/FMC_DA10 ,COMP2_OUT ,LTDC_DE ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCLK_B , ,FMC_D11/FMC_DA11 , ,LTDC_CLK ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , , , , , , , , , ,USART10_CK ,FMC_D12/FMC_DA12 ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,LTDC_R7 ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , ,OCTOSPIM_P2_IO0 , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , ,OCTOSPIM_P2_IO1 , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , ,OCTOSPIM_P2_IO2 , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , ,OCTOSPIM_P2_IO3 , , ,FMC_A3 , , ,EVENTOUT, +PortF,PF4 , , , , , , , , , ,OCTOSPIM_P2_CLK , , ,FMC_A4 , , ,EVENTOUT, +PortF,PF5 , , , , , , , , , ,OCTOSPIM_P2_NCLK , , ,FMC_A5 , , ,EVENTOUT, +PortF,PF6 , ,TIM16_CH1 , , , ,SPI5_NSS ,SAI1_SD_B ,UART7_RX , , ,OCTOSPIM_P1_IO3 , , , , ,EVENTOUT, +PortF,PF7 , ,TIM17_CH1 , , , ,SPI5_SCK ,SAI1_MCLK_B ,UART7_TX , , ,OCTOSPIM_P1_IO2 , , , , ,EVENTOUT, +PortF,PF8 , ,TIM16_CH1N , , , ,SPI5_MISO ,SAI1_SCK_B ,UART7_DE/UART7_RTS , ,TIM13_CH1 ,OCTOSPIM_P1_IO0 , , , , ,EVENTOUT, +PortF,PF9 , ,TIM17_CH1N , , , ,SPI5_MOSI ,SAI1_FS_B ,UART7_CTS , ,TIM14_CH1 ,OCTOSPIM_P1_IO1 , , , , ,EVENTOUT, +PortF,PF10, ,TIM16_BKIN ,SAI1_D3 , ,PSSI_D15 , , , , ,OCTOSPIM_P1_CLK , , , ,DCMI_D11/PSSI_D11 ,LTDC_DE ,EVENTOUT, +PortF,PF11, , , , , ,SPI5_MOSI , , , ,OCTOSPIM_P1_NCLK ,SAI2_SD_B , ,FMC_SDNRAS ,DCMI_D12/PSSI_D12 , ,EVENTOUT,ADC1_INP2 +PortF,PF12, , , , , , , , , ,OCTOSPIM_P2_DQS , , ,FMC_A6 , , ,EVENTOUT,ADC1_INN2/ADC1_INP6 +PortF,PF13, , , ,DFSDM1_DATIN6 ,I2C4_SMBA , , , , , , , ,FMC_A7 , , ,EVENTOUT,ADC2_INP2 +PortF,PF14, , , ,DFSDM1_CKIN6 ,I2C4_SCL , , , , , , , ,FMC_A8 , , ,EVENTOUT,ADC2_INN2/ADC2_INP6 +PortF,PF15, , , , ,I2C4_SDA , , , , , , , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , ,OCTOSPIM_P2_IO4 , ,UART9_RX ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , ,OCTOSPIM_P2_IO5 , ,UART9_TX ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , ,TIM8_BKIN , , , , , , , ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,FMC_A12 , , ,EVENTOUT, +PortG,PG3 , , , ,TIM8_BKIN2 , , , , , , , ,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2 ,FMC_A13 , , ,EVENTOUT, +PortG,PG4 , ,TIM1_BKIN2 , , , , , , , , , ,TIM1_BKIN2_COMP1/TIM1_BKIN2_COMP2 ,FMC_A14/FMC_BA0 , , ,EVENTOUT, +PortG,PG5 , ,TIM1_ETR , , , , , , , , , , ,FMC_A15/FMC_BA1 , , ,EVENTOUT, +PortG,PG6 , ,TIM17_BKIN , , , , , , , , ,OCTOSPIM_P1_NCS , ,FMC_NE3 ,DCMI_D12/PSSI_D12 ,LTDC_R7 ,EVENTOUT, +PortG,PG7 , , , , , , ,SAI1_MCLK_A ,USART6_CK , ,OCTOSPIM_P2_DQS , , ,FMC_INT ,DCMI_D13/PSSI_D13 ,LTDC_CLK ,EVENTOUT, +PortG,PG8 , , , ,TIM8_ETR , ,I2S6_WS/SPI6_NSS , ,USART6_DE/USART6_RTS ,SPDIFRX_IN3 , , , ,FMC_SDCLK , ,LTDC_G7 ,EVENTOUT, +PortG,PG9 , , , , , ,I2S1_SDI/SPI1_MISO , ,USART6_RX ,SPDIFRX_IN4 ,OCTOSPIM_P1_IO6 ,SAI2_FS_B ,SDMMC2_D0 ,FMC_NCE/FMC_NE2 ,DCMI_VSYNC/PSSI_RDY , ,EVENTOUT, +PortG,PG10, , , ,OCTOSPIM_P2_IO6 , ,I2S1_WS/SPI1_NSS , , , ,LTDC_G3 ,SAI2_SD_B ,SDMMC2_D1 ,FMC_NE3 ,DCMI_D2/PSSI_D2 ,LTDC_B2 ,EVENTOUT, +PortG,PG11, ,LPTIM1_IN2 , , , ,I2S1_CK/SPI1_SCK , , ,SPDIFRX_IN1 ,OCTOSPIM_P2_IO7 ,SDMMC2_D2 ,USART10_RX , ,DCMI_D3/PSSI_D3 ,LTDC_B3 ,EVENTOUT, +PortG,PG12, ,LPTIM1_IN1 , ,OCTOSPIM_P2_NCS , ,I2S6_SDI/SPI6_MISO , ,USART6_DE/USART6_RTS ,SPDIFRX_IN2 ,LTDC_B4 ,SDMMC2_D3 ,USART10_TX ,FMC_NE4 , ,LTDC_B1 ,EVENTOUT, +PortG,PG13,DEBUG_TRACED0 ,LPTIM1_OUT , , , ,I2S6_CK/SPI6_SCK , ,USART6_CTS/USART6_NSS , , ,SDMMC2_D6 ,USART10_CTS/USART10_NSS ,FMC_A24 , ,LTDC_R0 ,EVENTOUT, +PortG,PG14,DEBUG_TRACED1 ,LPTIM1_ETR , , , ,I2S6_SDO/SPI6_MOSI , ,USART6_TX , ,OCTOSPIM_P1_IO7 ,SDMMC2_D7 ,USART10_DE/USART10_RTS ,FMC_A25 , ,LTDC_B0 ,EVENTOUT, +PortG,PG15, , , , , , , ,USART6_CTS/USART6_NSS , ,OCTOSPIM_P2_DQS , ,USART10_CK ,FMC_SDNCAS ,DCMI_D13/PSSI_D13 , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , ,LPTIM1_IN2 , , , , , , , ,OCTOSPIM_P1_IO4 ,SAI2_SCK_B , ,FMC_SDCKE0 , ,LTDC_R0 ,EVENTOUT, +PortH,PH3 , , , , , , , , , ,OCTOSPIM_P1_IO5 ,SAI2_MCLK_B , ,FMC_SDNE0 , ,LTDC_R1 ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , ,LTDC_G5 ,USB_OTG_HS_ULPI_NXT , , ,PSSI_D14 ,LTDC_G4 ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , ,EVENTOUT, +PortH,PH6 , , ,TIM12_CH1 , ,I2C2_SMBA ,SPI5_SCK , , , , , , ,FMC_SDNE1 ,DCMI_D8/PSSI_D8 , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , , ,FMC_SDCKE1 ,DCMI_D9/PSSI_D9 , ,EVENTOUT, +PortH,PH8 , , ,TIM5_ETR , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC/PSSI_DE ,LTDC_R2 ,EVENTOUT, +PortH,PH9 , , ,TIM12_CH2 , ,I2C3_SMBA , , , , , , , ,FMC_D17 ,DCMI_D0/PSSI_D0 ,LTDC_R3 ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1 , ,I2C4_SMBA , , , , , , , ,FMC_D18 ,DCMI_D1/PSSI_D1 ,LTDC_R4 ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2 , ,I2C4_SCL , , , , , , , ,FMC_D19 ,DCMI_D2/PSSI_D2 ,LTDC_R5 ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3 , ,I2C4_SDA , , , , , , , ,FMC_D20 ,DCMI_D3/PSSI_D3 ,LTDC_R6 ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , ,UART4_TX ,FDCAN1_TX , , ,FMC_D21 , ,LTDC_G2 ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , ,UART4_RX ,FDCAN1_RX , , ,FMC_D22 ,DCMI_D4/PSSI_D4 ,LTDC_G3 ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11/PSSI_D11 ,LTDC_G4 ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4 , , ,I2S2_WS/SPI2_NSS , , , , , , ,FMC_D24 ,DCMI_D13/PSSI_D13 ,LTDC_G5 ,EVENTOUT, +PortI,PI1 , , , ,TIM8_BKIN2 , ,I2S2_CK/SPI2_SCK , , , , , ,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2 ,FMC_D25 ,DCMI_D8/PSSI_D8 ,LTDC_G6 ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,I2S2_SDI/SPI2_MISO , , , , , , ,FMC_D26 ,DCMI_D9/PSSI_D9 ,LTDC_G7 ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,I2S2_SDO/SPI2_MOSI , , , , , , ,FMC_D27 ,DCMI_D10/PSSI_D10 , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,SAI2_MCLK_A ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,FMC_NBL2 ,DCMI_D5/PSSI_D5 ,LTDC_B4 ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , ,FMC_NBL3 ,DCMI_VSYNC/PSSI_RDY ,LTDC_B5 ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , ,FMC_D28 ,DCMI_D6/PSSI_D6 ,LTDC_B6 ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , ,FMC_D29 ,DCMI_D7/PSSI_D7 ,LTDC_B7 ,EVENTOUT, +PortI,PI8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI9 , , , ,OCTOSPIM_P2_IO0 , , , , ,UART4_RX ,FDCAN1_RX , , ,FMC_D30 , ,LTDC_VSYNC,EVENTOUT, +PortI,PI10, , , ,OCTOSPIM_P2_IO1 , , , , , , , , ,FMC_D31 ,PSSI_D14 ,LTDC_HSYNC,EVENTOUT, +PortI,PI11, , , ,OCTOSPIM_P2_IO2 , , , , , ,LTDC_G6 ,USB_OTG_HS_ULPI_DIR , , ,PSSI_D15 , ,EVENTOUT, +PortI,PI12, , , ,OCTOSPIM_P2_IO3 , , , , , , , , , , ,LTDC_HSYNC,EVENTOUT, +PortI,PI13, , , ,OCTOSPIM_P2_CLK , , , , , , , , , , ,LTDC_VSYNC,EVENTOUT, +PortI,PI14, , , ,OCTOSPIM_P2_NCLK , , , , , , , , , , ,LTDC_CLK ,EVENTOUT, +PortI,PI15, , , , , , , , , ,LTDC_G2 , , , , ,LTDC_R0 ,EVENTOUT, +PortJ,PJ0 , , , , , , , , , ,LTDC_R7 , , , , ,LTDC_R1 ,EVENTOUT, +PortJ,PJ1 , , , ,OCTOSPIM_P2_IO4 , , , , , , , , , , ,LTDC_R2 ,EVENTOUT, +PortJ,PJ2 , , , ,OCTOSPIM_P2_IO5 , , , , , , , , , , ,LTDC_R3 ,EVENTOUT, +PortJ,PJ3 , , , , , , , , , , , ,UART9_DE/UART9_RTS , , ,LTDC_R4 ,EVENTOUT, +PortJ,PJ4 , , , , , , , , , , , ,UART9_CTS , , ,LTDC_R5 ,EVENTOUT, +PortJ,PJ5 , , , , , , , , , , , , , , ,LTDC_R6 ,EVENTOUT, +PortJ,PJ6 , , , ,TIM8_CH2 , , , , , , , , , , ,LTDC_R7 ,EVENTOUT, +PortJ,PJ7 ,DEBUG_TRGIN , , ,TIM8_CH2N , , , , , , , , , , ,LTDC_G0 ,EVENTOUT, +PortJ,PJ8 , ,TIM1_CH3N , ,TIM8_CH1 , , , , ,UART8_TX , , , , , ,LTDC_G1 ,EVENTOUT, +PortJ,PJ9 , ,TIM1_CH3 , ,TIM8_CH1N , , , , ,UART8_RX , , , , , ,LTDC_G2 ,EVENTOUT, +PortJ,PJ10, ,TIM1_CH2N , ,TIM8_CH2 , ,SPI5_MOSI , , , , , , , , ,LTDC_G3 ,EVENTOUT, +PortJ,PJ11, ,TIM1_CH2 , ,TIM8_CH2N , ,SPI5_MISO , , , , , , , , ,LTDC_G4 ,EVENTOUT, +PortJ,PJ12,DEBUG_TRGOUT , , , , , , , , ,LTDC_G3 , , , , ,LTDC_B0 ,EVENTOUT, +PortJ,PJ13, , , , , , , , , ,LTDC_B4 , , , , ,LTDC_B1 ,EVENTOUT, +PortJ,PJ14, , , , , , , , , , , , , , ,LTDC_B2 ,EVENTOUT, +PortJ,PJ15, , , , , , , , , , , , , , ,LTDC_B3 ,EVENTOUT, +PortK,PK0 , ,TIM1_CH1N , ,TIM8_CH3 , ,SPI5_SCK , , , , , , , , ,LTDC_G5 ,EVENTOUT, +PortK,PK1 , ,TIM1_CH1 , ,TIM8_CH3N , ,SPI5_NSS , , , , , , , , ,LTDC_G6 ,EVENTOUT, +PortK,PK2 , ,TIM1_BKIN , ,TIM8_BKIN , , , , , , ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2 , , ,LTDC_G7 ,EVENTOUT, +PortK,PK3 , , , ,OCTOSPIM_P2_IO6 , , , , , , , , , , ,LTDC_B4 ,EVENTOUT, +PortK,PK4 , , , ,OCTOSPIM_P2_IO7 , , , , , , , , , , ,LTDC_B5 ,EVENTOUT, +PortK,PK5 , , , ,OCTOSPIM_P2_NCS , , , , , , , , , , ,LTDC_B6 ,EVENTOUT, +PortK,PK6 , , , ,OCTOSPIM_P2_DQS , , , , , , , , , , ,LTDC_B7 ,EVENTOUT, +PortK,PK7 , , , , , , , , , , , , , , ,LTDC_DE ,EVENTOUT, diff --git a/ports/stm32/boards/stm32l072_af.csv b/ports/stm32/boards/stm32l072_af.csv index c9155bd444976..3de03b0bc4e4a 100644 --- a/ports/stm32/boards/stm32l072_af.csv +++ b/ports/stm32/boards/stm32l072_af.csv @@ -1,84 +1,84 @@ -Port,Pin,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,, -,,SPI1/SPI2/I2S2/USART1/2/LPUART1/USB/LPTIM1/TSC/TIM2/21/22/EVENTOUT/SYS_AF,SPI1/SPI2/I2S2/I2C1/TIM2/21,SPI1/SPI2/I2S2/LPUART1/USART5/USB/LPTIM1/TIM2/3/EVENTOUT/SYS_AF,I2C1/TSC/EVENTOUT,I2C1/USART1/2/LPUART1/TIM3/22/EVENTOUT,SPI2/I2S2/I2C2/USART1/TIM2/21/22,I2C1/2/LPUART1/USART4/UASRT5/TIM21/EVENTOUT,I2C3/LPUART1/COMP1/2/TIM3,,ADC -PortA,PA0,,,TIM2_CH1,TSC_G1_IO1,USART2_CTS,TIM2_ETR,USART4_TX,COMP1_OUT,,ADC_IN0 -PortA,PA1,EVENTOUT,,TIM2_CH2,TSC_G1_IO2,USART2_RTS/USART2_DE,TIM21_ETR,USART4_RX,,,ADC_IN1 -PortA,PA2,TIM21_CH1,,TIM2_CH3,TSC_G1_IO3,USART2_TX,,LPUART1_TX,COMP2_OUT,,ADC_IN2 -PortA,PA3,TIM21_CH2,,TIM2_CH4,TSC_G1_IO4,USART2_RX,,LPUART1_RX,,,ADC_IN3 -PortA,PA4,SPI1_NSS,,,TSC_G2_IO1,USART2_CK,TIM22_ETR,,,,ADC_IN4 -PortA,PA5,SPI1_SCK,,TIM2_ETR,TSC_G2_IO2,,TIM2_CH1,,,,ADC_IN5 -PortA,PA6,SPI1_MISO,,TIM3_CH1,TSC_G2_IO3,LPUART1_CTS,TIM22_CH1,EVENTOUT,COMP1_OUT,,ADC_IN6 -PortA,PA7,SPI1_MOSI,,TIM3_CH2,TSC_G2_IO4,,TIM22_CH2,EVENTOUT,COMP2_OUT,,ADC_IN7 -PortA,PA8,MCO,,USB_CRS_SYNC,EVENTOUT,USART1_CK,,,I2C3_SCL,, -PortA,PA9,MCO,,,TSC_G4_IO1,USART1_TX,,I2C1_SCL,I2C3_SMBA,, -PortA,PA10,,,,TSC_G4_IO2,USART1_RX,,I2C1_SDA,,, -PortA,PA11,SPI1_MISO,,EVENTOUT,TSC_G4_IO3,USART1_CTS,,,COMP1_OUT,, -PortA,PA12,SPI1_MOSI,,EVENTOUT,TSC_G4_IO4,USART1_RTS/USART1_DE,,,COMP2_OUT,, -PortA,PA13,SWDIO,,USB_NOE,,,,LPUART1_RX,,, -PortA,PA14,SWCLK,,,,USART2_TX,,LPUART1_TX,,, -PortA,PA15,SPI1_NSS,,TIM2_ETR,EVENTOUT,USART2_RX,TIM2_CH1,USART4_RTS/USART4_DE,,, -PortB,PB0,EVENTOUT,,TIM3_CH3,TSC_G3_IO2,,,,,,ADC_IN8 -PortB,PB1,,,TIM3_CH4,TSC_G3_IO3,LPUART1_RTS/LPUART1_DE,,,,,ADC_IN9 -PortB,PB2,,,LPTIM1_OUT,TSC_G3_IO4,,,,I2C3_SMBA,, -PortB,PB3,SPI1_SCK,,TIM2_CH2,TSC_G5_IO1,EVENTOUT,USART1_RTS/USART1_DE,USART5_TX,,, -PortB,PB4,SPI1_MISO,,TIM3_CH1,TSC_G5_IO2,TIM22_CH1,USART1_CTS,USART5_RX,I2C3_SDA,, -PortB,PB5,SPI1_MOSI,,LPTIM1_IN1,I2C1_SMBA,TIM3_CH2/TIM22_CH2,USART1_CK,USART5_CK/USART5_RTS/USART5_DE,,, -PortB,PB6,USART1_TX,I2C1_SCL,LPTIM1_ETR,TSC_G5_IO3,,,,,, -PortB,PB7,USART1_RX,I2C1_SDA,LPTIM1_IN2,TSC_G5_IO4,,,USART4_CTS,,, -PortB,PB8,,,,TSC_SYNC,I2C1_SCL,,,,, -PortB,PB9,,,EVENTOUT,,I2C1_SDA,SPI2_NSS/I2S2_WS,,,, -PortB,PB10,,,TIM2_CH3,TSC_SYNC,LPUART1_TX,SPI2_SCK,I2C2_SCL,LPUART1_RX,, -PortB,PB11,EVENTOUT,,TIM2_CH4,TSC_G6_IO1,LPUART1_RX,,I2C2_SDA,LPUART1_TX,, -PortB,PB12,SPI2_NSS/I2S2_WS,,LPUART1_RTS/LPUART1_DE,TSC_G6_IO2,I2C2_SMBA,,EVENTOUT,,, -PortB,PB13,SPI2_SCK/I2S2_CK,,MCO,TSC_G6_IO3,LPUART1_CTS,I2C2_SCL,TIM21_CH1,,, -PortB,PB14,SPI2_MISO/I2S2_MCK,,RTC_OUT,TSC_G6_IO4,LPUART1_RTS/LPUART1_DE,I2C2_SDA,TIM21_CH2,,, -PortB,PB15,SPI2_MOSI/I2S2_SD,,RTC_REFIN,,,,,,, -PortC,PC0,LPTIM1_IN1,,EVENTOUT,TSC_G7_IO1,,,LPUART1_RX,I2C3_SCL,,ADC_IN10 -PortC,PC1,LPTIM1_OUT,,EVENTOUT,TSC_G7_IO2,,,LPUART1_TX,I2C3_SDA,,ADC_IN11 -PortC,PC2,LPTIM1_IN2,,SPI2_MISO/I2S2_MCK,TSC_G7_IO3,,,,,,ADC_IN12 -PortC,PC3,LPTIM1_ETR,,SPI2_MOSI/I2S2_SD,TSC_G7_IO4,,,,,,ADC_IN13 -PortC,PC4,EVENTOUT,,LPUART1_TX,,,,,,,ADC_IN14 -PortC,PC5,LPUART1_RX,,TSC_G3_IO1,,,,,,,ADC_IN15 -PortC,PC6,TIM22_CH1,,TIM3_CH1,TSC_G8_IO1,,,,,, -PortC,PC7,TIM22_CH2,,TIM3_CH2,TSC_G8_IO2,,,,,, -PortC,PC8,TIM22_ETR,,TIM3_CH3,TSC_G8_IO3,,,,,, -PortC,PC9,TIM21_ETR,,USB_NOE/TIM3_CH4,TSC_G8_IO4,,,,I2C3_SDA,, -PortC,PC10,LPUART1_TX,,,,,,USART4_TX,,, -PortC,PC11,LPUART1_RX,,,,,,USART4_RX,,, -PortC,PC12,,,USART5_TX,,,,USART4_CK,,, -PortC,PC13,,,,,,,,,, -PortC,PC14,,,,,,,,,, -PortC,PC15,,,,,,,,,, -PortD,PD0,TIM21_CH1,SPI2_NSS/I2S2_WS,,,,,,,, -PortD,PD1,,SPI2_SCK/I2S2_CK,,,,,,,, -PortD,PD2,LPUART1_RTS/LPUART1_DE,,TIM3_ETR,,,,USART5_RX,,, -PortD,PD3,USART2_CTS,,SPI2_MISO/I2S2_MCK,,,,,,, -PortD,PD4,USART2_RTS/USART2_DE,SPI2_MOSI/I2S2_SD,,,,,,,, -PortD,PD5,USART2_TX,,,,,,,,, -PortD,PD6,USART2_RX,,,,,,,,, -PortD,PD7,USART2_CK,TIM21_CH2,,,,,,,, -PortD,PD8,LPUART1_TX,,,,,,,,, -PortD,PD9,LPUART1_RX,,,,,,,,, -PortD,PD10,,,,,,,,,, -PortD,PD11,LPUART1_CTS,,,,,,,,, -PortD,PD12,LPUART1_RTS/LPUART1_DE,,,,,,,,, -PortD,PD13,,,,,,,,,, -PortD,PD14,,,,,,,,,, -PortD,PD15,USB_CRS_SYNC,,,,,,,,, -PortE,PE0,,,EVENTOUT,,,,,,, -PortE,PE1,,,EVENTOUT,,,,,,, -PortE,PE2,,,TIM3_ETR,,,,,,, -PortE,PE3,TIM22_CH1,,TIM3_CH1,,,,,,, -PortE,PE4,TIM22_CH2,,TIM3_CH2,,,,,,, -PortE,PE5,TIM21_CH1,,TIM3_CH3,,,,,,, -PortE,PE6,TIM21_CH2,,TIM3_CH4,,,,,,, -PortE,PE7,,,,,,,USART5_CK/USART5_RTS/USART5_DE,,, -PortE,PE8,,,,,,,USART4_TX,,, -PortE,PE9,TIM2_CH1,,TIM2_ETR,,,,USART4_RX,,, -PortE,PE10,TIM2_CH2,,,,,,USART5_TX,,, -PortE,PE11,TIM2_CH3,,,,,,USART5_RX,,, -PortE,PE12,TIM2_CH4,,SPI1_NSS,,,,,,, -PortE,PE13,,,SPI1_SCK,,,,,,, -PortE,PE14,,,SPI1_MISO,,,,,,, -PortE,PE15,,,SPI1_MOSI,,,,,,, -PortH,PH0,USB_CRS_SYNC,,,,,,,,, -PortH,PH1,,,,,,,,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,,,,,,,,,ADC + , ,SPI1/SPI2/I2S2/USART1/2/LPUART1/USB/LPTIM1/TSC/TIM2/21/22/EVENTOUT/SYS_AF,SPI1/SPI2/I2S2/I2C1/TIM2/21,SPI1/SPI2/I2S2/LPUART1/USART5/USB/LPTIM1/TIM2/3/EVENTOUT/SYS_AF,I2C1/TSC/EVENTOUT,I2C1/USART1/2/LPUART1/TIM3/22/EVENTOUT,SPI2/I2S2/I2C2/USART1/TIM2/21/22,I2C1/2/LPUART1/USART4/UASRT5/TIM21/EVENTOUT,I2C3/LPUART1/COMP1/2/TIM3,,,,,,,,,ADC +PortA,PA0 , , ,TIM2_CH1 ,TSC_G1_IO1 ,USART2_CTS ,TIM2_ETR ,USART4_TX ,COMP1_OUT ,,,,,,,,,ADC1_IN0 +PortA,PA1 ,EVENTOUT , ,TIM2_CH2 ,TSC_G1_IO2 ,USART2_RTS/USART2_DE ,TIM21_ETR ,USART4_RX , ,,,,,,,,,ADC1_IN1 +PortA,PA2 ,TIM21_CH1 , ,TIM2_CH3 ,TSC_G1_IO3 ,USART2_TX , ,LPUART1_TX ,COMP2_OUT ,,,,,,,,,ADC1_IN2 +PortA,PA3 ,TIM21_CH2 , ,TIM2_CH4 ,TSC_G1_IO4 ,USART2_RX , ,LPUART1_RX , ,,,,,,,,,ADC1_IN3 +PortA,PA4 ,SPI1_NSS , , ,TSC_G2_IO1 ,USART2_CK ,TIM22_ETR , , ,,,,,,,,,ADC1_IN4 +PortA,PA5 ,SPI1_SCK , ,TIM2_ETR ,TSC_G2_IO2 , ,TIM2_CH1 , , ,,,,,,,,,ADC1_IN5 +PortA,PA6 ,SPI1_MISO , ,TIM3_CH1 ,TSC_G2_IO3 ,LPUART1_CTS ,TIM22_CH1 ,EVENTOUT ,COMP1_OUT ,,,,,,,,,ADC1_IN6 +PortA,PA7 ,SPI1_MOSI , ,TIM3_CH2 ,TSC_G2_IO4 , ,TIM22_CH2 ,EVENTOUT ,COMP2_OUT ,,,,,,,,,ADC1_IN7 +PortA,PA8 ,MCO , ,USB_CRS_SYNC ,EVENTOUT ,USART1_CK , , ,I2C3_SCL ,,,,,,,,, +PortA,PA9 ,MCO , , ,TSC_G4_IO1 ,USART1_TX , ,I2C1_SCL ,I2C3_SMBA ,,,,,,,,, +PortA,PA10, , , ,TSC_G4_IO2 ,USART1_RX , ,I2C1_SDA , ,,,,,,,,, +PortA,PA11,SPI1_MISO , ,EVENTOUT ,TSC_G4_IO3 ,USART1_CTS , , ,COMP1_OUT ,,,,,,,,, +PortA,PA12,SPI1_MOSI , ,EVENTOUT ,TSC_G4_IO4 ,USART1_RTS/USART1_DE , , ,COMP2_OUT ,,,,,,,,, +PortA,PA13,SWDIO , ,USB_NOE , , , ,LPUART1_RX , ,,,,,,,,, +PortA,PA14,SWCLK , , , ,USART2_TX , ,LPUART1_TX , ,,,,,,,,, +PortA,PA15,SPI1_NSS , ,TIM2_ETR ,EVENTOUT ,USART2_RX ,TIM2_CH1 ,USART4_RTS/USART4_DE , ,,,,,,,,, +PortB,PB0 ,EVENTOUT , ,TIM3_CH3 ,TSC_G3_IO2 , , , , ,,,,,,,,,ADC1_IN8 +PortB,PB1 , , ,TIM3_CH4 ,TSC_G3_IO3 ,LPUART1_RTS/LPUART1_DE , , , ,,,,,,,,,ADC1_IN9 +PortB,PB2 , , ,LPTIM1_OUT ,TSC_G3_IO4 , , , ,I2C3_SMBA ,,,,,,,,, +PortB,PB3 ,SPI1_SCK , ,TIM2_CH2 ,TSC_G5_IO1 ,EVENTOUT ,USART1_RTS/USART1_DE ,USART5_TX , ,,,,,,,,, +PortB,PB4 ,SPI1_MISO , ,TIM3_CH1 ,TSC_G5_IO2 ,TIM22_CH1 ,USART1_CTS ,USART5_RX ,I2C3_SDA ,,,,,,,,, +PortB,PB5 ,SPI1_MOSI , ,LPTIM1_IN1 ,I2C1_SMBA ,TIM3_CH2/TIM22_CH2 ,USART1_CK ,USART5_CK/USART5_RTS/USART5_DE , ,,,,,,,,, +PortB,PB6 ,USART1_TX ,I2C1_SCL ,LPTIM1_ETR ,TSC_G5_IO3 , , , , ,,,,,,,,, +PortB,PB7 ,USART1_RX ,I2C1_SDA ,LPTIM1_IN2 ,TSC_G5_IO4 , , ,USART4_CTS , ,,,,,,,,, +PortB,PB8 , , , ,TSC_SYNC ,I2C1_SCL , , , ,,,,,,,,, +PortB,PB9 , , ,EVENTOUT , ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , ,,,,,,,,, +PortB,PB10, , ,TIM2_CH3 ,TSC_SYNC ,LPUART1_TX ,SPI2_SCK ,I2C2_SCL ,LPUART1_RX ,,,,,,,,, +PortB,PB11,EVENTOUT , ,TIM2_CH4 ,TSC_G6_IO1 ,LPUART1_RX , ,I2C2_SDA ,LPUART1_TX ,,,,,,,,, +PortB,PB12,SPI2_NSS/I2S2_WS , ,LPUART1_RTS/LPUART1_DE ,TSC_G6_IO2 ,I2C2_SMBA , ,EVENTOUT , ,,,,,,,,, +PortB,PB13,SPI2_SCK/I2S2_CK , ,MCO ,TSC_G6_IO3 ,LPUART1_CTS ,I2C2_SCL ,TIM21_CH1 , ,,,,,,,,, +PortB,PB14,SPI2_MISO/I2S2_MCK , ,RTC_OUT ,TSC_G6_IO4 ,LPUART1_RTS/LPUART1_DE ,I2C2_SDA ,TIM21_CH2 , ,,,,,,,,, +PortB,PB15,SPI2_MOSI/I2S2_SD , ,RTC_REFIN , , , , , ,,,,,,,,, +PortC,PC0 ,LPTIM1_IN1 , ,EVENTOUT ,TSC_G7_IO1 , , ,LPUART1_RX ,I2C3_SCL ,,,,,,,,,ADC1_IN10 +PortC,PC1 ,LPTIM1_OUT , ,EVENTOUT ,TSC_G7_IO2 , , ,LPUART1_TX ,I2C3_SDA ,,,,,,,,,ADC1_IN11 +PortC,PC2 ,LPTIM1_IN2 , ,SPI2_MISO/I2S2_MCK ,TSC_G7_IO3 , , , , ,,,,,,,,,ADC1_IN12 +PortC,PC3 ,LPTIM1_ETR , ,SPI2_MOSI/I2S2_SD ,TSC_G7_IO4 , , , , ,,,,,,,,,ADC1_IN13 +PortC,PC4 ,EVENTOUT , ,LPUART1_TX , , , , , ,,,,,,,,,ADC1_IN14 +PortC,PC5 ,LPUART1_RX , ,TSC_G3_IO1 , , , , , ,,,,,,,,,ADC1_IN15 +PortC,PC6 ,TIM22_CH1 , ,TIM3_CH1 ,TSC_G8_IO1 , , , , ,,,,,,,,, +PortC,PC7 ,TIM22_CH2 , ,TIM3_CH2 ,TSC_G8_IO2 , , , , ,,,,,,,,, +PortC,PC8 ,TIM22_ETR , ,TIM3_CH3 ,TSC_G8_IO3 , , , , ,,,,,,,,, +PortC,PC9 ,TIM21_ETR , ,USB_NOE/TIM3_CH4 ,TSC_G8_IO4 , , , ,I2C3_SDA ,,,,,,,,, +PortC,PC10,LPUART1_TX , , , , , ,USART4_TX , ,,,,,,,,, +PortC,PC11,LPUART1_RX , , , , , ,USART4_RX , ,,,,,,,,, +PortC,PC12, , ,USART5_TX , , , ,USART4_CK , ,,,,,,,,, +PortC,PC13, , , , , , , , ,,,,,,,,, +PortC,PC14, , , , , , , , ,,,,,,,,, +PortC,PC15, , , , , , , , ,,,,,,,,, +PortD,PD0 ,TIM21_CH1 ,SPI2_NSS/I2S2_WS , , , , , , ,,,,,,,,, +PortD,PD1 , ,SPI2_SCK/I2S2_CK , , , , , , ,,,,,,,,, +PortD,PD2 ,LPUART1_RTS/LPUART1_DE , ,TIM3_ETR , , , ,USART5_RX , ,,,,,,,,, +PortD,PD3 ,USART2_CTS , ,SPI2_MISO/I2S2_MCK , , , , , ,,,,,,,,, +PortD,PD4 ,USART2_RTS/USART2_DE ,SPI2_MOSI/I2S2_SD , , , , , , ,,,,,,,,, +PortD,PD5 ,USART2_TX , , , , , , , ,,,,,,,,, +PortD,PD6 ,USART2_RX , , , , , , , ,,,,,,,,, +PortD,PD7 ,USART2_CK ,TIM21_CH2 , , , , , , ,,,,,,,,, +PortD,PD8 ,LPUART1_TX , , , , , , , ,,,,,,,,, +PortD,PD9 ,LPUART1_RX , , , , , , , ,,,,,,,,, +PortD,PD10, , , , , , , , ,,,,,,,,, +PortD,PD11,LPUART1_CTS , , , , , , , ,,,,,,,,, +PortD,PD12,LPUART1_RTS/LPUART1_DE , , , , , , , ,,,,,,,,, +PortD,PD13, , , , , , , , ,,,,,,,,, +PortD,PD14, , , , , , , , ,,,,,,,,, +PortD,PD15,USB_CRS_SYNC , , , , , , , ,,,,,,,,, +PortE,PE0 , , ,EVENTOUT , , , , , ,,,,,,,,, +PortE,PE1 , , ,EVENTOUT , , , , , ,,,,,,,,, +PortE,PE2 , , ,TIM3_ETR , , , , , ,,,,,,,,, +PortE,PE3 ,TIM22_CH1 , ,TIM3_CH1 , , , , , ,,,,,,,,, +PortE,PE4 ,TIM22_CH2 , ,TIM3_CH2 , , , , , ,,,,,,,,, +PortE,PE5 ,TIM21_CH1 , ,TIM3_CH3 , , , , , ,,,,,,,,, +PortE,PE6 ,TIM21_CH2 , ,TIM3_CH4 , , , , , ,,,,,,,,, +PortE,PE7 , , , , , , ,USART5_CK/USART5_RTS/USART5_DE , ,,,,,,,,, +PortE,PE8 , , , , , , ,USART4_TX , ,,,,,,,,, +PortE,PE9 ,TIM2_CH1 , ,TIM2_ETR , , , ,USART4_RX , ,,,,,,,,, +PortE,PE10,TIM2_CH2 , , , , , ,USART5_TX , ,,,,,,,,, +PortE,PE11,TIM2_CH3 , , , , , ,USART5_RX , ,,,,,,,,, +PortE,PE12,TIM2_CH4 , ,SPI1_NSS , , , , , ,,,,,,,,, +PortE,PE13, , ,SPI1_SCK , , , , , ,,,,,,,,, +PortE,PE14, , ,SPI1_MISO , , , , , ,,,,,,,,, +PortE,PE15, , ,SPI1_MOSI , , , , , ,,,,,,,,, +PortH,PH0 ,USB_CRS_SYNC , , , , , , , ,,,,,,,,, +PortH,PH1 , , , , , , , , ,,,,,,,,, diff --git a/ports/stm32/boards/stm32l152_af.csv b/ports/stm32/boards/stm32l152_af.csv index a6f8e80c3028a..c4694713c88c7 100644 --- a/ports/stm32/boards/stm32l152_af.csv +++ b/ports/stm32/boards/stm32l152_af.csv @@ -1,117 +1,117 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM2,TIM3/TIM4/TIM5,TIM9/TIM10/TIM11,I2C1/I2C2,SPI1/SPI2,SPI3,USART1/USART2/USART3,UART4/UART5,,,,,,,,ADC -PortA,PA0,,TIM2_CH1_ETR,TIM5_CH1,,,,,USART2_CTS,,,,,,,,EVENTOUT,ADC1_IN0 -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS,,,,,,,,EVENTOUT,ADC1_IN1 -PortA,PA2,,TIM2_CH3,TIM5_CH3,TIM9_CH1,,,,USART2_TX,,,,,,,,EVENTOUT,ADC1_IN2 -PortA,PA3,,TIM2_CH4,TIM5_CH4,TIM9_CH2,,,,USART2_RX,,,,,,,,EVENTOUT,ADC1_IN3 -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,USART2_CK,,,,,,,,EVENTOUT,ADC1_IN4 -PortA,PA5,,TIM2_CH1_ETR,,,,SPI1_SCK,,,,,,,,,,EVENTOUT,ADC1_IN5 -PortA,PA6,,,TIM3_CH1,TIM10_CH1,,SPI1_MISO,,,,,,,,,,EVENTOUT,ADC1_IN6 -PortA,PA7,,,TIM3_CH2,TIM11_CH1,,SPI1_MOSI,,,,,,,,,,EVENTOUT,ADC1_IN7 -PortA,PA8,MCO,,,,,,,USART1_CK,,,,,,,,EVENTOUT, -PortA,PA9,,,,,,,,USART1_TX,,,,,,,,EVENTOUT, -PortA,PA10,,,,,,,,USART1_RX,,,,,,,,EVENTOUT, -PortA,PA11,,,,,,SPI1_MISO,,USART1_CTS,,,,,,,,EVENTOUT, -PortA,PA12,,,,,,SPI1_MOSI,,USART1_RTS,,,,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1_ETR,,,,SPI1_NSS,SPI3_NSS/I2S3_WS,,,,,,,,,EVENTOUT, -PortB,PB0,,,TIM3_CH3,,,,,,,,,,,,,EVENTOUT,ADC1_IN8 -PortB,PB1,,,TIM3_CH4,,,,,,,,,,,,,EVENTOUT,ADC1_IN9 -PortB,PB2,BOOT1,,,,,,,,,,,,,,,EVENTOUT, -PortB,PB3,JTDO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK/I2S3_CK,,,,,,,,,EVENTOUT, -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,,,,,,,,,EVENTOUT, -PortB,PB5,,,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI/I2S3_SD,,,,,,,,,EVENTOUT, -PortB,PB6,,,TIM4_CH1,,I2C1_SCL,,,USART1_TX,,,,,,,,EVENTOUT, -PortB,PB7,,,TIM4_CH2,,I2C1_SDA,,,USART1_RX,,,,,,,,EVENTOUT, -PortB,PB8,,,TIM4_CH3,TIM10_CH1,I2C1_SCL,,,,,,,,,,,EVENTOUT, -PortB,PB9,,,TIM4_CH4,TIM11_CH1,I2C1_SDA,,,,,,,,,,,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,,,USART3_TX,,,,,,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,,USART3_RX,,,,,,,,EVENTOUT, -PortB,PB12,,,,TIM10_CH1,I2C2_SMBA,SPI2_NSS/I2S2_WS,,USART3_CK,,,,,,,,EVENTOUT,ADC1_IN18 -PortB,PB13,,,,TIM9_CH1,,SPI2_SCK/I2S2_CK,,USART3_CTS,,,,,,,,EVENTOUT,ADC1_IN19 -PortB,PB14,,,,TIM9_CH2,,SPI2_MISO,,USART3_RTS,,,,,,,,EVENTOUT,ADC1_IN20 -PortB,PB15,,,,TIM11_CH1,,SPI2_MOSI/I2S2_SD,,,,,,,,,,EVENTOUT,ADC1_IN21 -PortC,PC0,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN10 -PortC,PC1,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN11 -PortC,PC2,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN12 -PortC,PC3,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN13 -PortC,PC4,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN14 -PortC,PC5,,,,,,,,,,,,,,,,EVENTOUT,ADC1_IN15 -PortC,PC6,,,TIM3_CH1,,,I2S2_MCK,,,,,,,,,,EVENTOUT, -PortC,PC7,,,TIM3_CH2,,,,I2S3_MCK,,,,,,,,,EVENTOUT, -PortC,PC8,,,TIM3_CH3,,,,,,,,,,,,,EVENTOUT, -PortC,PC9,,,TIM3_CH4,,,,,,,,,,,,,EVENTOUT, -PortC,PC10,,,,,,,SPI3_SCK/I2S3_CK,USART3_TX,UART4_TX,,,,,,,EVENTOUT, -PortC,PC11,,,,,,,SPI3_MISO,USART3_RX,UART4_RX,,,,,,,EVENTOUT, -PortC,PC12,,,,,,,SPI3_MOSI/I2S3_SD,USART3_CK,UART5_TX,,,,,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,TIM9_CH1,,SPI2_NSS/I2S2_WS,,,,,,,,,,EVENTOUT, -PortD,PD1,,,,,,SPI2_SCK/I2S2_CK,,,,,,,,,,EVENTOUT, -PortD,PD2,,,TIM3_ETR,,,,,,UART5_RX,,,,,,,EVENTOUT, -PortD,PD3,,,,,,SPI2_MISO,,USART2_CTS,,,,,,,,EVENTOUT, -PortD,PD4,,,,,,SPI2_MOSI/I2S2_SD,,USART2_RTS,,,,,,,,EVENTOUT, -PortD,PD5,,,,,,,,USART2_TX,,,,,,,,EVENTOUT, -PortD,PD6,,,,,,,,USART2_RX,,,,,,,,EVENTOUT, -PortD,PD7,,,,TIM9_CH2,,,,USART2_CK,,,,,,,,EVENTOUT, -PortD,PD8,,,,,,,,USART3_TX,,,,,,,,EVENTOUT, -PortD,PD9,,,,,,,,USART3_RX,,,,,,,,EVENTOUT, -PortD,PD10,,,,,,,,USART3_CK,,,,,,,,EVENTOUT, -PortD,PD11,,,,,,,,USART3_CTS,,,,,,,,EVENTOUT, -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS,,,,,,,,EVENTOUT, -PortD,PD13,,,TIM4_CH2,,,,,,,,,,,,,EVENTOUT, -PortD,PD14,,,TIM4_CH3,,,,,,,,,,,,,EVENTOUT, -PortD,PD15,,,TIM4_CH4,,,,,,,,,,,,,EVENTOUT, -PortE,PE0,,,TIM4_ETR,TIM10_CH1,,,,,,,,,,,,EVENTOUT, -PortE,PE1,,,,TIM11_CH1,,,,,,,,,,,,EVENTOUT, -PortE,PE2,TRACECK,,TIM3_ETR,,,,,,,,,,,,,EVENTOUT, -PortE,PE3,TRACED0,,TIM3_CH1,,,,,,,,,,,,,EVENTOUT, -PortE,PE4,TRACED1,,TIM3_CH2,,,,,,,,,,,,,EVENTOUT, -PortE,PE5,TRACED2,,,TIM9_CH1,,,,,,,,,,,,EVENTOUT, -PortE,PE6,TRACED3,,,TIM9_CH2,,,,,,,,,,,,EVENTOUT, -PortE,PE7,,,,,,,,,,,,,,,,EVENTOUT, -PortE,PE8,,,,,,,,,,,,,,,,EVENTOUT, -PortE,PE9,,TIM2_CH1_ETR,,,,,,,,,,,,,,EVENTOUT, -PortE,PE10,,TIM2_CH2,,,,,,,,,,,,,,EVENTOUT, -PortE,PE11,,TIM2_CH3,,,,,,,,,,,,,,EVENTOUT, -PortE,PE12,,TIM2_CH4,,,,SPI1_NSS,,,,,,,,,,EVENTOUT, -PortE,PE13,,,,,,SPI1_SCK,,,,,,,,,,EVENTOUT, -PortE,PE14,,,,,,SPI1_MISO,,,,,,,,,,EVENTOUT, -PortE,PE15,,,,,,SPI1_MOSI,,,,,,,,,,EVENTOUT, -PortF,PF0,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF1,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF2,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF3,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF4,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF5,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF6,,,TIM5_ETR,,,,,,,,,,,,,EVENTOUT, -PortF,PF7,,,TIM5_CH2,,,,,,,,,,,,,EVENTOUT, -PortF,PF8,,,TIM5_CH3,,,,,,,,,,,,,EVENTOUT, -PortF,PF9,,,TIM5_CH4,,,,,,,,,,,,,EVENTOUT, -PortF,PF10,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF11,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF12,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF13,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF14,,,,,,,,,,,,,,,,EVENTOUT, -PortF,PF15,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG0,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG1,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG2,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG3,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG4,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG5,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG6,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG7,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG8,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG9,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG10,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG11,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG12,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG13,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG14,,,,,,,,,,,,,,,,EVENTOUT, -PortG,PG15,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,, -PortH,PH1,,,,,,,,,,,,,,,,, -PortH,PH2,,,,,,,,,,,,,,,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9,AF10,AF11,AF12,AF13,AF14,AF15 ,ADC + , ,SYS_AF ,TIM2 ,TIM3/TIM4/TIM5,TIM9/TIM10/TIM11,I2C1/I2C2,SPI1/SPI2 ,SPI3 ,USART1/USART2/USART3,UART4/UART5, , , , , , , ,ADC +PortA,PA0 , ,TIM2_CH1_ETR,TIM5_CH1 , , , , ,USART2_CTS , , , , , , , ,EVENTOUT,ADC1_IN0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , , , , ,USART2_RTS , , , , , , , ,EVENTOUT,ADC1_IN1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,TIM9_CH1 , , , ,USART2_TX , , , , , , , ,EVENTOUT,ADC1_IN2 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,TIM9_CH2 , , , ,USART2_RX , , , , , , , ,EVENTOUT,ADC1_IN3 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS ,USART2_CK , , , , , , , ,EVENTOUT,ADC1_IN4 +PortA,PA5 , ,TIM2_CH1_ETR, , , ,SPI1_SCK , , , , , , , , , ,EVENTOUT,ADC1_IN5 +PortA,PA6 , , ,TIM3_CH1 ,TIM10_CH1 , ,SPI1_MISO , , , , , , , , , ,EVENTOUT,ADC1_IN6 +PortA,PA7 , , ,TIM3_CH2 ,TIM11_CH1 , ,SPI1_MOSI , , , , , , , , , ,EVENTOUT,ADC1_IN7 +PortA,PA8 ,MCO , , , , , , ,USART1_CK , , , , , , , ,EVENTOUT, +PortA,PA9 , , , , , , , ,USART1_TX , , , , , , , ,EVENTOUT, +PortA,PA10, , , , , , , ,USART1_RX , , , , , , , ,EVENTOUT, +PortA,PA11, , , , , ,SPI1_MISO , ,USART1_CTS , , , , , , , ,EVENTOUT, +PortA,PA12, , , , , ,SPI1_MOSI , ,USART1_RTS , , , , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK, , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1_ETR, , , ,SPI1_NSS ,SPI3_NSS/I2S3_WS , , , , , , , , ,EVENTOUT, +PortB,PB0 , , ,TIM3_CH3 , , , , , , , , , , , , ,EVENTOUT,ADC1_IN8 +PortB,PB1 , , ,TIM3_CH4 , , , , , , , , , , , , ,EVENTOUT,ADC1_IN9 +PortB,PB2 ,BOOT1 , , , , , , , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO ,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK/I2S3_CK , , , , , , , , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1 , , ,SPI1_MISO ,SPI3_MISO , , , , , , , , ,EVENTOUT, +PortB,PB5 , , ,TIM3_CH2 , ,I2C1_SMBA,SPI1_MOSI ,SPI3_MOSI/I2S3_SD, , , , , , , , ,EVENTOUT, +PortB,PB6 , , ,TIM4_CH1 , ,I2C1_SCL , , ,USART1_TX , , , , , , , ,EVENTOUT, +PortB,PB7 , , ,TIM4_CH2 , ,I2C1_SDA , , ,USART1_RX , , , , , , , ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3 ,TIM10_CH1 ,I2C1_SCL , , , , , , , , , , ,EVENTOUT, +PortB,PB9 , , ,TIM4_CH4 ,TIM11_CH1 ,I2C1_SDA , , , , , , , , , , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL , , ,USART3_TX , , , , , , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , , ,USART3_RX , , , , , , , ,EVENTOUT, +PortB,PB12, , , ,TIM10_CH1 ,I2C2_SMBA,SPI2_NSS/I2S2_WS , ,USART3_CK , , , , , , , ,EVENTOUT,ADC1_IN18 +PortB,PB13, , , ,TIM9_CH1 , ,SPI2_SCK/I2S2_CK , ,USART3_CTS , , , , , , , ,EVENTOUT,ADC1_IN19 +PortB,PB14, , , ,TIM9_CH2 , ,SPI2_MISO , ,USART3_RTS , , , , , , , ,EVENTOUT,ADC1_IN20 +PortB,PB15, , , ,TIM11_CH1 , ,SPI2_MOSI/I2S2_SD, , , , , , , , , ,EVENTOUT,ADC1_IN21 +PortC,PC0 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN10 +PortC,PC1 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN11 +PortC,PC2 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN12 +PortC,PC3 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN13 +PortC,PC4 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN14 +PortC,PC5 , , , , , , , , , , , , , , , ,EVENTOUT,ADC1_IN15 +PortC,PC6 , , ,TIM3_CH1 , , ,I2S2_MCK , , , , , , , , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 , , , ,I2S3_MCK , , , , , , , , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 , , , , , , , , , , , , ,EVENTOUT, +PortC,PC9 , , ,TIM3_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK/I2S3_CK ,USART3_TX ,UART4_TX , , , , , , ,EVENTOUT, +PortC,PC11, , , , , , ,SPI3_MISO ,USART3_RX ,UART4_RX , , , , , , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI/I2S3_SD,USART3_CK ,UART5_TX , , , , , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , ,TIM9_CH1 , ,SPI2_NSS/I2S2_WS , , , , , , , , , ,EVENTOUT, +PortD,PD1 , , , , , ,SPI2_SCK/I2S2_CK , , , , , , , , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR , , , , , ,UART5_RX , , , , , , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_MISO , ,USART2_CTS , , , , , , , ,EVENTOUT, +PortD,PD4 , , , , , ,SPI2_MOSI/I2S2_SD, ,USART2_RTS , , , , , , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , , , , ,EVENTOUT, +PortD,PD6 , , , , , , , ,USART2_RX , , , , , , , ,EVENTOUT, +PortD,PD7 , , , ,TIM9_CH2 , , , ,USART2_CK , , , , , , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , , , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , , , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , , , , , , , ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , , , , , , , ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 , , , , ,USART3_RTS , , , , , , , ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , , , , , , , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR ,TIM10_CH1 , , , , , , , , , , , ,EVENTOUT, +PortE,PE1 , , , ,TIM11_CH1 , , , , , , , , , , , ,EVENTOUT, +PortE,PE2 ,TRACECK , ,TIM3_ETR , , , , , , , , , , , , ,EVENTOUT, +PortE,PE3 ,TRACED0 , ,TIM3_CH1 , , , , , , , , , , , , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,TIM3_CH2 , , , , , , , , , , , , ,EVENTOUT, +PortE,PE5 ,TRACED2 , , ,TIM9_CH1 , , , , , , , , , , , ,EVENTOUT, +PortE,PE6 ,TRACED3 , , ,TIM9_CH2 , , , , , , , , , , , ,EVENTOUT, +PortE,PE7 , , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE9 , ,TIM2_CH1_ETR, , , , , , , , , , , , , ,EVENTOUT, +PortE,PE10, ,TIM2_CH2 , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE11, ,TIM2_CH3 , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE12, ,TIM2_CH4 , , , ,SPI1_NSS , , , , , , , , , ,EVENTOUT, +PortE,PE13, , , , , ,SPI1_SCK , , , , , , , , , ,EVENTOUT, +PortE,PE14, , , , , ,SPI1_MISO , , , , , , , , , ,EVENTOUT, +PortE,PE15, , , , , ,SPI1_MOSI , , , , , , , , , ,EVENTOUT, +PortF,PF0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF4 , , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF5 , , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF6 , , ,TIM5_ETR , , , , , , , , , , , , ,EVENTOUT, +PortF,PF7 , , ,TIM5_CH2 , , , , , , , , , , , , ,EVENTOUT, +PortF,PF8 , , ,TIM5_CH3 , , , , , , , , , , , , ,EVENTOUT, +PortF,PF9 , , ,TIM5_CH4 , , , , , , , , , , , , ,EVENTOUT, +PortF,PF10, , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF11, , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF13, , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF14, , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF15, , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG2 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG3 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG4 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG5 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG6 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG7 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG8 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG9 , , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG10, , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG11, , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG12, , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG13, , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG14, , , , , , , , , , , , , , , ,EVENTOUT, +PortG,PG15, , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , , , +PortH,PH1 , , , , , , , , , , , , , , , , , +PortH,PH2 , , , , , , , , , , , , , , , , , diff --git a/ports/stm32/boards/stm32l432_af.csv b/ports/stm32/boards/stm32l432_af.csv index debfcd7b3548a..a7afcd9fdf690 100644 --- a/ports/stm32/boards/stm32l432_af.csv +++ b/ports/stm32/boards/stm32l432_af.csv @@ -1,28 +1,28 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,,, -,,SYS_AF,TIM1/TIM2/LPTIM1,TIM1/TIM2,USART2,I2C1/I2C2/I2C3,SPI1/SPI2,SPI3,USART1/USART2/USART3,LPUART1,CAN1/TSC,USB/QUADSPI,,COMP1/COMP2/SWPMI1,SAI1,TIM2/TIM15/TIM16/LPTIM2,EVENTOUT,ADC,COMP,DAC -PortA,PA0,,TIM2_CH1,,,,,,USART2_CTS,,,,,COMP1_OUT,SAI1_EXTCLK,TIM2_ETR,EVENTOUT,ADC1_IN5,COMP1_INM, -PortA,PA1,,TIM2_CH2,,,I2C1_SMBA,SPI1_SCK,,USART2_RTS/USART2_DE,,,,,,,TIM15_CH1N,EVENTOUT,ADC1_IN6,COMP1_INP, -PortA,PA2,,TIM2_CH3,,,,,,USART2_TX,LPUART1_TX,,QUADSPI_BK1_NCS,,COMP2_OUT,,TIM15_CH1,EVENTOUT,ADC1_IN7,COMP2_INM, -PortA,PA3,,TIM2_CH4,,,,,,USART2_RX,LPUART1_RX,,QUADSPI_CLK,,,SAI1_MCLK_A,TIM15_CH2,EVENTOUT,ADC1_IN8,COMP2_INP, -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS,USART2_CK,,,,,,SAI1_FS_B,LPTIM2_OUT,EVENTOUT,ADC1_IN9,COMP1_INM/COMP2_INM,DAC1_OUT1 -PortA,PA5,,TIM2_CH1,TIM2_ETR,,,SPI1_SCK,,,,,,,,,LPTIM2_ETR,EVENTOUT,ADC1_IN10,COMP1_INM/COMP2_INM,DAC1_OUT2 -PortA,PA6,,TIM1_BKIN,,,,SPI1_MISO,COMP1_OUT,USART3_CTS,,,QUADSPI_BK1_IO3,,TIM1_BKIN_COMP2,,TIM16_CH1,EVENTOUT,ADC1_IN11,, -PortA,PA7,,TIM1_CH1N,,,I2C3_SCL,SPI1_MOSI,,,,,QUADSPI_BK1_IO2,,COMP2_OUT,,,EVENTOUT,ADC1_IN12,, -PortA,PA8,MCO,TIM1_CH1,,,,,,USART1_CK,,,,,SWPMI1_IO,SAI1_SCLK_A,LPTIM2_OUT,EVENTOUT,,, -PortA,PA9,,TIM1_CH2,,,I2C1_SCL,,,USART1_TX,,,,,,SAI1_FS_A,TIM15_BKIN,EVENTOUT,,, -PortA,PA10,,TIM1_CH3,,,I2C1_SDA,,,USART1_RX,,,USB_CRS_SYNC,,,SAI1_SD_A,,EVENTOUT,,, -PortA,PA11,,TIM1_CH4,TIM1_BKIN2,,,SPI1_MISO,COMP1_OUT,USART1_CTS,,CAN1_RX,USB_DM,,TIM1_BKIN2_COMP1,,,EVENTOUT,,, -PortA,PA12,,TIM1_ETR,,,,SPI1_MOSI,,USART1_RTS/USART1_DE,,CAN1_TX,USB_DP,,,,,EVENTOUT,,, -PortA,PA13,JTMS/SWDIO,IR_OUT,,,,,,,,,USB_NOE,,SWPMI1_TX,,,EVENTOUT,,, -PortA,PA14,JTCK/SWCLK,LPTIM1_OUT,,,I2C1_SMBA,,,,,,,,SWPMI1_RX,SAI1_SD_B,,EVENTOUT,,, -PortA,PA15,JTDI,TIM2_CH1,TIM2_ETR,USART2_RX,,SPI1_NSS,SPI3_NSS,USART3_RTS/USART3_DE,,TSC_G3_IO1,,,SWPMI1_SUSPEND,SAI1_FS_B,,EVENTOUT,,, -PortB,PB0,,TIM1_CH2N,,,,SPI1_NSS,,USART3_CK,,,QUADSPI_BK1_IO1,,COMP1_OUT,SA1_EXTCLK,,EVENTOUT,ADC1_IN15,, -PortB,PB1,,TIM1_CH3N,,,,,,USART3_RTS/USART3_DE,LPUART1_RTS/LPUART1_DE,,QUADSPI_BK1_IO0,,,,LPTIM2_IN1,EVENTOUT,ADC1_IN16,COMP1_INM, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK,USART1_RTS/USART1_DE,,,,,,SAI1_SCK_B,,EVENTOUT,,COMP2_INM, -PortB,PB4,NJTRST,,,,I2C3_SDA,SPI1_MISO,SPI3_MISO,USART1_CTS,,TSC_G2_IO1,,,,SAI1_MCLK_B,,EVENTOUT,,COMP2_INP, -PortB,PB5,,LPTIM1_IN1,,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI,USART1_CK,,TSC_G2_IO2,,,COMP2_OUT,SAI1_SD_B,TIM16_BKIN,EVENTOUT,,, -PortB,PB6,,LPTIM1_ETR,,,I2C1_SCL,,,USART1_TX,,TSC_G2_IO3,,,,SAI1_FS_B,TIM16_CH1N,EVENTOUT,,COMP2_INP, -PortB,PB7,,LPTIM1_IN2,,,I2C1_SDA,,,USART1_RX,,TSC_G2_IO4,,,,,,EVENTOUT,,COMP2_INM, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT,,, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT,,, -PortH,PH3,,,,,,,,,,,,,,,,EVENTOUT,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/LPTIM1,TIM1/TIM2 ,USART2 ,I2C1/I2C2/I2C3,SPI1/SPI2,SPI3 ,USART1/USART2/USART3,LPUART1 ,CAN1/TSC ,USB/QUADSPI , ,COMP1/COMP2/SWPMI1,SAI1 ,TIM2/TIM15/TIM16/LPTIM2,EVENTOUT,ADC +PortA,PA0 , ,TIM2_CH1 , , , , , ,USART2_CTS , , , , ,COMP1_OUT ,SAI1_EXTCLK,TIM2_ETR ,EVENTOUT,ADC1_IN5 +PortA,PA1 , ,TIM2_CH2 , , ,I2C1_SMBA ,SPI1_SCK , ,USART2_RTS/USART2_DE, , , , , , ,TIM15_CH1N ,EVENTOUT,ADC1_IN6 +PortA,PA2 , ,TIM2_CH3 , , , , , ,USART2_TX ,LPUART1_TX , ,QUADSPI_BK1_NCS, ,COMP2_OUT , ,TIM15_CH1 ,EVENTOUT,ADC1_IN7 +PortA,PA3 , ,TIM2_CH4 , , , , , ,USART2_RX ,LPUART1_RX , ,QUADSPI_CLK , , ,SAI1_MCLK_A,TIM15_CH2 ,EVENTOUT,ADC1_IN8 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS ,USART2_CK , , , , , ,SAI1_FS_B ,LPTIM2_OUT ,EVENTOUT,ADC1_IN9 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR , , ,SPI1_SCK , , , , , , , , ,LPTIM2_ETR ,EVENTOUT,ADC1_IN10 +PortA,PA6 , ,TIM1_BKIN , , , ,SPI1_MISO,COMP1_OUT,USART3_CTS , , ,QUADSPI_BK1_IO3, ,TIM1_BKIN_COMP2 , ,TIM16_CH1 ,EVENTOUT,ADC1_IN11 +PortA,PA7 , ,TIM1_CH1N , , ,I2C3_SCL ,SPI1_MOSI, , , , ,QUADSPI_BK1_IO2, ,COMP2_OUT , , ,EVENTOUT,ADC1_IN12 +PortA,PA8 ,MCO ,TIM1_CH1 , , , , , ,USART1_CK , , , , ,SWPMI1_IO ,SAI1_SCLK_A,LPTIM2_OUT ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C1_SCL , , ,USART1_TX , , , , , ,SAI1_FS_A ,TIM15_BKIN ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , ,I2C1_SDA , , ,USART1_RX , , ,USB_CRS_SYNC , , ,SAI1_SD_A , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,TIM1_BKIN2, , ,SPI1_MISO,COMP1_OUT,USART1_CTS , ,CAN1_RX ,USB_DM , ,TIM1_BKIN2_COMP1 , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , ,SPI1_MOSI, ,USART1_RTS/USART1_DE, ,CAN1_TX ,USB_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO ,IR_OUT , , , , , , , , ,USB_NOE , ,SWPMI1_TX , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK ,LPTIM1_OUT , , ,I2C1_SMBA , , , , , , , ,SWPMI1_RX ,SAI1_SD_B , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM2_ETR ,USART2_RX, ,SPI1_NSS ,SPI3_NSS ,USART3_RTS/USART3_DE, ,TSC_G3_IO1, , ,SWPMI1_SUSPEND ,SAI1_FS_B , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N , , , ,SPI1_NSS , ,USART3_CK , , ,QUADSPI_BK1_IO1, ,COMP1_OUT ,SA1_EXTCLK , ,EVENTOUT,ADC1_IN15 +PortB,PB1 , ,TIM1_CH3N , , , , , ,USART3_RTS/USART3_DE,LPUART1_RTS/LPUART1_DE, ,QUADSPI_BK1_IO0, , , ,LPTIM2_IN1 ,EVENTOUT,ADC1_IN16 +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK ,USART1_RTS/USART1_DE, , , , , ,SAI1_SCK_B , ,EVENTOUT, +PortB,PB4 ,NJTRST , , , ,I2C3_SDA ,SPI1_MISO,SPI3_MISO,USART1_CTS , ,TSC_G2_IO1, , , ,SAI1_MCLK_B, ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 , , ,I2C1_SMBA ,SPI1_MOSI,SPI3_MOSI,USART1_CK , ,TSC_G2_IO2, , ,COMP2_OUT ,SAI1_SD_B ,TIM16_BKIN ,EVENTOUT, +PortB,PB6 , ,LPTIM1_ETR , , ,I2C1_SCL , , ,USART1_TX , ,TSC_G2_IO3, , , ,SAI1_FS_B ,TIM16_CH1N ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 , , ,I2C1_SDA , , ,USART1_RX , ,TSC_G2_IO4, , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32l452_af.csv b/ports/stm32/boards/stm32l452_af.csv index 1de5c211d2128..641cbd6e0e461 100644 --- a/ports/stm32/boards/stm32l452_af.csv +++ b/ports/stm32/boards/stm32l452_af.csv @@ -1,85 +1,85 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,,, -,,SYS_AF,TIM1/TIM2/LPTIM1,I2C4/TIM1/TIM2/TIM3,I2C4/USART2/CAN1/TIM1,I2C1/I2C2/I2C3/I2C4,SPI1/SPI2/I2C4,SPI3/DFSDM/COMP1,USART1/USART2/USART3,UART4/LPUART1/CAN1,CAN1/TSC,CAN1/USB/QUADSPI,,SDMMC1/COMP1/COMP2,SAI1,TIM2/TIM15/TIM16/LPTIM2,EVENTOUT,ADC,COMP,DAC -PortA,PA0,,TIM2_CH1,,,,,,USART2_CTS,UART4_TX,,,,COMP1_OUT,SAI1_EXTCLK,TIM2_ETR,EVENTOUT,ADC12_IN5,COMP1_INM, -PortA,PA1,,TIM2_CH2,,,I2C1_SMBA,SPI1_SCK,,USART2_RTS/USART2_DE,UART4_RX,,,,,,TIM15_CH1N,EVENTOUT,ADC12_IN6,COMP1_INP, -PortA,PA2,,TIM2_CH3,,,,,,USART2_TX,LPUART1_TX,,QUADSPI_BK1_NCS,,COMP2_OUT,,TIM15_CH1,EVENTOUT,ADC12_IN7,COMP2_INM, -PortA,PA3,,TIM2_CH4,,,,,,USART2_RX,LPUART1_RX,,QUADSPI_CLK,,,SAI1_MCLK_A,TIM15_CH2,EVENTOUT,ADC12_IN8,COMP2_INP, -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS,USART2_CK,,,,,,SAI1_FS_B,LPTIM2_OUT,EVENTOUT,ADC12_IN9,COMP1_INM/COMP2_INM,DAC1_OUT1 -PortA,PA5,,TIM2_CH1,TIM2_ETR,,,SPI1_SCK,DFSDM1_CKOUT,,,,,,,,LPTIM2_ETR,EVENTOUT,ADC12_IN10,COMP1_INM/COMP2_INM, -PortA,PA6,,TIM1_BKIN,TIM3_CH1,,,SPI1_MISO,COMP1_OUT,USART3_CTS,LPUART1_CTS,,QUADSPI_BK1_IO3,,TIM1_BKIN_COMP2,,TIM16_CH1,EVENTOUT,ADC12_IN11,, -PortA,PA7,,TIM1_CH1N,TIM3_CH2,,I2C3_SCL,SPI1_MOSI,DFSDM1_DATIN0,,,,QUADSPI_BK1_IO2,,COMP2_OUT,,,EVENTOUT,ADC12_IN12,, -PortA,PA8,MCO,TIM1_CH1,,,,,DFSDM1_CKIN1,USART1_CK,,,,,,SAI1_SCK_A,LPTIM2_OUT,EVENTOUT,,, -PortA,PA9,,TIM1_CH2,,,I2C1_SCL,,DFSDM1_DATIN1,USART1_TX,,,,,,SAI1_FS_A,TIM15_BKIN,EVENTOUT,,, -PortA,PA10,,TIM1_CH3,,,I2C1_SDA,,,USART1_RX,,,USBCRS_SYNC,,,SAI1_SD_A,,EVENTOUT,,, -PortA,PA11,,TIM1_CH4,TIM1_BKIN2,,,SPI1_MISO,COMP1_OUT,USART1_CTS,,CAN1_RX,USBDM,,TIM1_BKIN2_COMP1,,,EVENTOUT,,, -PortA,PA12,,TIM1_ETR,,,,SPI1_MOSI,,USART1_RTS/USART1_DE,,CAN1_TX,USBDP,,,,,EVENTOUT,,, -PortA,PA13,JTMS/SWDIO,IR_OUT,,,,,,,,,USBNOE,,,SAI1_SD_B,,EVENTOUT,,, -PortA,PA14,JTCK/SWCLK,LPTIM1_OUT,,,I2C1_SMBA,I2C4_SMBA,,,,,,,,SAI1_FS_B,,EVENTOUT,,, -PortA,PA15,JTDI,TIM2_CH1,TIM2_ETR,USART2_RX,,SPI1_NSS,SPI3_NSS,USART3_RTS/USART3_DE,UART4_RTS/UART4_DE,TSC_G3_IO1,,,,,,EVENTOUT,,, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,,,SPI1_NSS,DFSDM1_CKIN0,USART3_CK,,,QUADSPI_BK1_IO1,,COMP1_OUT,SAI1_EXTCLK,,EVENTOUT,ADC12_IN15,, -PortB,PB1,,TIM1_CH3N,TIM3_CH4,,,,DFSDM_DATIN0,USART3_RTS/USART3_DE,LPUART1_RTS/LPUART1_DE,,QUADSPI_BK1_IO0,,,,LPTIM2_IN1,EVENTOUT,ADC12_IN16,COMP1_INN, -PortB,PB2,RTC_OUT,LPTIM1_OUT,,,I2C3_SMBA,,DFSDM_CKIN0,,,,,,,,,EVENTOUT,,COMP1_INP, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK,USART1_RTS/USART1_DE,,,,,,SAI1_SCK_B,,EVENTOUT,,COMP2_INM, -PortB,PB4,NJTRST,,TIM3_CH1,,I2C3_SDA,SPI1_MISO,SPI3_MISO,USART1_CTS,,TSC_G2_IO1,,,,SAI1_MCLK_B,,EVENTOUT,,COMP2_INP, -PortB,PB5,,LPTIM1_IN1,TIM3_CH2,CAN1_RX,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI,USART1_CK,,TSC_G2_IO2,,,COMP2_OUT,SAI1_SD_B,TIM16_BKIN,EVENTOUT,,, -PortB,PB6,,LPTIM1_ETR,,,I2C1_SCL,I2C4_SCL,,USART1_TX,CAN1_TX,TSC_G2_IO3,,,,SAI1_FS_B,TIM16_CH1N,EVENTOUT,,COMP2_INP, -PortB,PB7,,LPTIM1_IN2,,,I2C1_SDA,I2C4_SDA,,USART1_RX,UART4_CTS,TSC_G2_IO4,,,,,,EVENTOUT,,COMP2_INM, -PortB,PB8,,,,,I2C1_SCL,,,,,CAN1_RX,,,SDMMC1_D4,SAI1_MCLK_A,TIM16_CH1,EVENTOUT,,, -PortB,PB9,,IR_OUT,,,I2C1_SDA,SPI2_NSS,,,,CAN1_TX,,,SDMMC1_D5,SAI1_FS_A,,EVENTOUT,,, -PortB,PB10,,TIM2_CH3,,I2C4_SCL,I2C2_SCL,SPI2_SCK,,USART3_TX,LPUART1_RX,TSC_SYNC,QUADSPI_CLK,,COMP1_OUT,SAI1_SCK_A,,EVENTOUT,,, -PortB,PB11,,TIM2_CH4,,I2C4_SDA,I2C2_SDA,,,USART3_RX,LPUART1_TX,,QUADSPI_NCS,,COMP2_OUT,,,EVENTOUT,,, -PortB,PB12,,TIM1_BKIN,,TIM1_BKIN_COMP2,I2C2_SMBA,SPI2_NSS,DFSDM_DATIN1,USART3_CK,LPUART1_RTS/LPUART1_DE,TSC_G1_IO1,CAN1_RX,,,SAI1_FS_A,TIM15_BKIN,EVENTOUT,,, -PortB,PB13,,TIM1_CH1N,,,I2C2_SCL,SPI2_SCK,DFSDM_CKIN1,USART3_CTS,LPUART1_CTS,TSC_G1_IO2,CAN1_TX,,,SAI1_SCK_A,TIM15_CH1N,EVENTOUT,,, -PortB,PB14,,TIM1_CH2N,,,I2C2_SDA,SPI2_MISO,DFSDM_DATIN2,USART3_RTS/USART3_DE,,TSC_G1_IO3,,,,SAI1_MCLK_A,TIM15_CH1,EVENTOUT,,, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,,,SPI2_MOSI,DFSDM_CKIN2,,,TSC_G1_IO4,,,,SAI1_SD_A,TIM15_CH2,EVENTOUT,,, -PortC,PC0,,LPTIM1_IN1,I2C4_SCL,,I2C3_SCL,,,,LPUART1_RX,,,,,,LPTIM2_IN1,EVENTOUT,ADC123_IN1,, -PortC,PC1,TRACED0,LPTIM1_OUT,I2C4_SDA,,I2C3_SDA,,,,LPUART1_TX,,,,,,,EVENTOUT,ADC123_IN2,, -PortC,PC2,,LPTIM1_IN2,,,,SPI2_MISO,DFSDM_CKOUT,,,,,,,,,EVENTOUT,ADC123_IN3,, -PortC,PC3,,LPTIM1_ETR,,,,SPI2_MOSI,,,,,,,,SAI1_SD_A,LPTIM2_ETR,EVENTOUT,ADC123_IN4,, -PortC,PC4,,,,,,,,USART3_TX,,,,,,,,EVENTOUT,ADC12_IN13,COMP1_INM, -PortC,PC5,,,,,,,,USART3_RX,,,,,,,,EVENTOUT,ADC12_IN14,COMP1_INP, -PortC,PC6,,,TIM3_CH1,,,,DFSDM_CKIN3,,,TSC_G4_IO1,,,SDMMC1_D6,,,EVENTOUT,,, -PortC,PC7,,,TIM3_CH2,,,,DFSDM_DATIN3,,,TSC_G4_IO2,,,SDMMC1_D7,,,EVENTOUT,,, -PortC,PC8,,,TIM3_CH3,,,,,,,TSC_G4_IO3,,,SDMMC1_D0,,,EVENTOUT,,, -PortC,PC9,,,TIM3_CH4,,,,,,,TSC_G4_IO4,USBNOE,,SDMMC1_D1,,,EVENTOUT,,, -PortC,PC10,TRACED1,,,,,,SPI3_SCK,USART3_TX,UART4_TX,TSC_G3_IO2,,,SDMMC1_D2,,,EVENTOUT,,, -PortC,PC11,,,,,,,SPI3_MISO,USART3_RX,UART4_RX,TSC_G3_IO3,,,SDMMC1_D3,,,EVENTOUT,,, -PortC,PC12,TRACED3,,,,,,SPI3_MOSI,USART3_CK,,TSC_G3_IO4,,,SDMMC1_CK,,,EVENTOUT,,, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT,,, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT,,, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT,,, -PortD,PD0,,,,,,SPI2_NSS,,,,CAN1_RX,,,,,,EVENTOUT,,, -PortD,PD1,,,,,,SPI2_SCK,,,,CAN1_TX,,,,,,EVENTOUT,,, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,USART3_RTS/USART3_DE,,TSC_SYNC,,,SDMMC1_CMD,,,EVENTOUT,,, -PortD,PD3,,,,,,SPI2_MISO,DFSDM_DATIN0,USART2_CTS,,,QUADSPI_BK2_NCS,,,,,EVENTOUT,,, -PortD,PD4,,,,,,SPI2_MOSI,DFSDM_CKIN0,USART2_RTS/USART2_DE,,,QUADSPI_BK2_IO0,,,,,EVENTOUT,,, -PortD,PD5,,,,,,,,USART2_TX,,,QUADSPI_BK2_IO1,,,,,EVENTOUT,,, -PortD,PD6,,,,,,,DFSDM_DATIN1,USART2_RX,,,QUADSPI_BK2_IO2,,,SAI1_SD_A,,EVENTOUT,,, -PortD,PD7,,,,,,,DFSDM_CKIN1,USART2_CK,,,QUADSPI_BK2_IO3,,,,,EVENTOUT,,, -PortD,PD8,,,,,,,,USART3_TX,,,,,,,,EVENTOUT,,, -PortD,PD9,,,,,,,,USART3_RX,,,,,,,,EVENTOUT,,, -PortD,PD10,,,,,,,,USART3_CK,,TSC_G6_IO1,,,,,,EVENTOUT,,, -PortD,PD11,,,,,I2C4_SMBA,,,USART3_CTS,,TSC_G6_IO2,,,,,LPTIM2_ETR,EVENTOUT,,, -PortD,PD12,,,,,I2C4_SCL,,,USART3_RTS/USART3_DE,,TSC_G6_IO3,,,,,LPTIM2_IN1,EVENTOUT,,, -PortD,PD13,,,,,I2C4_SDA,,,,,TSC_G6_IO4,,,,,LPTIM2_OUT,EVENTOUT,,, -PortD,PD14,,,,,,,,,,,,,,,,EVENTOUT,,, -PortD,PD15,,,,,,,,,,,,,,,,EVENTOUT,,, -PortE,PE0,,,,,,,,,,,,,,,TIM16_CH1,EVENTOUT,,, -PortE,PE1,,,,,,,,,,,,,,,,EVENTOUT,,, -PortE,PE2,TRACECLK,,TIM3_ETR,,,,,,,TSC_G7_IO1,,,,SAI1_MCLK_A,,EVENTOUT,,, -PortE,PE3,TRACED0,,TIM3_CH1,,,,,,,TSC_G7_IO2,,,,SAI1_SD_B,,EVENTOUT,,, -PortE,PE4,TRACED1,,TIM3_CH2,,,,DFSDM_DATIN3,,,TSC_G7_IO3,,,,SAI1_FS_A,,EVENTOUT,,, -PortE,PE5,TRACED2,,TIM3_CH3,,,,DFSDM_CKIN3,,,TSC_G7_IO4,,,,SAI1_SCK_A,,EVENTOUT,,, -PortE,PE6,TRACED3,,TIM3_CH4,,,,,,,,,,,SAI1_SD_A,,EVENTOUT,,, -PortE,PE7,,TIM1_ETR,,,,,DFSDM_DATIN2,,,,,,,SAI1_SD_B,,EVENTOUT,,, -PortE,PE8,,TIM1_CH1N,,,,,DFSDM_CKIN2,,,,,,,SAI1_SCK_B,,EVENTOUT,,, -PortE,PE9,,TIM1_CH1,,,,,DFSDM_CKOUT,,,,,,,SAI1_FS_B,,EVENTOUT,,, -PortE,PE10,,TIM1_CH2N,,,,,,,,TSC_G5_IO1,QUADSPI_CLK,,,SAI1_MCLK_B,,EVENTOUT,,, -PortE,PE11,,TIM1_CH2,,,,,,,,TSC_G5_IO2,QUADSPI_BK1_NCS,,,,,EVENTOUT,,, -PortE,PE12,,TIM1_CH3N,,,,SPI1_NSS,,,,TSC_G5_IO3,QUADSPI_BK1_IO0,,,,,EVENTOUT,,, -PortE,PE13,,TIM1_CH3,,,,SPI1_SCK,,,,TSC_G5_IO4,QUADSPI_BK1_IO1,,,,,EVENTOUT,,, -PortE,PE14,,TIM1_CH4,TIM1_BKIN2,TIM1_BKIN2_COMP2,,SPI1_MISO,,,,,QUADSPI_BK1_IO2,,,,,EVENTOUT,,, -PortE,PE15,,TIM1_BKIN,,TIM1_BKIN_COMP1,,SPI1_MOSI,,,,,QUADSPI_BK1_IO3,,,,,EVENTOUT,,, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT,,, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT,,, -PortH,PH3,,,,,,,,,,,,,,,,,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/LPTIM1,I2C4/TIM1/TIM2/TIM3,I2C4/USART2/CAN1/TIM1,I2C1/I2C2/I2C3/I2C4,SPI1/SPI2/I2C4,SPI3/DFSDM/COMP1,USART1/USART2/USART3,UART4/LPUART1/CAN1 ,CAN1/TSC ,CAN1/USB/QUADSPI, ,SDMMC1/COMP1/COMP2,SAI1 ,TIM2/TIM15/TIM16/LPTIM2,EVENTOUT,ADC +PortA,PA0 , ,TIM2_CH1 , , , , , ,USART2_CTS ,UART4_TX , , , ,COMP1_OUT ,SAI1_EXTCLK,TIM2_ETR ,EVENTOUT,ADC12_IN5 +PortA,PA1 , ,TIM2_CH2 , , ,I2C1_SMBA ,SPI1_SCK , ,USART2_RTS/USART2_DE,UART4_RX , , , , , ,TIM15_CH1N ,EVENTOUT,ADC12_IN6 +PortA,PA2 , ,TIM2_CH3 , , , , , ,USART2_TX ,LPUART1_TX , ,QUADSPI_BK1_NCS , ,COMP2_OUT , ,TIM15_CH1 ,EVENTOUT,ADC12_IN7 +PortA,PA3 , ,TIM2_CH4 , , , , , ,USART2_RX ,LPUART1_RX , ,QUADSPI_CLK , , ,SAI1_MCLK_A,TIM15_CH2 ,EVENTOUT,ADC12_IN8 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS ,USART2_CK , , , , , ,SAI1_FS_B ,LPTIM2_OUT ,EVENTOUT,ADC12_IN9 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR , , ,SPI1_SCK ,DFSDM1_CKOUT , , , , , , , ,LPTIM2_ETR ,EVENTOUT,ADC12_IN10 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 , , ,SPI1_MISO ,COMP1_OUT ,USART3_CTS ,LPUART1_CTS , ,QUADSPI_BK1_IO3 , ,TIM1_BKIN_COMP2 , ,TIM16_CH1 ,EVENTOUT,ADC12_IN11 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 , ,I2C3_SCL ,SPI1_MOSI ,DFSDM1_DATIN0 , , , ,QUADSPI_BK1_IO2 , ,COMP2_OUT , , ,EVENTOUT,ADC12_IN12 +PortA,PA8 ,MCO ,TIM1_CH1 , , , , ,DFSDM1_CKIN1 ,USART1_CK , , , , , ,SAI1_SCK_A ,LPTIM2_OUT ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , ,I2C1_SCL , ,DFSDM1_DATIN1 ,USART1_TX , , , , , ,SAI1_FS_A ,TIM15_BKIN ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , ,I2C1_SDA , , ,USART1_RX , , ,USBCRS_SYNC , , ,SAI1_SD_A , ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,TIM1_BKIN2 , , ,SPI1_MISO ,COMP1_OUT ,USART1_CTS , ,CAN1_RX ,USBDM , ,TIM1_BKIN2_COMP1 , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , ,SPI1_MOSI , ,USART1_RTS/USART1_DE, ,CAN1_TX ,USBDP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO ,IR_OUT , , , , , , , , ,USBNOE , , ,SAI1_SD_B , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK ,LPTIM1_OUT , , ,I2C1_SMBA ,I2C4_SMBA , , , , , , , ,SAI1_FS_B , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM2_ETR ,USART2_RX , ,SPI1_NSS ,SPI3_NSS ,USART3_RTS/USART3_DE,UART4_RTS/UART4_DE ,TSC_G3_IO1, , , , , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 , , ,SPI1_NSS ,DFSDM1_CKIN0 ,USART3_CK , , ,QUADSPI_BK1_IO1 , ,COMP1_OUT ,SAI1_EXTCLK, ,EVENTOUT,ADC12_IN15 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 , , , ,DFSDM_DATIN0 ,USART3_RTS/USART3_DE,LPUART1_RTS/LPUART1_DE, ,QUADSPI_BK1_IO0 , , , ,LPTIM2_IN1 ,EVENTOUT,ADC12_IN16 +PortB,PB2 ,RTC_OUT ,LPTIM1_OUT , , ,I2C3_SMBA , ,DFSDM_CKIN0 , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK ,USART1_RTS/USART1_DE, , , , , ,SAI1_SCK_B , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1 , ,I2C3_SDA ,SPI1_MISO ,SPI3_MISO ,USART1_CTS , ,TSC_G2_IO1, , , ,SAI1_MCLK_B, ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 ,TIM3_CH2 ,CAN1_RX ,I2C1_SMBA ,SPI1_MOSI ,SPI3_MOSI ,USART1_CK , ,TSC_G2_IO2, , ,COMP2_OUT ,SAI1_SD_B ,TIM16_BKIN ,EVENTOUT, +PortB,PB6 , ,LPTIM1_ETR , , ,I2C1_SCL ,I2C4_SCL , ,USART1_TX ,CAN1_TX ,TSC_G2_IO3, , , ,SAI1_FS_B ,TIM16_CH1N ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 , , ,I2C1_SDA ,I2C4_SDA , ,USART1_RX ,UART4_CTS ,TSC_G2_IO4, , , , , ,EVENTOUT, +PortB,PB8 , , , , ,I2C1_SCL , , , , ,CAN1_RX , , ,SDMMC1_D4 ,SAI1_MCLK_A,TIM16_CH1 ,EVENTOUT, +PortB,PB9 , ,IR_OUT , , ,I2C1_SDA ,SPI2_NSS , , , ,CAN1_TX , , ,SDMMC1_D5 ,SAI1_FS_A , ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , ,I2C4_SCL ,I2C2_SCL ,SPI2_SCK , ,USART3_TX ,LPUART1_RX ,TSC_SYNC ,QUADSPI_CLK , ,COMP1_OUT ,SAI1_SCK_A , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , ,I2C4_SDA ,I2C2_SDA , , ,USART3_RX ,LPUART1_TX , ,QUADSPI_NCS , ,COMP2_OUT , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,TIM1_BKIN_COMP2 ,I2C2_SMBA ,SPI2_NSS ,DFSDM_DATIN1 ,USART3_CK ,LPUART1_RTS/LPUART1_DE,TSC_G1_IO1,CAN1_RX , , ,SAI1_FS_A ,TIM15_BKIN ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2C2_SCL ,SPI2_SCK ,DFSDM_CKIN1 ,USART3_CTS ,LPUART1_CTS ,TSC_G1_IO2,CAN1_TX , , ,SAI1_SCK_A ,TIM15_CH1N ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , , ,I2C2_SDA ,SPI2_MISO ,DFSDM_DATIN2 ,USART3_RTS/USART3_DE, ,TSC_G1_IO3, , , ,SAI1_MCLK_A,TIM15_CH1 ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , , , ,SPI2_MOSI ,DFSDM_CKIN2 , , ,TSC_G1_IO4, , , ,SAI1_SD_A ,TIM15_CH2 ,EVENTOUT, +PortC,PC0 , ,LPTIM1_IN1 ,I2C4_SCL , ,I2C3_SCL , , , ,LPUART1_RX , , , , , ,LPTIM2_IN1 ,EVENTOUT,ADC123_IN1 +PortC,PC1 ,TRACED0 ,LPTIM1_OUT ,I2C4_SDA , ,I2C3_SDA , , , ,LPUART1_TX , , , , , , ,EVENTOUT,ADC123_IN2 +PortC,PC2 , ,LPTIM1_IN2 , , , ,SPI2_MISO ,DFSDM_CKOUT , , , , , , , , ,EVENTOUT,ADC123_IN3 +PortC,PC3 , ,LPTIM1_ETR , , , ,SPI2_MOSI , , , , , , , ,SAI1_SD_A ,LPTIM2_ETR ,EVENTOUT,ADC123_IN4 +PortC,PC4 , , , , , , , ,USART3_TX , , , , , , , ,EVENTOUT,ADC12_IN13 +PortC,PC5 , , , , , , , ,USART3_RX , , , , , , , ,EVENTOUT,ADC12_IN14 +PortC,PC6 , , ,TIM3_CH1 , , , ,DFSDM_CKIN3 , , ,TSC_G4_IO1, , ,SDMMC1_D6 , , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 , , , ,DFSDM_DATIN3 , , ,TSC_G4_IO2, , ,SDMMC1_D7 , , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 , , , , , , ,TSC_G4_IO3, , ,SDMMC1_D0 , , ,EVENTOUT, +PortC,PC9 , , ,TIM3_CH4 , , , , , , ,TSC_G4_IO4,USBNOE , ,SDMMC1_D1 , , ,EVENTOUT, +PortC,PC10,TRACED1 , , , , , ,SPI3_SCK ,USART3_TX ,UART4_TX ,TSC_G3_IO2, , ,SDMMC1_D2 , , ,EVENTOUT, +PortC,PC11, , , , , , ,SPI3_MISO ,USART3_RX ,UART4_RX ,TSC_G3_IO3, , ,SDMMC1_D3 , , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , ,SPI3_MOSI ,USART3_CK , ,TSC_G3_IO4, , ,SDMMC1_CK , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , ,SPI2_NSS , , , ,CAN1_RX , , , , , ,EVENTOUT, +PortD,PD1 , , , , , ,SPI2_SCK , , , ,CAN1_TX , , , , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR , , , , ,USART3_RTS/USART3_DE, ,TSC_SYNC , , ,SDMMC1_CMD , , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_MISO ,DFSDM_DATIN0 ,USART2_CTS , , ,QUADSPI_BK2_NCS , , , , ,EVENTOUT, +PortD,PD4 , , , , , ,SPI2_MOSI ,DFSDM_CKIN0 ,USART2_RTS/USART2_DE, , ,QUADSPI_BK2_IO0 , , , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , ,QUADSPI_BK2_IO1 , , , , ,EVENTOUT, +PortD,PD6 , , , , , , ,DFSDM_DATIN1 ,USART2_RX , , ,QUADSPI_BK2_IO2 , , ,SAI1_SD_A , ,EVENTOUT, +PortD,PD7 , , , , , , ,DFSDM_CKIN1 ,USART2_CK , , ,QUADSPI_BK2_IO3 , , , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , , , , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , , , , , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , ,TSC_G6_IO1, , , , , ,EVENTOUT, +PortD,PD11, , , , ,I2C4_SMBA , , ,USART3_CTS , ,TSC_G6_IO2, , , , ,LPTIM2_ETR ,EVENTOUT, +PortD,PD12, , , , ,I2C4_SCL , , ,USART3_RTS/USART3_DE, ,TSC_G6_IO3, , , , ,LPTIM2_IN1 ,EVENTOUT, +PortD,PD13, , , , ,I2C4_SDA , , , , ,TSC_G6_IO4, , , , ,LPTIM2_OUT ,EVENTOUT, +PortD,PD14, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD15, , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE0 , , , , , , , , , , , , , , ,TIM16_CH1 ,EVENTOUT, +PortE,PE1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE2 ,TRACECLK , ,TIM3_ETR , , , , , , ,TSC_G7_IO1, , , ,SAI1_MCLK_A, ,EVENTOUT, +PortE,PE3 ,TRACED0 , ,TIM3_CH1 , , , , , , ,TSC_G7_IO2, , , ,SAI1_SD_B , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,TIM3_CH2 , , , ,DFSDM_DATIN3 , , ,TSC_G7_IO3, , , ,SAI1_FS_A , ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,TIM3_CH3 , , , ,DFSDM_CKIN3 , , ,TSC_G7_IO4, , , ,SAI1_SCK_A , ,EVENTOUT, +PortE,PE6 ,TRACED3 , ,TIM3_CH4 , , , , , , , , , , ,SAI1_SD_A , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,DFSDM_DATIN2 , , , , , , ,SAI1_SD_B , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,DFSDM_CKIN2 , , , , , , ,SAI1_SCK_B , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,DFSDM_CKOUT , , , , , , ,SAI1_FS_B , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , , , , ,TSC_G5_IO1,QUADSPI_CLK , , ,SAI1_MCLK_B, ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , , , , , ,TSC_G5_IO2,QUADSPI_BK1_NCS , , , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI1_NSS , , , ,TSC_G5_IO3,QUADSPI_BK1_IO0 , , , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI1_SCK , , , ,TSC_G5_IO4,QUADSPI_BK1_IO1 , , , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 ,TIM1_BKIN2 ,TIM1_BKIN2_COMP2 , ,SPI1_MISO , , , , ,QUADSPI_BK1_IO2 , , , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , ,TIM1_BKIN_COMP1 , ,SPI1_MOSI , , , , ,QUADSPI_BK1_IO3 , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , , , , , , , diff --git a/ports/stm32/boards/stm32l476_af.csv b/ports/stm32/boards/stm32l476_af.csv index df824ed7080fc..bb99d39735ac4 100644 --- a/ports/stm32/boards/stm32l476_af.csv +++ b/ports/stm32/boards/stm32l476_af.csv @@ -1,116 +1,116 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,, -,,SYS_AF,TIM1/TIM2/TIM5/TIM8/LPTIM1,TIM1/TIM2/TIM3/TIM4/TIM5,TIM8,I2C1/I2C2/I2C3,SPI1/SPI2,SPI3/DFSDM,USART1/USART2/USART3,UART4/UART5/LPUART1,CAN1/TSC,OTG_FS/QUADSPI,LCD,SDMMC1/COMP1/COMP2/FMC/SWPMI1,SAI1/SAI2,TIM2/TIM15/TIM16/TIM17/LPTIM2,EVENTOUT,ADC,COMP -PortA,PA0,,TIM2_CH1,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,,,SAI1_EXTCLK,TIM2_ETR,EVENTOUT,ADC12_IN5, -PortA,PA1,,TIM2_CH2,TIM5_CH2,,,,,USART2_RTS/USART2_DE,UART4_RX,,,LCD_SEG0,,,TIM15_CH1N,EVENTOUT,ADC12_IN6, -PortA,PA2,,TIM2_CH3,TIM5_CH3,,,,,USART2_TX,,,,LCD_SEG1,,SAI2_EXTCLK,TIM15_CH1,EVENTOUT,ADC12_IN7, -PortA,PA3,,TIM2_CH4,TIM5_CH4,,,,,USART2_RX,,,,LCD_SEG2,,,TIM15_CH2,EVENTOUT,ADC12_IN8, -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS,USART2_CK,,,,,,SAI1_FS_B,LPTIM2_OUT,EVENTOUT,ADC12_IN9, -PortA,PA5,,TIM2_CH1,TIM2_ETR,TIM8_CH1N,,SPI1_SCK,,,,,,,,,LPTIM2_ETR,EVENTOUT,ADC12_IN10, -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,,SPI1_MISO,,USART3_CTS,,,QUADSPI_BK1_IO3,LCD_SEG3,TIM1_BKIN_COMP2,TIM8_BKIN_COMP2,TIM16_CH1,EVENTOUT,ADC12_IN11, -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,,SPI1_MOSI,,,,,QUADSPI_BK1_IO2,LCD_SEG4,,,TIM17_CH1,EVENTOUT,ADC12_IN12, -PortA,PA8,MCO,TIM1_CH1,,,,,,USART1_CK,,,OTG_FS_SOF,LCD_COM0,,,LPTIM2_OUT,EVENTOUT,, -PortA,PA9,,TIM1_CH2,,,,,,USART1_TX,,,,LCD_COM1,,,TIM15_BKIN,EVENTOUT,, -PortA,PA10,,TIM1_CH3,,,,,,USART1_RX,,,OTG_FS_ID,LCD_COM2,,,TIM17_BKIN,EVENTOUT,, -PortA,PA11,,TIM1_CH4,TIM1_BKIN2,,,,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,TIM1_BKIN2_COMP1,,,EVENTOUT,, -PortA,PA12,,TIM1_ETR,,,,,,USART1_RTS/USART1_DE,,CAN1_TX,OTG_FS_DP,,,,,EVENTOUT,, -PortA,PA13,JTMS/SWDIO,IR_OUT,,,,,,,,,OTG_FS_NOE,,,,,EVENTOUT,, -PortA,PA14,JTCK/SWCLK,,,,,,,,,,,,,,,EVENTOUT,, -PortA,PA15,JTDI,TIM2_CH1,TIM2_ETR,,,SPI1_NSS,SPI3_NSS,,UART4_RTS/UART4_DE,TSC_G3_IO1,,LCD_SEG17,,SAI2_FS_B,,EVENTOUT,, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,,,USART3_CK,,,QUADSPI_BK1_IO1,LCD_SEG5,COMP1_OUT,,,EVENTOUT,ADC12_IN15, -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,DFSDM_DATIN0,USART3_RTS/USART3_DE,,,QUADSPI_BK1_IO0,LCD_SEG6,,,LPTIM2_IN1,EVENTOUT,ADC12_IN16,COMP1_INN -PortB,PB2,RTC_OUT,LPTIM1_OUT,,,I2C3_SMBA,,DFSDM_CKIN0,,,,,,,,,EVENTOUT,,COMP1_INP -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK,USART1_RTS/USART1_DE,,,,LCD_SEG7,,SAI1_SCK_B,,EVENTOUT,,COMP2_INM -PortB,PB4,NJTRST,,TIM3_CH1,,,SPI1_MISO,SPI3_MISO,USART1_CTS,UART5_RTS/UART5_DE,TSC_G2_IO1,,LCD_SEG8,,SAI1_MCLK_B,TIM17_BKIN,EVENTOUT,,COMP2_INP -PortB,PB5,,LPTIM1_IN1,TIM3_CH2,,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI,USART1_CK,UART5_CTS,TSC_G2_IO2,,LCD_SEG9,COMP2_OUT,SAI1_SD_B,TIM16_BKIN,EVENTOUT,, -PortB,PB6,,LPTIM1_ETR,TIM4_CH1,TIM8_BKIN2,I2C1_SCL,,DFSDM_DATIN5,USART1_TX,,TSC_G2_IO3,,,TIM8_BKIN2_COMP2,SAI1_FS_B,TIM16_CH1N,EVENTOUT,,COMP2_INP -PortB,PB7,,LPTIM1_IN2,TIM4_CH2,TIM8_BKIN,I2C1_SDA,,DFSDM_CKIN5,USART1_RX,UART4_CTS,TSC_G2_IO4,,LCD_SEG21,FMC_NL,TIM8_BKIN_COMP1,TIM17_CH1N,EVENTOUT,,COMP2_INM -PortB,PB8,,,TIM4_CH3,,I2C1_SCL,,DFSDM_DATIN6,,,CAN1_RX,,LCD_SEG16,SDMMC1_D4,SAI1_MCLK_A,TIM16_CH1,EVENTOUT,, -PortB,PB9,,IR_OUT,TIM4_CH4,,I2C1_SDA,SPI2_NSS,DFSDM_CKIN6,,,CAN1_TX,,LCD_COM3,SDMMC1_D5,SAI1_FS_A,TIM17_CH1,EVENTOUT,, -PortB,PB10,,TIM2_CH3,,,I2C2_SCL,SPI2_SCK,DFSDM_DATIN7,USART3_TX,LPUART1_RX,,QUADSPI_CLK,LCD_SEG10,COMP1_OUT,SAI1_SCK_A,,EVENTOUT,, -PortB,PB11,,TIM2_CH4,,,I2C2_SDA,,DFSDM_CKIN7,USART3_RX,LPUART1_TX,,QUADSPI_NCS,LCD_SEG11,COMP2_OUT,,,EVENTOUT,, -PortB,PB12,,TIM1_BKIN,,TIM1_BKIN_COMP2,I2C2_SMBA,SPI2_NSS,DFSDM_DATIN1,USART3_CK,LPUART1_RTS/LPUART1_DE,TSC_G1_IO1,,LCD_SEG12,SWPMI1_IO,SAI2_FS_A,TIM15_BKIN,EVENTOUT,, -PortB,PB13,,TIM1_CH1N,,,I2C2_SCL,SPI2_SCK,DFSDM_CKIN1,USART3_CTS,LPUART1_CTS,TSC_G1_IO2,,LCD_SEG13,SWPMI1_TX,SAI2_SCK_A,TIM15_CH1N,EVENTOUT,, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,I2C2_SDA,SPI2_MISO,DFSDM_DATIN2,USART3_RTS/USART3_DE,,TSC_G1_IO3,,LCD_SEG14,SWPMI1_RX,SAI2_MCLK_A,TIM15_CH1,EVENTOUT,, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI,DFSDM_CKIN2,,,TSC_G1_IO4,,LCD_SEG15,SWPMI1_SUSPEND,SAI2_SD_A,TIM15_CH2,EVENTOUT,, -PortC,PC0,,LPTIM1_IN1,,,I2C3_SCL,,DFSDM_DATIN4,,LPUART1_RX,,,LCD_SEG18,,,LPTIM2_IN1,EVENTOUT,ADC123_IN1, -PortC,PC1,,LPTIM1_OUT,,,I2C3_SDA,,DFSDM_CKIN4,,LPUART1_TX,,,LCD_SEG19,,,,EVENTOUT,ADC123_IN2, -PortC,PC2,,LPTIM1_IN2,,,,SPI2_MISO,DFSDM_CKOUT,,,,,LCD_SEG20,,,,EVENTOUT,ADC123_IN3, -PortC,PC3,,LPTIM1_ETR,,,,SPI2_MOSI,,,,,,LCD_VLCD,,SAI1_SD_A,LPTIM2_ETR,EVENTOUT,ADC123_IN4, -PortC,PC4,,,,,,,,USART3_TX,,,,LCD_SEG22,,,,EVENTOUT,ADC12_IN13,COMP1_INM -PortC,PC5,,,,,,,,USART3_RX,,,,LCD_SEG23,,,,EVENTOUT,ADC12_IN14,COMP1_INP -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,,DFSDM_CKIN3,,,TSC_G4_IO1,,LCD_SEG24,SDMMC1_D6,SAI2_MCLK_A,,EVENTOUT,, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,DFSDM_DATIN3,,,TSC_G4_IO2,,LCD_SEG25,SDMMC1_D7,SAI2_MCLK_B,,EVENTOUT,, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,,,TSC_G4_IO3,,LCD_SEG26,SDMMC1_D0,,,EVENTOUT,, -PortC,PC9,,TIM8_BKIN2,TIM3_CH4,TIM8_CH4,,,,,,TSC_G4_IO4,OTG_FS_NOE,LCD_SEG27,SDMMC1_D1,SAI2_EXTCLK,TIM8_BKIN2_COMP1,EVENTOUT,, -PortC,PC10,,,,,,,SPI3_SCK,USART3_TX,UART4_TX,TSC_G3_IO2,,LCD_COM4/LCD_SEG28/LCD_SEG40,SDMMC1_D2,SAI2_SCK_B,,EVENTOUT,, -PortC,PC11,,,,,,,SPI3_MISO,USART3_RX,UART4_RX,TSC_G3_IO3,,LCD_COM5/LCD_SEG29/LCD_SEG41,SDMMC1_D3,SAI2_MCLK_B,,EVENTOUT,, -PortC,PC12,,,,,,,SPI3_MOSI,USART3_CK,UART5_TX,TSC_G3_IO4,,LCD_COM6/LCD_SEG30/LCD_SEG42,SDMMC1_CK,SAI2_SD_B,,EVENTOUT,, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT,, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT,, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT,, -PortD,PD0,,,,,,SPI2_NSS,DFSDM_DATIN7,,,CAN1_RX,,,FMC_D2,,,EVENTOUT,, -PortD,PD1,,,,,,SPI2_SCK,DFSDM_CKIN7,,,CAN1_TX,,,FMC_D3,,,EVENTOUT,, -PortD,PD2,,,TIM3_ETR,,,,,USART3_RTS/USART3_DE,UART5_RX,TSC_SYNC,,LCD_COM7/LCD_SEG31/LCD_SEG43,SDMMC1_CMD,,,EVENTOUT,, -PortD,PD3,,,,,,SPI2_MISO,DFSDM_DATIN0,USART2_CTS,,,,,FMC_CLK,,,EVENTOUT,, -PortD,PD4,,,,,,SPI2_MOSI,DFSDM_CKIN0,USART2_RTS/USART2_DE,,,,,FMC_NOE,,,EVENTOUT,, -PortD,PD5,,,,,,,,USART2_TX,,,,,FMC_NWE,,,EVENTOUT,, -PortD,PD6,,,,,,,DFSDM_DATIN1,USART2_RX,,,,,FMC_NWAIT,SAI1_SD_A,,EVENTOUT,, -PortD,PD7,,,,,,,DFSDM_CKIN1,USART2_CK,,,,,FMC_NE1,,,EVENTOUT,, -PortD,PD8,,,,,,,,USART3_TX,,,,LCD_SEG28,FMC_D13,,,EVENTOUT,, -PortD,PD9,,,,,,,,USART3_RX,,,,LCD_SEG29,FMC_D14,SAI2_MCLK_A,,EVENTOUT,, -PortD,PD10,,,,,,,,USART3_CK,,TSC_G6_IO1,,LCD_SEG30,FMC_D15,SAI2_SCK_A,,EVENTOUT,, -PortD,PD11,,,,,,,,USART3_CTS,,TSC_G6_IO2,,LCD_SEG31,FMC_A16,SAI2_SD_A,LPTIM2_ETR,EVENTOUT,, -PortD,PD12,,,TIM4_CH1,,,,,USART3_RTS/USART3_DE,,TSC_G6_IO3,,LCD_SEG32,FMC_A17,SAI2_FS_A,LPTIM2_IN1,EVENTOUT,, -PortD,PD13,,,TIM4_CH2,,,,,,,TSC_G6_IO4,,LCD_SEG33,FMC_A18,,LPTIM2_OUT,EVENTOUT,, -PortD,PD14,,,TIM4_CH3,,,,,,,,,LCD_SEG34,FMC_D0,,,EVENTOUT,, -PortD,PD15,,,TIM4_CH4,,,,,,,,,LCD_SEG35,FMC_D1,,,EVENTOUT,, -PortE,PE0,,,TIM4_ETR,,,,,,,,,LCD_SEG36,FMC_NBL0,,TIM16_CH1,EVENTOUT,, -PortE,PE1,,,,,,,,,,,,LCD_SEG37,FMC_NBL1,,TIM17_CH1,EVENTOUT,, -PortE,PE2,TRACECLK,,TIM3_ETR,,,,,,,TSC_G7_IO1,,LCD_SEG38,FMC_A23,SAI1_MCLK_A,,EVENTOUT,, -PortE,PE3,TRACED0,,TIM3_CH1,,,,,,,TSC_G7_IO2,,LCD_SEG39,FMC_A19,SAI1_SD_B,,EVENTOUT,, -PortE,PE4,TRACED1,,TIM3_CH2,,,,DFSDM_DATIN3,,,TSC_G7_IO3,,,FMC_A20,SAI1_FS_A,,EVENTOUT,, -PortE,PE5,TRACED2,,TIM3_CH3,,,,DFSDM_CKIN3,,,TSC_G7_IO4,,,FMC_A21,SAI1_SCK_A,,EVENTOUT,, -PortE,PE6,TRACED3,,TIM3_CH4,,,,,,,,,,FMC_A22,SAI1_SD_A,,EVENTOUT,, -PortE,PE7,,TIM1_ETR,,,,,DFSDM_DATIN2,,,,,,FMC_D4,SAI1_SD_B,,EVENTOUT,, -PortE,PE8,,TIM1_CH1N,,,,,DFSDM_CKIN2,,,,,,FMC_D5,SAI1_SCK_B,,EVENTOUT,, -PortE,PE9,,TIM1_CH1,,,,,DFSDM_CKOUT,,,,,,FMC_D6,SAI1_FS_B,,EVENTOUT,, -PortE,PE10,,TIM1_CH2N,,,,,DFSDM_DATIN4,,,TSC_G5_IO1,QUADSPI_CLK,,FMC_D7,SAI1_MCLK_B,,EVENTOUT,, -PortE,PE11,,TIM1_CH2,,,,,DFSDM_CKIN4,,,TSC_G5_IO2,QUADSPI_NCS,,FMC_D8,,,EVENTOUT,, -PortE,PE12,,TIM1_CH3N,,,,SPI1_NSS,DFSDM_DATIN5,,,TSC_G5_IO3,QUADSPI_BK1_IO0,,FMC_D9,,,EVENTOUT,, -PortE,PE13,,TIM1_CH3,,,,SPI1_SCK,DFSDM_CKIN5,,,TSC_G5_IO4,QUADSPI_BK1_IO1,,FMC_D10,,,EVENTOUT,, -PortE,PE14,,TIM1_CH4,TIM1_BKIN2,TIM1_BKIN2_COMP2,,SPI1_MISO,,,,,QUADSPI_BK1_IO2,,FMC_D11,,,EVENTOUT,, -PortE,PE15,,TIM1_BKIN,,TIM1_BKIN_COMP1,,SPI1_MOSI,,,,,QUADSPI_BK1_IO3,,FMC_D12,,,EVENTOUT,, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT,, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT,, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT,, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN6, -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN7, -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN8, -PortF,PF6,,TIM5_ETR,TIM5_CH1,,,,,,,,,,,SAI1_SD_B,,EVENTOUT,ADC3_IN9, -PortF,PF7,,,TIM5_CH2,,,,,,,,,,,SAI1_MCLK_B,,EVENTOUT,ADC3_IN10, -PortF,PF8,,,TIM5_CH3,,,,,,,,,,,SAI1_SCK_B,,EVENTOUT,ADC3_IN11, -PortF,PF9,,,TIM5_CH4,,,,,,,,,,,SAI1_FS_B,TIM15_CH1,EVENTOUT,ADC3_IN12, -PortF,PF10,,,,,,,,,,,,,,,TIM15_CH2,EVENTOUT,ADC3_IN13, -PortF,PF11,,,,,,,,,,,,,,,,EVENTOUT,, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT,, -PortF,PF13,,,,,,,DFSDM_DATIN6,,,,,,FMC_A7,,,EVENTOUT,, -PortF,PF14,,,,,,,DFSDM_CKIN6,,,TSC_G8_IO1,,,FMC_A8,,,EVENTOUT,, -PortF,PF15,,,,,,,,,,TSC_G8_IO2,,,FMC_A9,,,EVENTOUT,, -PortG,PG0,,,,,,,,,,TSC_G8_IO3,,,FMC_A10,,,EVENTOUT,, -PortG,PG1,,,,,,,,,,TSC_G8_IO4,,,FMC_A11,,,EVENTOUT,, -PortG,PG2,,,,,,SPI1_SCK,,,,,,,FMC_A12,SAI2_SCK_B,,EVENTOUT,, -PortG,PG3,,,,,,SPI1_MISO,,,,,,,FMC_A13,SAI2_FS_B,,EVENTOUT,, -PortG,PG4,,,,,,SPI1_MOSI,,,,,,,FMC_A14,SAI2_MCLK_B,,EVENTOUT,, -PortG,PG5,,,,,,SPI1_NSS,,,LPUART1_CTS,,,,FMC_A15,SAI2_SD_B,,EVENTOUT,, -PortG,PG6,,,,,I2C3_SMBA,,,,LPUART1_RTS/LPUART1_DE,,,,,,,EVENTOUT,, -PortG,PG7,,,,,I2C3_SCL,,,,LPUART1_TX,,,,FMC_INT3,,,EVENTOUT,, -PortG,PG8,,,,,I2C3_SDA,,,,LPUART1_RX,,,,,,,EVENTOUT,, -PortG,PG9,,,,,,,SPI3_SCK,USART1_TX,,,,,FMC_NCE3/FMC_NE2,SAI2_SCK_A,TIM15_CH1N,EVENTOUT,, -PortG,PG10,,LPTIM1_IN1,,,,,SPI3_MISO,USART1_RX,,,,,FMC_NE3,SAI2_FS_A,TIM15_CH1,EVENTOUT,, -PortG,PG11,,LPTIM1_IN2,,,,,SPI3_MOSI,USART1_CTS,,,,,,SAI2_MCLK_A,TIM15_CH2,EVENTOUT,, -PortG,PG12,,LPTIM1_ETR,,,,,SPI3_NSS,USART1_RTS/USART1_DE,,,,,FMC_NE4,SAI2_SD_A,,EVENTOUT,, -PortG,PG13,,,,,I2C1_SDA,,,USART1_CK,,,,,FMC_A24,,,EVENTOUT,, -PortG,PG14,,,,,I2C1_SCL,,,,,,,,FMC_A25,,,EVENTOUT,, -PortG,PG15,,LPTIM1_OUT,,,I2C1_SMBA,,,,,,,,,,,EVENTOUT,, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT,, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/TIM5/TIM8/LPTIM1,TIM1/TIM2/TIM3/TIM4/TIM5,TIM8 ,I2C1/I2C2/I2C3,SPI1/SPI2,SPI3/DFSDM ,USART1/USART2/USART3,UART4/UART5/LPUART1 ,CAN1/TSC ,OTG_FS/QUADSPI ,LCD ,SDMMC1/COMP1/COMP2/FMC/SWPMI1,SAI1/SAI2 ,TIM2/TIM15/TIM16/TIM17/LPTIM2,EVENTOUT,ADC +PortA,PA0 , ,TIM2_CH1 ,TIM5_CH1 ,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , , , ,SAI1_EXTCLK ,TIM2_ETR ,EVENTOUT,ADC12_IN5 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , , , , ,USART2_RTS/USART2_DE,UART4_RX , , ,LCD_SEG0 , , ,TIM15_CH1N ,EVENTOUT,ADC12_IN6 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 , , , , ,USART2_TX , , , ,LCD_SEG1 , ,SAI2_EXTCLK ,TIM15_CH1 ,EVENTOUT,ADC12_IN7 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 , , , , ,USART2_RX , , , ,LCD_SEG2 , , ,TIM15_CH2 ,EVENTOUT,ADC12_IN8 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS ,USART2_CK , , , , , ,SAI1_FS_B ,LPTIM2_OUT ,EVENTOUT,ADC12_IN9 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR ,TIM8_CH1N , ,SPI1_SCK , , , , , , , , ,LPTIM2_ETR ,EVENTOUT,ADC12_IN10 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,SPI1_MISO, ,USART3_CTS , , ,QUADSPI_BK1_IO3,LCD_SEG3 ,TIM1_BKIN_COMP2 ,TIM8_BKIN_COMP2,TIM16_CH1 ,EVENTOUT,ADC12_IN11 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,SPI1_MOSI, , , , ,QUADSPI_BK1_IO2,LCD_SEG4 , , ,TIM17_CH1 ,EVENTOUT,ADC12_IN12 +PortA,PA8 ,MCO ,TIM1_CH1 , , , , , ,USART1_CK , , ,OTG_FS_SOF ,LCD_COM0 , , ,LPTIM2_OUT ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , , , , , ,USART1_TX , , , ,LCD_COM1 , , ,TIM15_BKIN ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , , , , ,USART1_RX , , ,OTG_FS_ID ,LCD_COM2 , , ,TIM17_BKIN ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,TIM1_BKIN2 , , , , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , ,TIM1_BKIN2_COMP1 , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , , , ,USART1_RTS/USART1_DE, ,CAN1_TX ,OTG_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO ,IR_OUT , , , , , , , , ,OTG_FS_NOE , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK , , , , , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM2_ETR , , ,SPI1_NSS ,SPI3_NSS , ,UART4_RTS/UART4_DE ,TSC_G3_IO1, ,LCD_SEG17 , ,SAI2_FS_B , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , , , ,USART3_CK , , ,QUADSPI_BK1_IO1,LCD_SEG5 ,COMP1_OUT , , ,EVENTOUT,ADC12_IN15 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,DFSDM_DATIN0,USART3_RTS/USART3_DE, , ,QUADSPI_BK1_IO0,LCD_SEG6 , , ,LPTIM2_IN1 ,EVENTOUT,ADC12_IN16 +PortB,PB2 ,RTC_OUT ,LPTIM1_OUT , , ,I2C3_SMBA , ,DFSDM_CKIN0 , , , , , , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK ,USART1_RTS/USART1_DE, , , ,LCD_SEG7 , ,SAI1_SCK_B , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1 , , ,SPI1_MISO,SPI3_MISO ,USART1_CTS ,UART5_RTS/UART5_DE ,TSC_G2_IO1, ,LCD_SEG8 , ,SAI1_MCLK_B ,TIM17_BKIN ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 ,TIM3_CH2 , ,I2C1_SMBA ,SPI1_MOSI,SPI3_MOSI ,USART1_CK ,UART5_CTS ,TSC_G2_IO2, ,LCD_SEG9 ,COMP2_OUT ,SAI1_SD_B ,TIM16_BKIN ,EVENTOUT, +PortB,PB6 , ,LPTIM1_ETR ,TIM4_CH1 ,TIM8_BKIN2 ,I2C1_SCL , ,DFSDM_DATIN5,USART1_TX , ,TSC_G2_IO3, , ,TIM8_BKIN2_COMP2 ,SAI1_FS_B ,TIM16_CH1N ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 ,TIM4_CH2 ,TIM8_BKIN ,I2C1_SDA , ,DFSDM_CKIN5 ,USART1_RX ,UART4_CTS ,TSC_G2_IO4, ,LCD_SEG21 ,FMC_NL ,TIM8_BKIN_COMP1,TIM17_CH1N ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3 , ,I2C1_SCL , ,DFSDM_DATIN6, , ,CAN1_RX , ,LCD_SEG16 ,SDMMC1_D4 ,SAI1_MCLK_A ,TIM16_CH1 ,EVENTOUT, +PortB,PB9 , ,IR_OUT ,TIM4_CH4 , ,I2C1_SDA ,SPI2_NSS ,DFSDM_CKIN6 , , ,CAN1_TX , ,LCD_COM3 ,SDMMC1_D5 ,SAI1_FS_A ,TIM17_CH1 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C2_SCL ,SPI2_SCK ,DFSDM_DATIN7,USART3_TX ,LPUART1_RX , ,QUADSPI_CLK ,LCD_SEG10 ,COMP1_OUT ,SAI1_SCK_A , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C2_SDA , ,DFSDM_CKIN7 ,USART3_RX ,LPUART1_TX , ,QUADSPI_NCS ,LCD_SEG11 ,COMP2_OUT , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,TIM1_BKIN_COMP2 ,I2C2_SMBA ,SPI2_NSS ,DFSDM_DATIN1,USART3_CK ,LPUART1_RTS/LPUART1_DE,TSC_G1_IO1, ,LCD_SEG12 ,SWPMI1_IO ,SAI2_FS_A ,TIM15_BKIN ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2C2_SCL ,SPI2_SCK ,DFSDM_CKIN1 ,USART3_CTS ,LPUART1_CTS ,TSC_G1_IO2, ,LCD_SEG13 ,SWPMI1_TX ,SAI2_SCK_A ,TIM15_CH1N ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N ,I2C2_SDA ,SPI2_MISO,DFSDM_DATIN2,USART3_RTS/USART3_DE, ,TSC_G1_IO3, ,LCD_SEG14 ,SWPMI1_RX ,SAI2_MCLK_A ,TIM15_CH1 ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI,DFSDM_CKIN2 , , ,TSC_G1_IO4, ,LCD_SEG15 ,SWPMI1_SUSPEND ,SAI2_SD_A ,TIM15_CH2 ,EVENTOUT, +PortC,PC0 , ,LPTIM1_IN1 , , ,I2C3_SCL , ,DFSDM_DATIN4, ,LPUART1_RX , , ,LCD_SEG18 , , ,LPTIM2_IN1 ,EVENTOUT,ADC123_IN1 +PortC,PC1 , ,LPTIM1_OUT , , ,I2C3_SDA , ,DFSDM_CKIN4 , ,LPUART1_TX , , ,LCD_SEG19 , , , ,EVENTOUT,ADC123_IN2 +PortC,PC2 , ,LPTIM1_IN2 , , , ,SPI2_MISO,DFSDM_CKOUT , , , , ,LCD_SEG20 , , , ,EVENTOUT,ADC123_IN3 +PortC,PC3 , ,LPTIM1_ETR , , , ,SPI2_MOSI, , , , , ,LCD_VLCD , ,SAI1_SD_A ,LPTIM2_ETR ,EVENTOUT,ADC123_IN4 +PortC,PC4 , , , , , , , ,USART3_TX , , , ,LCD_SEG22 , , , ,EVENTOUT,ADC12_IN13 +PortC,PC5 , , , , , , , ,USART3_RX , , , ,LCD_SEG23 , , , ,EVENTOUT,ADC12_IN14 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 , , ,DFSDM_CKIN3 , , ,TSC_G4_IO1, ,LCD_SEG24 ,SDMMC1_D6 ,SAI2_MCLK_A , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 ,TIM8_CH2 , , ,DFSDM_DATIN3, , ,TSC_G4_IO2, ,LCD_SEG25 ,SDMMC1_D7 ,SAI2_MCLK_B , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 ,TIM8_CH3 , , , , , ,TSC_G4_IO3, ,LCD_SEG26 ,SDMMC1_D0 , , ,EVENTOUT, +PortC,PC9 , ,TIM8_BKIN2 ,TIM3_CH4 ,TIM8_CH4 , , , , , ,TSC_G4_IO4,OTG_FS_NOE ,LCD_SEG27 ,SDMMC1_D1 ,SAI2_EXTCLK ,TIM8_BKIN2_COMP1 ,EVENTOUT, +PortC,PC10, , , , , , ,SPI3_SCK ,USART3_TX ,UART4_TX ,TSC_G3_IO2, ,LCD_COM4/LCD_SEG28/LCD_SEG40,SDMMC1_D2 ,SAI2_SCK_B , ,EVENTOUT, +PortC,PC11, , , , , , ,SPI3_MISO ,USART3_RX ,UART4_RX ,TSC_G3_IO3, ,LCD_COM5/LCD_SEG29/LCD_SEG41,SDMMC1_D3 ,SAI2_MCLK_B , ,EVENTOUT, +PortC,PC12, , , , , , ,SPI3_MOSI ,USART3_CK ,UART5_TX ,TSC_G3_IO4, ,LCD_COM6/LCD_SEG30/LCD_SEG42,SDMMC1_CK ,SAI2_SD_B , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , ,SPI2_NSS ,DFSDM_DATIN7, , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , ,SPI2_SCK ,DFSDM_CKIN7 , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 , , ,TIM3_ETR , , , , ,USART3_RTS/USART3_DE,UART5_RX ,TSC_SYNC , ,LCD_COM7/LCD_SEG31/LCD_SEG43,SDMMC1_CMD , , ,EVENTOUT, +PortD,PD3 , , , , , ,SPI2_MISO,DFSDM_DATIN0,USART2_CTS , , , , ,FMC_CLK , , ,EVENTOUT, +PortD,PD4 , , , , , ,SPI2_MOSI,DFSDM_CKIN0 ,USART2_RTS/USART2_DE, , , , ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , , , ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , , , ,DFSDM_DATIN1,USART2_RX , , , , ,FMC_NWAIT ,SAI1_SD_A , ,EVENTOUT, +PortD,PD7 , , , , , , ,DFSDM_CKIN1 ,USART2_CK , , , , ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , , ,LCD_SEG28 ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , , ,LCD_SEG29 ,FMC_D14 ,SAI2_MCLK_A , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , ,TSC_G6_IO1, ,LCD_SEG30 ,FMC_D15 ,SAI2_SCK_A , ,EVENTOUT, +PortD,PD11, , , , , , , ,USART3_CTS , ,TSC_G6_IO2, ,LCD_SEG31 ,FMC_A16 ,SAI2_SD_A ,LPTIM2_ETR ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 , , , , ,USART3_RTS/USART3_DE, ,TSC_G6_IO3, ,LCD_SEG32 ,FMC_A17 ,SAI2_FS_A ,LPTIM2_IN1 ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , , , , , , ,TSC_G6_IO4, ,LCD_SEG33 ,FMC_A18 , ,LPTIM2_OUT ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , , , , ,LCD_SEG34 ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , , , , ,LCD_SEG35 ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR , , , , , , , , ,LCD_SEG36 ,FMC_NBL0 , ,TIM16_CH1 ,EVENTOUT, +PortE,PE1 , , , , , , , , , , , ,LCD_SEG37 ,FMC_NBL1 , ,TIM17_CH1 ,EVENTOUT, +PortE,PE2 ,TRACECLK , ,TIM3_ETR , , , , , , ,TSC_G7_IO1, ,LCD_SEG38 ,FMC_A23 ,SAI1_MCLK_A , ,EVENTOUT, +PortE,PE3 ,TRACED0 , ,TIM3_CH1 , , , , , , ,TSC_G7_IO2, ,LCD_SEG39 ,FMC_A19 ,SAI1_SD_B , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,TIM3_CH2 , , , ,DFSDM_DATIN3, , ,TSC_G7_IO3, , ,FMC_A20 ,SAI1_FS_A , ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,TIM3_CH3 , , , ,DFSDM_CKIN3 , , ,TSC_G7_IO4, , ,FMC_A21 ,SAI1_SCK_A , ,EVENTOUT, +PortE,PE6 ,TRACED3 , ,TIM3_CH4 , , , , , , , , , ,FMC_A22 ,SAI1_SD_A , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,DFSDM_DATIN2, , , , , ,FMC_D4 ,SAI1_SD_B , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,DFSDM_CKIN2 , , , , , ,FMC_D5 ,SAI1_SCK_B , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,DFSDM_CKOUT , , , , , ,FMC_D6 ,SAI1_FS_B , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , ,DFSDM_DATIN4, , ,TSC_G5_IO1,QUADSPI_CLK , ,FMC_D7 ,SAI1_MCLK_B , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , , ,DFSDM_CKIN4 , , ,TSC_G5_IO2,QUADSPI_NCS , ,FMC_D8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI1_NSS ,DFSDM_DATIN5, , ,TSC_G5_IO3,QUADSPI_BK1_IO0, ,FMC_D9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI1_SCK ,DFSDM_CKIN5 , , ,TSC_G5_IO4,QUADSPI_BK1_IO1, ,FMC_D10 , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 ,TIM1_BKIN2 ,TIM1_BKIN2_COMP2, ,SPI1_MISO, , , , ,QUADSPI_BK1_IO2, ,FMC_D11 , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , ,TIM1_BKIN_COMP1 , ,SPI1_MOSI, , , , ,QUADSPI_BK1_IO3, ,FMC_D12 , , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN6 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN7 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN8 +PortF,PF6 , ,TIM5_ETR ,TIM5_CH1 , , , , , , , , , , ,SAI1_SD_B , ,EVENTOUT,ADC3_IN9 +PortF,PF7 , , ,TIM5_CH2 , , , , , , , , , , ,SAI1_MCLK_B , ,EVENTOUT,ADC3_IN10 +PortF,PF8 , , ,TIM5_CH3 , , , , , , , , , , ,SAI1_SCK_B , ,EVENTOUT,ADC3_IN11 +PortF,PF9 , , ,TIM5_CH4 , , , , , , , , , , ,SAI1_FS_B ,TIM15_CH1 ,EVENTOUT,ADC3_IN12 +PortF,PF10, , , , , , , , , , , , , , ,TIM15_CH2 ,EVENTOUT,ADC3_IN13 +PortF,PF11, , , , , , , , , , , , , , , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , , , ,DFSDM_DATIN6, , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , , , ,DFSDM_CKIN6 , , ,TSC_G8_IO1, , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , , , , , , ,TSC_G8_IO2, , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , ,TSC_G8_IO3, , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , ,TSC_G8_IO4, , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , ,SPI1_SCK , , , , , , ,FMC_A12 ,SAI2_SCK_B , ,EVENTOUT, +PortG,PG3 , , , , , ,SPI1_MISO, , , , , , ,FMC_A13 ,SAI2_FS_B , ,EVENTOUT, +PortG,PG4 , , , , , ,SPI1_MOSI, , , , , , ,FMC_A14 ,SAI2_MCLK_B , ,EVENTOUT, +PortG,PG5 , , , , , ,SPI1_NSS , , ,LPUART1_CTS , , , ,FMC_A15 ,SAI2_SD_B , ,EVENTOUT, +PortG,PG6 , , , , ,I2C3_SMBA , , , ,LPUART1_RTS/LPUART1_DE, , , , , , ,EVENTOUT, +PortG,PG7 , , , , ,I2C3_SCL , , , ,LPUART1_TX , , , ,FMC_INT3 , , ,EVENTOUT, +PortG,PG8 , , , , ,I2C3_SDA , , , ,LPUART1_RX , , , , , , ,EVENTOUT, +PortG,PG9 , , , , , , ,SPI3_SCK ,USART1_TX , , , , ,FMC_NCE3/FMC_NE2 ,SAI2_SCK_A ,TIM15_CH1N ,EVENTOUT, +PortG,PG10, ,LPTIM1_IN1 , , , , ,SPI3_MISO ,USART1_RX , , , , ,FMC_NE3 ,SAI2_FS_A ,TIM15_CH1 ,EVENTOUT, +PortG,PG11, ,LPTIM1_IN2 , , , , ,SPI3_MOSI ,USART1_CTS , , , , , ,SAI2_MCLK_A ,TIM15_CH2 ,EVENTOUT, +PortG,PG12, ,LPTIM1_ETR , , , , ,SPI3_NSS ,USART1_RTS/USART1_DE, , , , ,FMC_NE4 ,SAI2_SD_A , ,EVENTOUT, +PortG,PG13, , , , ,I2C1_SDA , , ,USART1_CK , , , , ,FMC_A24 , , ,EVENTOUT, +PortG,PG14, , , , ,I2C1_SCL , , , , , , , ,FMC_A25 , , ,EVENTOUT, +PortG,PG15, ,LPTIM1_OUT , , ,I2C1_SMBA , , , , , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32l496_af.csv b/ports/stm32/boards/stm32l496_af.csv index 311770a055a84..a0d77f1e10cd8 100644 --- a/ports/stm32/boards/stm32l496_af.csv +++ b/ports/stm32/boards/stm32l496_af.csv @@ -1,142 +1,142 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,,, -,,SYS_AF,TIM1/TIM2/TIM5/TIM8/LPTIM1,TIM1/TIM2/TIM3/TIM4/TIM5,TIM8,I2C1/I2C2/I2C3,SPI1/SPI2,SPI3/DFSDM,USART1/USART2/USART3,UART4/UART5/LPUART1,CAN1/TSC,OTG_FS/QUADSPI,LCD,SDMMC1/COMP1/COMP2/FMC/SWPMI1,SAI1/SAI2,TIM2/TIM15/TIM16/TIM17/LPTIM2,EVENTOUT,ADC,COMP,DAC -PortA,PA0,,TIM2_CH1,TIM5_CH1,TIM8_ETR,,,,USART2_CTS,UART4_TX,,,,,SAI1_EXTCLK,TIM2_ETR,EVENTOUT,ADC12_IN5,, -PortA,PA1,,TIM2_CH2,TIM5_CH2,,I2C1_SMBA,SPI1_SCK,,USART2_RTS/USART2_DE,UART4_RX,,,LCD_SEG0,,,TIM15_CH1N,EVENTOUT,ADC12_IN6,, -PortA,PA2,,TIM2_CH3,TIM5_CH3,,,,,USART2_TX,LPUART1_TX,,QUADSPI_BK1_NCS,LCD_SEG1,,SAI2_EXTCLK,TIM15_CH1,EVENTOUT,ADC12_IN7,, -PortA,PA3,,TIM2_CH4,TIM5_CH4,,,,,USART2_RX,LPUART1_RX,,QUADSPI_CLK,LCD_SEG2,,SAI1_MCLK_A,TIM15_CH2,EVENTOUT,ADC12_IN8,, -PortA,PA4,,,,,,SPI1_NSS,SPI3_NSS,USART2_CK,,,DCMI_HSYNC,,,SAI1_FS_B,LPTIM2_OUT,EVENTOUT,ADC12_IN9,,DAC1_OUT1 -PortA,PA5,,TIM2_CH1,TIM2_ETR,TIM8_CH1N,,SPI1_SCK,,,,,,,,,LPTIM2_ETR,EVENTOUT,ADC12_IN10,,DAC1_OUT2 -PortA,PA6,,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,DCMI_PIXCLK,SPI1_MISO,,USART3_CTS,LPUART1_CTS,,QUADSPI_BK1_IO3,LCD_SEG3,TIM1_BKIN_COMP2,TIM8_BKIN_COMP2,TIM16_CH1,EVENTOUT,ADC12_IN11,, -PortA,PA7,,TIM1_CH1N,TIM3_CH2,TIM8_CH1N,I2C3_SCL,SPI1_MOSI,,,,,QUADSPI_BK1_IO2,LCD_SEG4,,,TIM17_CH1,EVENTOUT,ADC12_IN12,, -PortA,PA8,MCO,TIM1_CH1,,,,,,USART1_CK,,,OTG_FS_SOF,LCD_COM0,SWPMI1_IO,SAI1_SCK_A,LPTIM2_OUT,EVENTOUT,,, -PortA,PA9,,TIM1_CH2,,SPI2_SCK,I2C1_SCL,DCMI_D0,,USART1_TX,,,,LCD_COM1,,SAI1_FS_A,TIM15_BKIN,EVENTOUT,,, -PortA,PA10,,TIM1_CH3,,,I2C1_SDA,DCMI_D1,,USART1_RX,,,OTG_FS_ID,LCD_COM2,,SAI1_SD_A,TIM17_BKIN,EVENTOUT,,, -PortA,PA11,,TIM1_CH4,TIM1_BKIN2,,,SPI1_MISO,,USART1_CTS,,CAN1_RX,OTG_FS_DM,,TIM1_BKIN2_COMP1,,,EVENTOUT,,, -PortA,PA12,,TIM1_ETR,,,,SPI1_MOSI,,USART1_RTS/USART1_DE,,CAN1_TX,OTG_FS_DP,,,,,EVENTOUT,,, -PortA,PA13,JTMS/SWDIO,IR_OUT,,,,,,,,,OTG_FS_NOE,,SWPMI1_TX,SAI1_SD_B,,EVENTOUT,,, -PortA,PA14,JTCK/SWCLK,LPTIM1_OUT,,,I2C1_SMBA,I2C4_SMBA,,,,,OTG_FS_SOF,,SWPMI1_RX,SAI1_FS_B,,EVENTOUT,,, -PortA,PA15,JTDI,TIM2_CH1,TIM2_ETR,USART2_RX,,SPI1_NSS,SPI3_NSS,USART3_RTS/USART3_DE,UART4_RTS/UART4_DE,TSC_G3_IO1,,LCD_SEG17,SWPMI1_SUSPEND,SAI2_FS_B,,EVENTOUT,,, -PortB,PB0,,TIM1_CH2N,TIM3_CH3,TIM8_CH2N,,SPI1_NSS,,USART3_CK,,,QUADSPI_BK1_IO1,LCD_SEG5,COMP1_OUT,SAI1_EXTCLK,,EVENTOUT,ADC12_IN15,, -PortB,PB1,,TIM1_CH3N,TIM3_CH4,TIM8_CH3N,,,DFSDM1_DATIN0,USART3_RTS/USART3_DE,LPUART1_RTS/LPUART1_DE,,QUADSPI_BK1_IO0,LCD_SEG6,,,LPTIM2_IN1,EVENTOUT,ADC12_IN16,COMP1_INM, -PortB,PB2,RTC_OUT,LPTIM1_OUT,,,I2C3_SMBA,,DFSDM1_CKIN0,,,,,LCD_VLCD,,,,EVENTOUT,,COMP1_INP, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,SPI3_SCK,USART1_RTS/USART1_DE,,,OTG_FS_CRS_SYNC,LCD_SEG7,,SAI1_SCK_B,,EVENTOUT,,COMP2_INM, -PortB,PB4,NJTRST,,TIM3_CH1,,I2C3_SDA,SPI1_MISO,SPI3_MISO,USART1_CTS,UART5_RTS/UART5_DE,TSC_G2_IO1,DCMI_D12,LCD_SEG8,,SAI1_MCLK_B,TIM17_BKIN,EVENTOUT,,COMP2_INP, -PortB,PB5,,LPTIM1_IN1,TIM3_CH2,CAN2_RX,I2C1_SMBA,SPI1_MOSI,SPI3_MOSI,USART1_CK,UART5_CTS,TSC_G2_IO2,DCMI_D10,LCD_SEG9,COMP2_OUT,SAI1_SD_B,TIM16_BKIN,EVENTOUT,,, -PortB,PB6,,LPTIM1_ETR,TIM4_CH1,TIM8_BKIN2,I2C1_SCL,I2C4_SCL,DFSDM1_DATIN5,USART1_TX,CAN2_TX,TSC_G2_IO3,DCMI_D5,,TIM8_BKIN2_COMP2,SAI1_FS_B,TIM16_CH1N,EVENTOUT,,COMP2_INP, -PortB,PB7,,LPTIM1_IN2,TIM4_CH2,TIM8_BKIN,I2C1_SDA,I2C4_SDA,DFSDM1_CKIN5,USART1_RX,UART4_CTS,TSC_G2_IO4,DCMI_VSYNC,LCD_SEG21,FMC_NL,TIM8_BKIN_COMP1,TIM17_CH1N,EVENTOUT,,COMP2_INM, -PortB,PB8,,,TIM4_CH3,,I2C1_SCL,,DFSDM1_DATIN6,,,CAN1_RX,DCMI_D6,LCD_SEG16,SDMMC1_D4,SAI1_MCLK_A,TIM16_CH1,EVENTOUT,,, -PortB,PB9,,IR_OUT,TIM4_CH4,,I2C1_SDA,SPI2_NSS,DFSDM1_CKIN6,,,CAN1_TX,DCMI_D7,LCD_COM3,SDMMC1_D5,SAI1_FS_A,TIM17_CH1,EVENTOUT,,, -PortB,PB10,,TIM2_CH3,,I2C4_SCL,I2C2_SCL,SPI2_SCK,DFSDM1_DATIN7,USART3_TX,LPUART1_RX,TSC_SYNC,QUADSPI_CLK,LCD_SEG10,COMP1_OUT,SAI1_SCK_A,,EVENTOUT,,, -PortB,PB11,,TIM2_CH4,,I2C4_SDA,I2C2_SDA,,DFSDM1_CKIN7,USART3_RX,LPUART1_TX,,QUADSPI_BK1_NCS,LCD_SEG11,COMP2_OUT,,,EVENTOUT,,, -PortB,PB12,,TIM1_BKIN,,TIM1_BKIN_COMP2,I2C2_SMBA,SPI2_NSS,DFSDM1_DATIN1,USART3_CK,LPUART1_RTS/LPUART1_DE,TSC_G1_IO1,CAN2_RX,LCD_SEG12,SWPMI1_IO,SAI2_FS_A,TIM15_BKIN,EVENTOUT,,, -PortB,PB13,,TIM1_CH1N,,,I2C2_SCL,SPI2_SCK,DFSDM1_CKIN1,USART3_CTS,LPUART1_CTS,TSC_G1_IO2,CAN2_TX,LCD_SEG13,SWPMI1_TX,SAI2_SCK_A,TIM15_CH1N,EVENTOUT,,, -PortB,PB14,,TIM1_CH2N,,TIM8_CH2N,I2C2_SDA,SPI2_MISO,DFSDM1_DATIN2,USART3_RTS/USART3_DE,,TSC_G1_IO3,,LCD_SEG14,SWPMI1_RX,SAI2_MCLK_A,TIM15_CH1,EVENTOUT,,, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,TIM8_CH3N,,SPI2_MOSI,DFSDM1_CKIN2,,,TSC_G1_IO4,,LCD_SEG15,SWPMI1_SUSPEND,SAI2_SD_A,TIM15_CH2,EVENTOUT,,, -PortC,PC0,,LPTIM1_IN1,I2C4_SCL,,I2C3_SCL,,DFSDM1_DATIN4,,LPUART1_RX,,,LCD_SEG18,,,LPTIM2_IN1,EVENTOUT,ADC123_IN1,, -PortC,PC1,TRACED0,LPTIM1_OUT,I2C4_SDA,SPI2_MOSI,I2C3_SDA,,DFSDM1_CKIN4,,LPUART1_TX,,QUADSPI_BK2_IO0,LCD_SEG19,,SAI1_SD_A,,EVENTOUT,ADC123_IN2,, -PortC,PC2,,LPTIM1_IN2,,,,SPI2_MISO,DFSDM1_CKOUT,,,,QUADSPI_BK2_IO1,LCD_SEG20,,,,EVENTOUT,ADC123_IN3,, -PortC,PC3,,LPTIM1_ETR,,,,SPI2_MOSI,,,,,QUADSPI_BK2_IO2,LCD_VLCD,,SAI1_SD_A,LPTIM2_ETR,EVENTOUT,ADC123_IN4,, -PortC,PC4,,,,,,,,USART3_TX,,,QUADSPI_BK2_IO3,LCD_SEG22,,,,EVENTOUT,ADC12_IN13,COMP1_INM, -PortC,PC5,,,,,,,,USART3_RX,,,,LCD_SEG23,,,,EVENTOUT,ADC12_IN14,COMP1_INP, -PortC,PC6,,,TIM3_CH1,TIM8_CH1,,,DFSDM1_CKIN3,,,TSC_G4_IO1,DCMI_D0,LCD_SEG24,SDMMC1_D6,SAI2_MCLK_A,,EVENTOUT,,, -PortC,PC7,,,TIM3_CH2,TIM8_CH2,,,DFSDM1_DATIN3,,,TSC_G4_IO2,DCMI_D1,LCD_SEG25,SDMMC1_D7,SAI2_MCLK_B,,EVENTOUT,,, -PortC,PC8,,,TIM3_CH3,TIM8_CH3,,,,,,TSC_G4_IO3,DCMI_D2,LCD_SEG26,SDMMC1_D0,,,EVENTOUT,,, -PortC,PC9,,TIM8_BKIN2,TIM3_CH4,TIM8_CH4,DCMI_D3,,I2C3_SDA,,,TSC_G4_IO4,OTG_FS_NOE,LCD_SEG27,SDMMC1_D1,SAI2_EXTCLK,TIM8_BKIN2_COMP1,EVENTOUT,,, -PortC,PC10,TRACED1,,,,,,SPI3_SCK,USART3_TX,UART4_TX,TSC_G3_IO2,DCMI_D8,LCD_COM4/LCD_SEG28/LCD_SEG40,SDMMC1_D2,SAI2_SCK_B,,EVENTOUT,,, -PortC,PC11,,,,,,QUADSPI_BK2_NCS,SPI3_MISO,USART3_RX,UART4_RX,TSC_G3_IO3,DCMI_D4,LCD_COM5/LCD_SEG29/LCD_SEG41,SDMMC1_D3,SAI2_MCLK_B,,EVENTOUT,,, -PortC,PC12,TRACED3,,,,,,SPI3_MOSI,USART3_CK,UART5_TX,TSC_G3_IO4,DCMI_D9,LCD_COM6/LCD_SEG30/LCD_SEG42,SDMMC1_CK,SAI2_SD_B,,EVENTOUT,,, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT,,, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT,,, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT,,, -PortD,PD0,,,,,,SPI2_NSS,DFSDM1_DATIN7,,,CAN1_RX,,,FMC_D2,,,EVENTOUT,,, -PortD,PD1,,,,,,SPI2_SCK,DFSDM1_CKIN7,,,CAN1_TX,,,FMC_D3,,,EVENTOUT,,, -PortD,PD2,TRACED2,,TIM3_ETR,,,,,USART3_RTS/USART3_DE,UART5_RX,TSC_SYNC,DCMI_D11,LCD_COM7/LCD_SEG31/LCD_SEG43,SDMMC1_CMD,,,EVENTOUT,,, -PortD,PD3,,,,SPI2_SCK,DCMI_D5,SPI2_MISO,DFSDM1_DATIN0,USART2_CTS,,,QUADSPI_BK2_NCS,,FMC_CLK,,,EVENTOUT,,, -PortD,PD4,,,,,,SPI2_MOSI,DFSDM1_CKIN0,USART2_RTS/USART2_DE,,,QUADSPI_BK2_IO0,,FMC_NOE,,,EVENTOUT,,, -PortD,PD5,,,,,,,,USART2_TX,,,QUADSPI_BK2_IO1,,FMC_NWE,,,EVENTOUT,,, -PortD,PD6,,,,,DCMI_D10,QUADSPI_BK2_IO1,DFSDM1_DATIN1,USART2_RX,,,QUADSPI_BK2_IO2,,FMC_NWAIT,SAI1_SD_A,,EVENTOUT,,, -PortD,PD7,,,,,,,DFSDM1_CKIN1,USART2_CK,,,QUADSPI_BK2_IO3,,FMC_NE1,,,EVENTOUT,,, -PortD,PD8,,,,,,,,USART3_TX,,,DCMI_HSYNC,LCD_SEG28,FMC_D13,,,EVENTOUT,,, -PortD,PD9,,,,,,,,USART3_RX,,,DCMI_PIXCLK,LCD_SEG29,FMC_D14,SAI2_MCLK_A,,EVENTOUT,,, -PortD,PD10,,,,,,,,USART3_CK,,TSC_G6_IO1,,LCD_SEG30,FMC_D15,SAI2_SCK_A,,EVENTOUT,,, -PortD,PD11,,,,,I2C4_SMBA,,,USART3_CTS,,TSC_G6_IO2,,LCD_SEG31,FMC_A16,SAI2_SD_A,LPTIM2_ETR,EVENTOUT,,, -PortD,PD12,,,TIM4_CH1,,I2C4_SCL,,,USART3_RTS/USART3_DE,,TSC_G6_IO3,,LCD_SEG32,FMC_A17,SAI2_FS_A,LPTIM2_IN1,EVENTOUT,,, -PortD,PD13,,,TIM4_CH2,,I2C4_SDA,,,,,TSC_G6_IO4,,LCD_SEG33,FMC_A18,,LPTIM2_OUT,EVENTOUT,,, -PortD,PD14,,,TIM4_CH3,,,,,,,,,LCD_SEG34,FMC_D0,,,EVENTOUT,,, -PortD,PD15,,,TIM4_CH4,,,,,,,,,LCD_SEG35,FMC_D1,,,EVENTOUT,,, -PortE,PE0,,,TIM4_ETR,,,,,,,,DCMI_D2,LCD_SEG36,FMC_NBL0,,TIM16_CH1,EVENTOUT,,, -PortE,PE1,,,,,,,,,,,DCMI_D3,LCD_SEG37,FMC_NBL1,,TIM17_CH1,EVENTOUT,,, -PortE,PE2,TRACECLK,,TIM3_ETR,,,,,,,TSC_G7_IO1,,LCD_SEG38,FMC_A23,SAI1_MCLK_A,,EVENTOUT,,, -PortE,PE3,TRACED0,,TIM3_CH1,,,,,,,TSC_G7_IO2,,LCD_SEG39,FMC_A19,SAI1_SD_B,,EVENTOUT,,, -PortE,PE4,TRACED1,,TIM3_CH2,,,,DFSDM1_DATIN3,,,TSC_G7_IO3,DCMI_D4,,FMC_A20,SAI1_FS_A,,EVENTOUT,,, -PortE,PE5,TRACED2,,TIM3_CH3,,,,DFSDM1_CKIN3,,,TSC_G7_IO4,DCMI_D6,,FMC_A21,SAI1_SCK_A,,EVENTOUT,,, -PortE,PE6,TRACED3,,TIM3_CH4,,,,,,,,DCMI_D7,,FMC_A22,SAI1_SD_A,,EVENTOUT,,, -PortE,PE7,,TIM1_ETR,,,,,DFSDM1_DATIN2,,,,,,FMC_D4,SAI1_SD_B,,EVENTOUT,,, -PortE,PE8,,TIM1_CH1N,,,,,DFSDM1_CKIN2,,,,,,FMC_D5,SAI1_SCK_B,,EVENTOUT,,, -PortE,PE9,,TIM1_CH1,,,,,DFSDM1_CKOUT,,,,,,FMC_D6,SAI1_FS_B,,EVENTOUT,,, -PortE,PE10,,TIM1_CH2N,,,,,DFSDM1_DATIN4,,,TSC_G5_IO1,QUADSPI_CLK,,FMC_D7,SAI1_MCLK_B,,EVENTOUT,,, -PortE,PE11,,TIM1_CH2,,,,,DFSDM1_CKIN4,,,TSC_G5_IO2,QUADSPI_BK1_NCS,,FMC_D8,,,EVENTOUT,,, -PortE,PE12,,TIM1_CH3N,,,,SPI1_NSS,DFSDM1_DATIN5,,,TSC_G5_IO3,QUADSPI_BK1_IO0,,FMC_D9,,,EVENTOUT,,, -PortE,PE13,,TIM1_CH3,,,,SPI1_SCK,DFSDM1_CKIN5,,,TSC_G5_IO4,QUADSPI_BK1_IO1,,FMC_D10,,,EVENTOUT,,, -PortE,PE14,,TIM1_CH4,TIM1_BKIN2,TIM1_BKIN2_COMP2,,SPI1_MISO,,,,,QUADSPI_BK1_IO2,,FMC_D11,,,EVENTOUT,,, -PortE,PE15,,TIM1_BKIN,,TIM1_BKIN_COMP1,,SPI1_MOSI,,,,,QUADSPI_BK1_IO3,,FMC_D12,,,EVENTOUT,,, -PortF,PF0,,,,,I2C2_SDA,,,,,,,,FMC_A0,,,EVENTOUT,,, -PortF,PF1,,,,,I2C2_SCL,,,,,,,,FMC_A1,,,EVENTOUT,,, -PortF,PF2,,,,,I2C2_SMBA,,,,,,,,FMC_A2,,,EVENTOUT,,, -PortF,PF3,,,,,,,,,,,,,FMC_A3,,,EVENTOUT,ADC3_IN6,, -PortF,PF4,,,,,,,,,,,,,FMC_A4,,,EVENTOUT,ADC3_IN7,, -PortF,PF5,,,,,,,,,,,,,FMC_A5,,,EVENTOUT,ADC3_IN8,, -PortF,PF6,,TIM5_ETR,TIM5_CH1,,,,,,,,QUADSPI_BK1_IO3,,,SAI1_SD_B,,EVENTOUT,ADC3_IN9,, -PortF,PF7,,,TIM5_CH2,,,,,,,,QUADSPI_BK1_IO2,,,SAI1_MCLK_B,,EVENTOUT,ADC3_IN10,, -PortF,PF8,,,TIM5_CH3,,,,,,,,QUADSPI_BK1_IO0,,,SAI1_SCK_B,,EVENTOUT,ADC3_IN11,, -PortF,PF9,,,TIM5_CH4,,,,,,,,QUADSPI_BK1_IO1,,,SAI1_FS_B,TIM15_CH1,EVENTOUT,ADC3_IN12,, -PortF,PF10,,,,QUADSPI_CLK,,,,,,,DCMI_D11,,,,TIM15_CH2,EVENTOUT,ADC3_IN13,, -PortF,PF11,,,,,,,,,,,DCMI_D12,,,,,EVENTOUT,,, -PortF,PF12,,,,,,,,,,,,,FMC_A6,,,EVENTOUT,,, -PortF,PF13,,,,,I2C4_SMBA,,DFSDM1_DATIN6,,,,,,FMC_A7,,,EVENTOUT,,, -PortF,PF14,,,,,I2C4_SCL,,DFSDM1_CKIN6,,,TSC_G8_IO1,,,FMC_A8,,,EVENTOUT,,, -PortF,PF15,,,,,I2C4_SDA,,,,,TSC_G8_IO2,,,FMC_A9,,,EVENTOUT,,, -PortG,PG0,,,,,,,,,,TSC_G8_IO3,,,FMC_A10,,,EVENTOUT,,, -PortG,PG1,,,,,,,,,,TSC_G8_IO4,,,FMC_A11,,,EVENTOUT,,, -PortG,PG2,,,,,,SPI1_SCK,,,,,,,FMC_A12,SAI2_SCK_B,,EVENTOUT,,, -PortG,PG3,,,,,,SPI1_MISO,,,,,,,FMC_A13,SAI2_FS_B,,EVENTOUT,,, -PortG,PG4,,,,,,SPI1_MOSI,,,,,,,FMC_A14,SAI2_MCLK_B,,EVENTOUT,,, -PortG,PG5,,,,,,SPI1_NSS,,,LPUART1_CTS,,,,FMC_A15,SAI2_SD_B,,EVENTOUT,,, -PortG,PG6,,,,,I2C3_SMBA,,,,LPUART1_RTS/LPUART1_DE,,,,,,,EVENTOUT,,, -PortG,PG7,,,,,I2C3_SCL,,,,LPUART1_TX,,,,FMC_INT,SAI1_MCLK_A,,EVENTOUT,,, -PortG,PG8,,,,,I2C3_SDA,,,,LPUART1_RX,,,,,,,EVENTOUT,,, -PortG,PG9,,,,,,,SPI3_SCK,USART1_TX,,,,,FMC_NCE/FMC_NE2,SAI2_SCK_A,TIM15_CH1N,EVENTOUT,,, -PortG,PG10,,LPTIM1_IN1,,,,,SPI3_MISO,USART1_RX,,,,,FMC_NE3,SAI2_FS_A,TIM15_CH1,EVENTOUT,,, -PortG,PG11,,LPTIM1_IN2,,,,,SPI3_MOSI,USART1_CTS,,,,,,SAI2_MCLK_A,TIM15_CH2,EVENTOUT,,, -PortG,PG12,,LPTIM1_ETR,,,,,SPI3_NSS,USART1_RTS/USART1_DE,,,,,FMC_NE4,SAI2_SD_A,,EVENTOUT,,, -PortG,PG13,,,,,I2C1_SDA,,,USART1_CK,,,,,FMC_A24,,,EVENTOUT,,, -PortG,PG14,,,,,I2C1_SCL,,,,,,,,FMC_A25,,,EVENTOUT,,, -PortG,PG15,,LPTIM1_OUT,,,I2C1_SMBA,,,,,,DCMI_D13,,,,,EVENTOUT,,, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT,,, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT,,, -PortH,PH2,,,,QUADSPI_BK2_IO0,,,,,,,,,,,,EVENTOUT,,, -PortH,PH3,,,,,,,,,,,,,,,,EVENTOUT,,, -PortH,PH4,,,,,I2C2_SCL,,,,,,,,,,,EVENTOUT,,, -PortH,PH5,,,,,I2C2_SDA,,,,,,DCMI_PIXCLK,,,,,EVENTOUT,,, -PortH,PH6,,,,,I2C2_SMBA,,,,,,DCMI_D8,,,,,EVENTOUT,,, -PortH,PH7,,,,,I2C3_SCL,,,,,,DCMI_D9,,,,,EVENTOUT,,, -PortH,PH8,,,,,I2C3_SDA,,,,,,DCMI_HSYNC,,,,,EVENTOUT,,, -PortH,PH9,,,,,I2C3_SMBA,,,,,,DCMI_D0,,,,,EVENTOUT,,, -PortH,PH10,,,TIM5_CH1,,,,,,,,DCMI_D1,,,,,EVENTOUT,,, -PortH,PH11,,,TIM5_CH2,,,,,,,,DCMI_D2,,,,,EVENTOUT,,, -PortH,PH12,,,TIM5_CH3,,,,,,,,DCMI_D3,,,,,EVENTOUT,,, -PortH,PH13,,,,TIM8_CH1N,,,,,,CAN1_TX,,,,,,EVENTOUT,,, -PortH,PH14,,,,TIM8_CH2N,,,,,,,DCMI_D4,,,,,EVENTOUT,,, -PortH,PH15,,,,TIM8_CH3N,,,,,,,DCMI_D11,,,,,EVENTOUT,,, -PortI,PI0,,,TIM5_CH4,,,SPI2_NSS,,,,,DCMI_D13,,,,,EVENTOUT,,, -PortI,PI1,,,,,,SPI2_SCK,,,,,DCMI_D8,,,,,EVENTOUT,,, -PortI,PI2,,,,TIM8_CH4,,SPI2_MISO,,,,,DCMI_D9,,,,,EVENTOUT,,, -PortI,PI3,,,,TIM8_ETR,,SPI2_MOSI,,,,,DCMI_D10,,,,,EVENTOUT,,, -PortI,PI4,,,,TIM8_BKIN,,,,,,,DCMI_D5,,,,,EVENTOUT,,, -PortI,PI5,,,,TIM8_CH1,,,,,,,DCMI_VSYNC,,,,,EVENTOUT,,, -PortI,PI6,,,,TIM8_CH2,,,,,,,DCMI_D6,,,,,EVENTOUT,,, -PortI,PI7,,,,TIM8_CH3,,,,,,,DCMI_D7,,,,,EVENTOUT,,, -PortI,PI8,,,,,,,,,,,DCMI_D12,,,,,EVENTOUT,,, -PortI,PI9,,,,,,,,,,CAN1_RX,,,,,,EVENTOUT,,, -PortI,PI10,,,,,,,,,,,,,,,,EVENTOUT,,, -PortI,PI11,,,,,,,,,,,,,,,,EVENTOUT,,, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/TIM5/TIM8/LPTIM1,TIM1/TIM2/TIM3/TIM4/TIM5,TIM8 ,I2C1/I2C2/I2C3,SPI1/SPI2 ,SPI3/DFSDM ,USART1/USART2/USART3,UART4/UART5/LPUART1 ,CAN1/TSC ,OTG_FS/QUADSPI ,LCD ,SDMMC1/COMP1/COMP2/FMC/SWPMI1,SAI1/SAI2 ,TIM2/TIM15/TIM16/TIM17/LPTIM2,EVENTOUT,ADC +PortA,PA0 , ,TIM2_CH1 ,TIM5_CH1 ,TIM8_ETR , , , ,USART2_CTS ,UART4_TX , , , , ,SAI1_EXTCLK ,TIM2_ETR ,EVENTOUT,ADC12_IN5 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 , ,I2C1_SMBA ,SPI1_SCK , ,USART2_RTS/USART2_DE,UART4_RX , , ,LCD_SEG0 , , ,TIM15_CH1N ,EVENTOUT,ADC12_IN6 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 , , , , ,USART2_TX ,LPUART1_TX , ,QUADSPI_BK1_NCS,LCD_SEG1 , ,SAI2_EXTCLK ,TIM15_CH1 ,EVENTOUT,ADC12_IN7 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 , , , , ,USART2_RX ,LPUART1_RX , ,QUADSPI_CLK ,LCD_SEG2 , ,SAI1_MCLK_A ,TIM15_CH2 ,EVENTOUT,ADC12_IN8 +PortA,PA4 , , , , , ,SPI1_NSS ,SPI3_NSS ,USART2_CK , , ,DCMI_HSYNC , , ,SAI1_FS_B ,LPTIM2_OUT ,EVENTOUT,ADC12_IN9 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR ,TIM8_CH1N , ,SPI1_SCK , , , , , , , , ,LPTIM2_ETR ,EVENTOUT,ADC12_IN10 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN ,DCMI_PIXCLK ,SPI1_MISO , ,USART3_CTS ,LPUART1_CTS , ,QUADSPI_BK1_IO3,LCD_SEG3 ,TIM1_BKIN_COMP2 ,TIM8_BKIN_COMP2,TIM16_CH1 ,EVENTOUT,ADC12_IN11 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N ,I2C3_SCL ,SPI1_MOSI , , , , ,QUADSPI_BK1_IO2,LCD_SEG4 , , ,TIM17_CH1 ,EVENTOUT,ADC12_IN12 +PortA,PA8 ,MCO ,TIM1_CH1 , , , , , ,USART1_CK , , ,OTG_FS_SOF ,LCD_COM0 ,SWPMI1_IO ,SAI1_SCK_A ,LPTIM2_OUT ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , ,SPI2_SCK ,I2C1_SCL ,DCMI_D0 , ,USART1_TX , , , ,LCD_COM1 , ,SAI1_FS_A ,TIM15_BKIN ,EVENTOUT, +PortA,PA10, ,TIM1_CH3 , , ,I2C1_SDA ,DCMI_D1 , ,USART1_RX , , ,OTG_FS_ID ,LCD_COM2 , ,SAI1_SD_A ,TIM17_BKIN ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,TIM1_BKIN2 , , ,SPI1_MISO , ,USART1_CTS , ,CAN1_RX ,OTG_FS_DM , ,TIM1_BKIN2_COMP1 , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , ,SPI1_MOSI , ,USART1_RTS/USART1_DE, ,CAN1_TX ,OTG_FS_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO ,IR_OUT , , , , , , , , ,OTG_FS_NOE , ,SWPMI1_TX ,SAI1_SD_B , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK ,LPTIM1_OUT , , ,I2C1_SMBA ,I2C4_SMBA , , , , ,OTG_FS_SOF , ,SWPMI1_RX ,SAI1_FS_B , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM2_ETR ,USART2_RX , ,SPI1_NSS ,SPI3_NSS ,USART3_RTS/USART3_DE,UART4_RTS/UART4_DE ,TSC_G3_IO1, ,LCD_SEG17 ,SWPMI1_SUSPEND ,SAI2_FS_B , ,EVENTOUT, +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , ,SPI1_NSS , ,USART3_CK , , ,QUADSPI_BK1_IO1,LCD_SEG5 ,COMP1_OUT ,SAI1_EXTCLK , ,EVENTOUT,ADC12_IN15 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,DFSDM1_DATIN0,USART3_RTS/USART3_DE,LPUART1_RTS/LPUART1_DE, ,QUADSPI_BK1_IO0,LCD_SEG6 , , ,LPTIM2_IN1 ,EVENTOUT,ADC12_IN16 +PortB,PB2 ,RTC_OUT ,LPTIM1_OUT , , ,I2C3_SMBA , ,DFSDM1_CKIN0 , , , , ,LCD_VLCD , , , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,SPI3_SCK ,USART1_RTS/USART1_DE, , ,OTG_FS_CRS_SYNC,LCD_SEG7 , ,SAI1_SCK_B , ,EVENTOUT, +PortB,PB4 ,NJTRST , ,TIM3_CH1 , ,I2C3_SDA ,SPI1_MISO ,SPI3_MISO ,USART1_CTS ,UART5_RTS/UART5_DE ,TSC_G2_IO1,DCMI_D12 ,LCD_SEG8 , ,SAI1_MCLK_B ,TIM17_BKIN ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 ,TIM3_CH2 ,CAN2_RX ,I2C1_SMBA ,SPI1_MOSI ,SPI3_MOSI ,USART1_CK ,UART5_CTS ,TSC_G2_IO2,DCMI_D10 ,LCD_SEG9 ,COMP2_OUT ,SAI1_SD_B ,TIM16_BKIN ,EVENTOUT, +PortB,PB6 , ,LPTIM1_ETR ,TIM4_CH1 ,TIM8_BKIN2 ,I2C1_SCL ,I2C4_SCL ,DFSDM1_DATIN5,USART1_TX ,CAN2_TX ,TSC_G2_IO3,DCMI_D5 , ,TIM8_BKIN2_COMP2 ,SAI1_FS_B ,TIM16_CH1N ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 ,TIM4_CH2 ,TIM8_BKIN ,I2C1_SDA ,I2C4_SDA ,DFSDM1_CKIN5 ,USART1_RX ,UART4_CTS ,TSC_G2_IO4,DCMI_VSYNC ,LCD_SEG21 ,FMC_NL ,TIM8_BKIN_COMP1,TIM17_CH1N ,EVENTOUT, +PortB,PB8 , , ,TIM4_CH3 , ,I2C1_SCL , ,DFSDM1_DATIN6, , ,CAN1_RX ,DCMI_D6 ,LCD_SEG16 ,SDMMC1_D4 ,SAI1_MCLK_A ,TIM16_CH1 ,EVENTOUT, +PortB,PB9 , ,IR_OUT ,TIM4_CH4 , ,I2C1_SDA ,SPI2_NSS ,DFSDM1_CKIN6 , , ,CAN1_TX ,DCMI_D7 ,LCD_COM3 ,SDMMC1_D5 ,SAI1_FS_A ,TIM17_CH1 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , ,I2C4_SCL ,I2C2_SCL ,SPI2_SCK ,DFSDM1_DATIN7,USART3_TX ,LPUART1_RX ,TSC_SYNC ,QUADSPI_CLK ,LCD_SEG10 ,COMP1_OUT ,SAI1_SCK_A , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , ,I2C4_SDA ,I2C2_SDA , ,DFSDM1_CKIN7 ,USART3_RX ,LPUART1_TX , ,QUADSPI_BK1_NCS,LCD_SEG11 ,COMP2_OUT , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,TIM1_BKIN_COMP2 ,I2C2_SMBA ,SPI2_NSS ,DFSDM1_DATIN1,USART3_CK ,LPUART1_RTS/LPUART1_DE,TSC_G1_IO1,CAN2_RX ,LCD_SEG12 ,SWPMI1_IO ,SAI2_FS_A ,TIM15_BKIN ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2C2_SCL ,SPI2_SCK ,DFSDM1_CKIN1 ,USART3_CTS ,LPUART1_CTS ,TSC_G1_IO2,CAN2_TX ,LCD_SEG13 ,SWPMI1_TX ,SAI2_SCK_A ,TIM15_CH1N ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,TIM8_CH2N ,I2C2_SDA ,SPI2_MISO ,DFSDM1_DATIN2,USART3_RTS/USART3_DE, ,TSC_G1_IO3, ,LCD_SEG14 ,SWPMI1_RX ,SAI2_MCLK_A ,TIM15_CH1 ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , ,TIM8_CH3N , ,SPI2_MOSI ,DFSDM1_CKIN2 , , ,TSC_G1_IO4, ,LCD_SEG15 ,SWPMI1_SUSPEND ,SAI2_SD_A ,TIM15_CH2 ,EVENTOUT, +PortC,PC0 , ,LPTIM1_IN1 ,I2C4_SCL , ,I2C3_SCL , ,DFSDM1_DATIN4, ,LPUART1_RX , , ,LCD_SEG18 , , ,LPTIM2_IN1 ,EVENTOUT,ADC123_IN1 +PortC,PC1 ,TRACED0 ,LPTIM1_OUT ,I2C4_SDA ,SPI2_MOSI ,I2C3_SDA , ,DFSDM1_CKIN4 , ,LPUART1_TX , ,QUADSPI_BK2_IO0,LCD_SEG19 , ,SAI1_SD_A , ,EVENTOUT,ADC123_IN2 +PortC,PC2 , ,LPTIM1_IN2 , , , ,SPI2_MISO ,DFSDM1_CKOUT , , , ,QUADSPI_BK2_IO1,LCD_SEG20 , , , ,EVENTOUT,ADC123_IN3 +PortC,PC3 , ,LPTIM1_ETR , , , ,SPI2_MOSI , , , , ,QUADSPI_BK2_IO2,LCD_VLCD , ,SAI1_SD_A ,LPTIM2_ETR ,EVENTOUT,ADC123_IN4 +PortC,PC4 , , , , , , , ,USART3_TX , , ,QUADSPI_BK2_IO3,LCD_SEG22 , , , ,EVENTOUT,ADC12_IN13 +PortC,PC5 , , , , , , , ,USART3_RX , , , ,LCD_SEG23 , , , ,EVENTOUT,ADC12_IN14 +PortC,PC6 , , ,TIM3_CH1 ,TIM8_CH1 , , ,DFSDM1_CKIN3 , , ,TSC_G4_IO1,DCMI_D0 ,LCD_SEG24 ,SDMMC1_D6 ,SAI2_MCLK_A , ,EVENTOUT, +PortC,PC7 , , ,TIM3_CH2 ,TIM8_CH2 , , ,DFSDM1_DATIN3, , ,TSC_G4_IO2,DCMI_D1 ,LCD_SEG25 ,SDMMC1_D7 ,SAI2_MCLK_B , ,EVENTOUT, +PortC,PC8 , , ,TIM3_CH3 ,TIM8_CH3 , , , , , ,TSC_G4_IO3,DCMI_D2 ,LCD_SEG26 ,SDMMC1_D0 , , ,EVENTOUT, +PortC,PC9 , ,TIM8_BKIN2 ,TIM3_CH4 ,TIM8_CH4 ,DCMI_D3 , ,I2C3_SDA , , ,TSC_G4_IO4,OTG_FS_NOE ,LCD_SEG27 ,SDMMC1_D1 ,SAI2_EXTCLK ,TIM8_BKIN2_COMP1 ,EVENTOUT, +PortC,PC10,TRACED1 , , , , , ,SPI3_SCK ,USART3_TX ,UART4_TX ,TSC_G3_IO2,DCMI_D8 ,LCD_COM4/LCD_SEG28/LCD_SEG40,SDMMC1_D2 ,SAI2_SCK_B , ,EVENTOUT, +PortC,PC11, , , , , ,QUADSPI_BK2_NCS,SPI3_MISO ,USART3_RX ,UART4_RX ,TSC_G3_IO3,DCMI_D4 ,LCD_COM5/LCD_SEG29/LCD_SEG41,SDMMC1_D3 ,SAI2_MCLK_B , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , ,SPI3_MOSI ,USART3_CK ,UART5_TX ,TSC_G3_IO4,DCMI_D9 ,LCD_COM6/LCD_SEG30/LCD_SEG42,SDMMC1_CK ,SAI2_SD_B , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , ,SPI2_NSS ,DFSDM1_DATIN7, , ,CAN1_RX , , ,FMC_D2 , , ,EVENTOUT, +PortD,PD1 , , , , , ,SPI2_SCK ,DFSDM1_CKIN7 , , ,CAN1_TX , , ,FMC_D3 , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , ,TIM3_ETR , , , , ,USART3_RTS/USART3_DE,UART5_RX ,TSC_SYNC ,DCMI_D11 ,LCD_COM7/LCD_SEG31/LCD_SEG43,SDMMC1_CMD , , ,EVENTOUT, +PortD,PD3 , , , ,SPI2_SCK ,DCMI_D5 ,SPI2_MISO ,DFSDM1_DATIN0,USART2_CTS , , ,QUADSPI_BK2_NCS, ,FMC_CLK , , ,EVENTOUT, +PortD,PD4 , , , , , ,SPI2_MOSI ,DFSDM1_CKIN0 ,USART2_RTS/USART2_DE, , ,QUADSPI_BK2_IO0, ,FMC_NOE , , ,EVENTOUT, +PortD,PD5 , , , , , , , ,USART2_TX , , ,QUADSPI_BK2_IO1, ,FMC_NWE , , ,EVENTOUT, +PortD,PD6 , , , , ,DCMI_D10 ,QUADSPI_BK2_IO1,DFSDM1_DATIN1,USART2_RX , , ,QUADSPI_BK2_IO2, ,FMC_NWAIT ,SAI1_SD_A , ,EVENTOUT, +PortD,PD7 , , , , , , ,DFSDM1_CKIN1 ,USART2_CK , , ,QUADSPI_BK2_IO3, ,FMC_NE1 , , ,EVENTOUT, +PortD,PD8 , , , , , , , ,USART3_TX , , ,DCMI_HSYNC ,LCD_SEG28 ,FMC_D13 , , ,EVENTOUT, +PortD,PD9 , , , , , , , ,USART3_RX , , ,DCMI_PIXCLK ,LCD_SEG29 ,FMC_D14 ,SAI2_MCLK_A , ,EVENTOUT, +PortD,PD10, , , , , , , ,USART3_CK , ,TSC_G6_IO1, ,LCD_SEG30 ,FMC_D15 ,SAI2_SCK_A , ,EVENTOUT, +PortD,PD11, , , , ,I2C4_SMBA , , ,USART3_CTS , ,TSC_G6_IO2, ,LCD_SEG31 ,FMC_A16 ,SAI2_SD_A ,LPTIM2_ETR ,EVENTOUT, +PortD,PD12, , ,TIM4_CH1 , ,I2C4_SCL , , ,USART3_RTS/USART3_DE, ,TSC_G6_IO3, ,LCD_SEG32 ,FMC_A17 ,SAI2_FS_A ,LPTIM2_IN1 ,EVENTOUT, +PortD,PD13, , ,TIM4_CH2 , ,I2C4_SDA , , , , ,TSC_G6_IO4, ,LCD_SEG33 ,FMC_A18 , ,LPTIM2_OUT ,EVENTOUT, +PortD,PD14, , ,TIM4_CH3 , , , , , , , , ,LCD_SEG34 ,FMC_D0 , , ,EVENTOUT, +PortD,PD15, , ,TIM4_CH4 , , , , , , , , ,LCD_SEG35 ,FMC_D1 , , ,EVENTOUT, +PortE,PE0 , , ,TIM4_ETR , , , , , , , ,DCMI_D2 ,LCD_SEG36 ,FMC_NBL0 , ,TIM16_CH1 ,EVENTOUT, +PortE,PE1 , , , , , , , , , , ,DCMI_D3 ,LCD_SEG37 ,FMC_NBL1 , ,TIM17_CH1 ,EVENTOUT, +PortE,PE2 ,TRACECLK , ,TIM3_ETR , , , , , , ,TSC_G7_IO1, ,LCD_SEG38 ,FMC_A23 ,SAI1_MCLK_A , ,EVENTOUT, +PortE,PE3 ,TRACED0 , ,TIM3_CH1 , , , , , , ,TSC_G7_IO2, ,LCD_SEG39 ,FMC_A19 ,SAI1_SD_B , ,EVENTOUT, +PortE,PE4 ,TRACED1 , ,TIM3_CH2 , , , ,DFSDM1_DATIN3, , ,TSC_G7_IO3,DCMI_D4 , ,FMC_A20 ,SAI1_FS_A , ,EVENTOUT, +PortE,PE5 ,TRACED2 , ,TIM3_CH3 , , , ,DFSDM1_CKIN3 , , ,TSC_G7_IO4,DCMI_D6 , ,FMC_A21 ,SAI1_SCK_A , ,EVENTOUT, +PortE,PE6 ,TRACED3 , ,TIM3_CH4 , , , , , , , ,DCMI_D7 , ,FMC_A22 ,SAI1_SD_A , ,EVENTOUT, +PortE,PE7 , ,TIM1_ETR , , , , ,DFSDM1_DATIN2, , , , , ,FMC_D4 ,SAI1_SD_B , ,EVENTOUT, +PortE,PE8 , ,TIM1_CH1N , , , , ,DFSDM1_CKIN2 , , , , , ,FMC_D5 ,SAI1_SCK_B , ,EVENTOUT, +PortE,PE9 , ,TIM1_CH1 , , , , ,DFSDM1_CKOUT , , , , , ,FMC_D6 ,SAI1_FS_B , ,EVENTOUT, +PortE,PE10, ,TIM1_CH2N , , , , ,DFSDM1_DATIN4, , ,TSC_G5_IO1,QUADSPI_CLK , ,FMC_D7 ,SAI1_MCLK_B , ,EVENTOUT, +PortE,PE11, ,TIM1_CH2 , , , , ,DFSDM1_CKIN4 , , ,TSC_G5_IO2,QUADSPI_BK1_NCS, ,FMC_D8 , , ,EVENTOUT, +PortE,PE12, ,TIM1_CH3N , , , ,SPI1_NSS ,DFSDM1_DATIN5, , ,TSC_G5_IO3,QUADSPI_BK1_IO0, ,FMC_D9 , , ,EVENTOUT, +PortE,PE13, ,TIM1_CH3 , , , ,SPI1_SCK ,DFSDM1_CKIN5 , , ,TSC_G5_IO4,QUADSPI_BK1_IO1, ,FMC_D10 , , ,EVENTOUT, +PortE,PE14, ,TIM1_CH4 ,TIM1_BKIN2 ,TIM1_BKIN2_COMP2, ,SPI1_MISO , , , , ,QUADSPI_BK1_IO2, ,FMC_D11 , , ,EVENTOUT, +PortE,PE15, ,TIM1_BKIN , ,TIM1_BKIN_COMP1 , ,SPI1_MOSI , , , , ,QUADSPI_BK1_IO3, ,FMC_D12 , , ,EVENTOUT, +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , ,EVENTOUT, +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , ,EVENTOUT, +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , ,EVENTOUT, +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , ,EVENTOUT,ADC3_IN6 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , ,EVENTOUT,ADC3_IN7 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , ,EVENTOUT,ADC3_IN8 +PortF,PF6 , ,TIM5_ETR ,TIM5_CH1 , , , , , , , ,QUADSPI_BK1_IO3, , ,SAI1_SD_B , ,EVENTOUT,ADC3_IN9 +PortF,PF7 , , ,TIM5_CH2 , , , , , , , ,QUADSPI_BK1_IO2, , ,SAI1_MCLK_B , ,EVENTOUT,ADC3_IN10 +PortF,PF8 , , ,TIM5_CH3 , , , , , , , ,QUADSPI_BK1_IO0, , ,SAI1_SCK_B , ,EVENTOUT,ADC3_IN11 +PortF,PF9 , , ,TIM5_CH4 , , , , , , , ,QUADSPI_BK1_IO1, , ,SAI1_FS_B ,TIM15_CH1 ,EVENTOUT,ADC3_IN12 +PortF,PF10, , , ,QUADSPI_CLK , , , , , , ,DCMI_D11 , , , ,TIM15_CH2 ,EVENTOUT,ADC3_IN13 +PortF,PF11, , , , , , , , , , ,DCMI_D12 , , , , ,EVENTOUT, +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , ,EVENTOUT, +PortF,PF13, , , , ,I2C4_SMBA , ,DFSDM1_DATIN6, , , , , ,FMC_A7 , , ,EVENTOUT, +PortF,PF14, , , , ,I2C4_SCL , ,DFSDM1_CKIN6 , , ,TSC_G8_IO1, , ,FMC_A8 , , ,EVENTOUT, +PortF,PF15, , , , ,I2C4_SDA , , , , ,TSC_G8_IO2, , ,FMC_A9 , , ,EVENTOUT, +PortG,PG0 , , , , , , , , , ,TSC_G8_IO3, , ,FMC_A10 , , ,EVENTOUT, +PortG,PG1 , , , , , , , , , ,TSC_G8_IO4, , ,FMC_A11 , , ,EVENTOUT, +PortG,PG2 , , , , , ,SPI1_SCK , , , , , , ,FMC_A12 ,SAI2_SCK_B , ,EVENTOUT, +PortG,PG3 , , , , , ,SPI1_MISO , , , , , , ,FMC_A13 ,SAI2_FS_B , ,EVENTOUT, +PortG,PG4 , , , , , ,SPI1_MOSI , , , , , , ,FMC_A14 ,SAI2_MCLK_B , ,EVENTOUT, +PortG,PG5 , , , , , ,SPI1_NSS , , ,LPUART1_CTS , , , ,FMC_A15 ,SAI2_SD_B , ,EVENTOUT, +PortG,PG6 , , , , ,I2C3_SMBA , , , ,LPUART1_RTS/LPUART1_DE, , , , , , ,EVENTOUT, +PortG,PG7 , , , , ,I2C3_SCL , , , ,LPUART1_TX , , , ,FMC_INT ,SAI1_MCLK_A , ,EVENTOUT, +PortG,PG8 , , , , ,I2C3_SDA , , , ,LPUART1_RX , , , , , , ,EVENTOUT, +PortG,PG9 , , , , , , ,SPI3_SCK ,USART1_TX , , , , ,FMC_NCE/FMC_NE2 ,SAI2_SCK_A ,TIM15_CH1N ,EVENTOUT, +PortG,PG10, ,LPTIM1_IN1 , , , , ,SPI3_MISO ,USART1_RX , , , , ,FMC_NE3 ,SAI2_FS_A ,TIM15_CH1 ,EVENTOUT, +PortG,PG11, ,LPTIM1_IN2 , , , , ,SPI3_MOSI ,USART1_CTS , , , , , ,SAI2_MCLK_A ,TIM15_CH2 ,EVENTOUT, +PortG,PG12, ,LPTIM1_ETR , , , , ,SPI3_NSS ,USART1_RTS/USART1_DE, , , , ,FMC_NE4 ,SAI2_SD_A , ,EVENTOUT, +PortG,PG13, , , , ,I2C1_SDA , , ,USART1_CK , , , , ,FMC_A24 , , ,EVENTOUT, +PortG,PG14, , , , ,I2C1_SCL , , , , , , , ,FMC_A25 , , ,EVENTOUT, +PortG,PG15, ,LPTIM1_OUT , , ,I2C1_SMBA , , , , , ,DCMI_D13 , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH2 , , , ,QUADSPI_BK2_IO0 , , , , , , , , , , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH4 , , , , ,I2C2_SCL , , , , , , , , , , ,EVENTOUT, +PortH,PH5 , , , , ,I2C2_SDA , , , , , ,DCMI_PIXCLK , , , , ,EVENTOUT, +PortH,PH6 , , , , ,I2C2_SMBA , , , , , ,DCMI_D8 , , , , ,EVENTOUT, +PortH,PH7 , , , , ,I2C3_SCL , , , , , ,DCMI_D9 , , , , ,EVENTOUT, +PortH,PH8 , , , , ,I2C3_SDA , , , , , ,DCMI_HSYNC , , , , ,EVENTOUT, +PortH,PH9 , , , , ,I2C3_SMBA , , , , , ,DCMI_D0 , , , , ,EVENTOUT, +PortH,PH10, , ,TIM5_CH1 , , , , , , , ,DCMI_D1 , , , , ,EVENTOUT, +PortH,PH11, , ,TIM5_CH2 , , , , , , , ,DCMI_D2 , , , , ,EVENTOUT, +PortH,PH12, , ,TIM5_CH3 , , , , , , , ,DCMI_D3 , , , , ,EVENTOUT, +PortH,PH13, , , ,TIM8_CH1N , , , , , ,CAN1_TX , , , , , ,EVENTOUT, +PortH,PH14, , , ,TIM8_CH2N , , , , , , ,DCMI_D4 , , , , ,EVENTOUT, +PortH,PH15, , , ,TIM8_CH3N , , , , , , ,DCMI_D11 , , , , ,EVENTOUT, +PortI,PI0 , , ,TIM5_CH4 , , ,SPI2_NSS , , , , ,DCMI_D13 , , , , ,EVENTOUT, +PortI,PI1 , , , , , ,SPI2_SCK , , , , ,DCMI_D8 , , , , ,EVENTOUT, +PortI,PI2 , , , ,TIM8_CH4 , ,SPI2_MISO , , , , ,DCMI_D9 , , , , ,EVENTOUT, +PortI,PI3 , , , ,TIM8_ETR , ,SPI2_MOSI , , , , ,DCMI_D10 , , , , ,EVENTOUT, +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,DCMI_D5 , , , , ,EVENTOUT, +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,DCMI_VSYNC , , , , ,EVENTOUT, +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,DCMI_D6 , , , , ,EVENTOUT, +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,DCMI_D7 , , , , ,EVENTOUT, +PortI,PI8 , , , , , , , , , , ,DCMI_D12 , , , , ,EVENTOUT, +PortI,PI9 , , , , , , , , , ,CAN1_RX , , , , , ,EVENTOUT, +PortI,PI10, , , , , , , , , , , , , , , ,EVENTOUT, +PortI,PI11, , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32wb55_af.csv b/ports/stm32/boards/stm32wb55_af.csv index d6e1c3f77334c..3d319b03cfc17 100644 --- a/ports/stm32/boards/stm32wb55_af.csv +++ b/ports/stm32/boards/stm32wb55_af.csv @@ -1,74 +1,74 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM1/TIM2/LPTIM1,TIM1/TIM2,SPI2/SAI1/TIM1,I2C1/I2C3,SPI1/SPI2,RF,USART1,LPUART1,TSC,USB/QUADSPI,LCD,COMP1/COMP2/TIM1,SAI1,TIM2/TIM16/TIM17/LPTIM2,EVENTOUT,ADC -PortA,PA0,,TIM2_CH1,,,,,,,,,,,COMP1_OUT,SAI1_EXTCLK,TIM2_ETR,EVENTOUT,ADC1_IN5 -PortA,PA1,,TIM2_CH2,,,I2C1_SMBA,SPI1_SCK,,,,,,LCD_SEG0,,,,EVENTOUT,ADC1_IN6 -PortA,PA2,LSCO,TIM2_CH3,,,,,,,LPUART1_TX,,QUADSPI_BK1_NCS,LCD_SEG1,COMP2_OUT,,,EVENTOUT,ADC1_IN7 -PortA,PA3,,TIM2_CH4,,SAI1_PDM_CK1,,,,,LPUART1_RX,,QUADSPI_CLK,LCD_SEG2,,SAI1_MCLK_A,,EVENTOUT,ADC1_IN8 -PortA,PA4,,,,,,SPI1_NSS,,,,,,LCD_SEG5,,SAI1_FS_B,LPTIM2_OUT,EVENTOUT,ADC1_IN9 -PortA,PA5,,TIM2_CH1,TIM2_ETR,,,SPI1_SCK,,,,,,,,SAI1_SD_B,LPTIM2_ETR,EVENTOUT,ADC1_IN10 -PortA,PA6,,TIM1_BKIN,,,,SPI1_MISO,,,LPUART1_CTS,,QUADSPI_BK1_IO3,LCD_SEG3,TIM1_BKIN,,TIM16_CH1,EVENTOUT,ADC1_IN11 -PortA,PA7,,TIM1_CH1N,,,I2C3_SCL,SPI1_MOSI,,,,,QUADSPI_BK1_IO2,LCD_SEG4,COMP2_OUT,,TIM17_CH1,EVENTOUT,ADC1_IN12 -PortA,PA8,MCO,TIM1_CH1,,SAI1_PDM_CK2,,,,USART1_CK,,,,LCD_COM0,,SAI1_SCK_A,LPTIM2_OUT,EVENTOUT,ADC1_IN15 -PortA,PA9,,TIM1_CH2,,SAI1_PDM_DI2,I2C1_SCL,SPI2_SCK,,USART1_TX,,,,LCD_COM1,,SAI1_FS_A,,EVENTOUT,ADC1_IN16 -PortA,PA10,,TIM1_CH3,,SAI1_PDM_DI1,I2C1_SDA,,,USART1_RX,,,USB_CRS_SYNC,LCD_COM2,,SAI1_SD_A,TIM17_BKIN,EVENTOUT, -PortA,PA11,,TIM1_CH4,TIM1_BKIN2,,,SPI1_MISO,,USART1_CTS,,,USB_DM,,TIM1_BKIN2,,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,,,SPI1_MOSI,,USART1_RTS/USART1_DE,LPUART1_RX,,USB_DP,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,,,,,IR_OUT,,USB_NOE,,,SAI1_SD_B,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,LPTIM1_OUT,,,I2C1_SMBA,,,,,,,LCD_SEG5,,SAI1_FS_B,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1,TIM2_ETR,,,SPI1_NSS,,,,TSC_G3_IO1,,LCD_SEG17,,,,EVENTOUT, -PortB,PB0,,,,,,,EXT_PA_TX,,,,,,COMP1_OUT,,,EVENTOUT, -PortB,PB1,,,,,,,,,LPUART1_RTS/LPUART1_DE,,,,,,LPTIM2_IN1,EVENTOUT, -PortB,PB2,RTC_OUT,LPTIM1_OUT,,,I2C3_SMBA,SPI1_NSS,,,,,,LCD_VLCD,,SAI1_EXTCLK,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,,USART1_RTS/USART1_DE,,,,LCD_SEG7,,SAI1_SCK_B,,EVENTOUT, -PortB,PB4,NJTRST,,,,I2C3_SDA,SPI1_MISO,,USART1_CTS,,TSC_G2_IO1,,LCD_SEG8,,SAI1_MCLK_B,TIM17_BKIN,EVENTOUT, -PortB,PB5,,LPTIM1_IN1,,,I2C1_SMBA,SPI1_MOSI,,USART1_CK,LPUART1_TX,TSC_G2_IO2,,LCD_SEG9,COMP2_OUT,SAI1_SD_B,TIM16_BKIN,EVENTOUT, -PortB,PB6,MCO,LPTIM1_ETR,,,I2C1_SCL,,,USART1_TX,,TSC_G2_IO3,,LCD_SEG6,,SAI1_FS_B,TIM16_CH1N,EVENTOUT, -PortB,PB7,,LPTIM1_IN2,,TIM1_BKIN,I2C1_SDA,,,USART1_RX,,TSC_G2_IO4,,LCD_SEG21,,,TIM17_CH1N,EVENTOUT, -PortB,PB8,,TIM1_CH2N,,SAI1_PDM_CK1,I2C1_SCL,,,,,,QUADSPI_BK1_IO1,LCD_SEG16,,SAI1_MCLK_A,TIM16_CH1,EVENTOUT, -PortB,PB9,,TIM1_CH3N,,SAI1_PDM_DI2,I2C1_SDA,SPI2_NSS,,,IR_OUT,TSC_G7_IO4,QUADSPI_BK1_IO0,LCD_COM3,,SAI1_FS_A,TIM17_CH1,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C3_SCL,SPI2_SCK,,,LPUART1_RX,TSC_SYNC,QUADSPI_CLK,LCD_SEG10,COMP1_OUT,SAI1_SCK_A,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C3_SDA,,,,LPUART1_TX,,QUADSPI_BK1_NCS,LCD_SEG11,COMP2_OUT,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,TIM1_BKIN,I2C3_SMBA,SPI2_NSS,,,LPUART1_RTS,TSC_G1_IO1,,LCD_SEG12,,SAI1_FS_A,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,I2C3_SCL,SPI2_SCK,,,LPUART1_CTS,TSC_G1_IO2,,LCD_SEG13,,SAI1_SCK_A,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,,I2C3_SDA,SPI2_MISO,,,,TSC_G1_IO3,,LCD_SEG14,,SAI1_MCLK_A,,EVENTOUT, -PortB,PB15,RTC_REFIN,TIM1_CH3N,,,,SPI2_MOSI,,,,TSC_G1_IO4,,LCD_SEG15,,SAI1_SD_A,,EVENTOUT, -PortC,PC0,,LPTIM1_IN1,,,I2C3_SCL,,,,LPUART1_RX,,,LCD_SEG18,,,LPTIM2_IN1,EVENTOUT,ADC1_IN1 -PortC,PC1,,LPTIM1_OUT,,SPI2_MOSI,I2C3_SDA,,,,LPUART1_TX,,,LCD_SEG19,,,,EVENTOUT,ADC1_IN2 -PortC,PC2,,LPTIM1_IN2,,,,SPI2_MISO,,,,,,LCD_SEG20,,,,EVENTOUT,ADC1_IN3 -PortC,PC3,,LPTIM1_ETR,,SAI1_PDM_DI1,,SPI2_MOSI,,,,,,LCD_VLCD,,SAI1_SD_A,LPTIM2_ETR,EVENTOUT,ADC1_IN4 -PortC,PC4,,,,,,,,,,,,LCD_SEG22,,,,EVENTOUT,ADC1_IN13 -PortC,PC5,,,,SAI1_PDM_DI3,,,,,,,,LCD_SEG23,,,,EVENTOUT,ADC1_IN14 -PortC,PC6,,,,,,,,,,TSC_G4_IO1,,LCD_SEG24,,,,EVENTOUT, -PortC,PC7,,,,,,,,,,TSC_G4_IO2,,LCD_SEG25,,,,EVENTOUT, -PortC,PC8,,,,,,,,,,TSC_G4_IO3,,LCD_SEG26,,,,EVENTOUT, -PortC,PC9,,,,TIM1_BKIN,,,,,,TSC_G4_IO4,USB_NOE,LCD_SEG27,,SAI1_SCK_B,,EVENTOUT, -PortC,PC10,TRACED1,,,,,,,,,TSC_G3_IO2,,LCD_COM4LCD_SEG28LCD_SEG40,,,,EVENTOUT, -PortC,PC11,,,,,,,,,,TSC_G3_IO3,,LCD_COM5LCD_SEG29LCD_SEG41,,,,EVENTOUT, -PortC,PC12,TRACED3,,,,,,,,,TSC_G3_IO4,,LCD_COM6LCD_SEG30LCD_SEG42,,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortD,PD0,,,,,,SPI2_NSS,,,,,,,,,,EVENTOUT, -PortD,PD1,,,,,,SPI2_SCK,,,,,,,,,,EVENTOUT, -PortD,PD2,TRACED2,,,,,,,,,TSC_SYNC,,LCD_COM7LCD_SEG31LCD_SEG43,,,,EVENTOUT, -PortD,PD3,,,,SPI2_SCK,,SPI2_MISO,,,,,QUADSPI_BK1_NCS,,,,,EVENTOUT, -PortD,PD4,,,,,,SPI2_MOSI,,,,TSC_G5_IO1,QUADSPI_BK1_IO0,,,,,EVENTOUT, -PortD,PD5,,,,,,,,,,TSC_G5_IO2,QUADSPI_BK1_IO1,,,SAI1_MCLK_B,,EVENTOUT, -PortD,PD6,,,,SAI1_PDM_DI1,,,,,,TSC_G5_IO3,QUADSPI_BK1_IO2,,,SAI1_SD_A,,EVENTOUT, -PortD,PD7,,,,,,,,,,TSC_G5_IO4,QUADSPI_BK1_IO3,LCD_SEG39,,,,EVENTOUT, -PortD,PD8,,,TIM1_BKIN2,,,,,,,,,LCD_SEG28,,,,EVENTOUT, -PortD,PD9,TRACED0,,,,,,,,,,,LCD_SEG29,,,,EVENTOUT, -PortD,PD10,TRIG_INOUT,,,,,,,,,TSC_G6_IO1,,LCD_SEG30,,,,EVENTOUT, -PortD,PD11,,,,,,,,,,TSC_G6_IO2,,LCD_SEG31,,,LPTIM2_ETR,EVENTOUT, -PortD,PD12,,,,,,,,,,TSC_G6_IO3,,LCD_SEG32,,,LPTIM2_IN1,EVENTOUT, -PortD,PD13,,,,,,,,,,TSC_G6_IO4,,LCD_SEG33,,,LPTIM2_OUT,EVENTOUT, -PortD,PD14,,TIM1_CH1,,,,,,,,,,LCD_SEG34,,,,EVENTOUT, -PortD,PD15,,TIM1_CH2,,,,,,,,,,LCD_SEG35,,,,EVENTOUT, -PortE,PE0,,TIM1_ETR,,,,,,,,TSC_G7_IO3,,LCD_SEG36,,,TIM16_CH1,EVENTOUT, -PortE,PE1,,,,,,,,,,TSC_G7_IO2,,LCD_SEG37,,,TIM17_CH1,EVENTOUT, -PortE,PE2,TRACECK,,,SAI1_PDM_CK1,,,,,,TSC_G7_IO1,,LCD_SEG38,,SAI1_MCLK_A,,EVENTOUT, -PortE,PE3,,,,,,,,,,,,,,,,EVENTOUT, -PortE,PE4,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH0,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH1,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH3,LSCO,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/LPTIM1,TIM1/TIM2 ,SPI2/SAI1/TIM1,I2C1/I2C3,SPI1/SPI2,RF ,USART1 ,LPUART1 ,TSC ,USB/QUADSPI ,LCD ,COMP1/COMP2/TIM1,SAI1 ,TIM2/TIM16/TIM17/LPTIM2,EVENTOUT,ADC +PortA,PA0 , ,TIM2_CH1 , , , , , , , , , , ,COMP1_OUT ,SAI1_EXTCLK,TIM2_ETR ,EVENTOUT,ADC1_IN5 +PortA,PA1 , ,TIM2_CH2 , , ,I2C1_SMBA,SPI1_SCK , , , , , ,LCD_SEG0 , , , ,EVENTOUT,ADC1_IN6 +PortA,PA2 ,LSCO ,TIM2_CH3 , , , , , , ,LPUART1_TX , ,QUADSPI_BK1_NCS,LCD_SEG1 ,COMP2_OUT , , ,EVENTOUT,ADC1_IN7 +PortA,PA3 , ,TIM2_CH4 , ,SAI1_PDM_CK1 , , , , ,LPUART1_RX , ,QUADSPI_CLK ,LCD_SEG2 , ,SAI1_MCLK_A, ,EVENTOUT,ADC1_IN8 +PortA,PA4 , , , , , ,SPI1_NSS , , , , , ,LCD_SEG5 , ,SAI1_FS_B ,LPTIM2_OUT ,EVENTOUT,ADC1_IN9 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR , , ,SPI1_SCK , , , , , , , ,SAI1_SD_B ,LPTIM2_ETR ,EVENTOUT,ADC1_IN10 +PortA,PA6 , ,TIM1_BKIN , , , ,SPI1_MISO, , ,LPUART1_CTS , ,QUADSPI_BK1_IO3,LCD_SEG3 ,TIM1_BKIN , ,TIM16_CH1 ,EVENTOUT,ADC1_IN11 +PortA,PA7 , ,TIM1_CH1N , , ,I2C3_SCL ,SPI1_MOSI, , , , ,QUADSPI_BK1_IO2,LCD_SEG4 ,COMP2_OUT , ,TIM17_CH1 ,EVENTOUT,ADC1_IN12 +PortA,PA8 ,MCO ,TIM1_CH1 , ,SAI1_PDM_CK2 , , , ,USART1_CK , , , ,LCD_COM0 , ,SAI1_SCK_A ,LPTIM2_OUT ,EVENTOUT,ADC1_IN15 +PortA,PA9 , ,TIM1_CH2 , ,SAI1_PDM_DI2 ,I2C1_SCL ,SPI2_SCK , ,USART1_TX , , , ,LCD_COM1 , ,SAI1_FS_A , ,EVENTOUT,ADC1_IN16 +PortA,PA10, ,TIM1_CH3 , ,SAI1_PDM_DI1 ,I2C1_SDA , , ,USART1_RX , , ,USB_CRS_SYNC ,LCD_COM2 , ,SAI1_SD_A ,TIM17_BKIN ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,TIM1_BKIN2, , ,SPI1_MISO, ,USART1_CTS , , ,USB_DM , ,TIM1_BKIN2 , , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , , , ,SPI1_MOSI, ,USART1_RTS/USART1_DE,LPUART1_RX , ,USB_DP , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , , , , , ,IR_OUT , ,USB_NOE , , ,SAI1_SD_B , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK ,LPTIM1_OUT , , ,I2C1_SMBA, , , , , , ,LCD_SEG5 , ,SAI1_FS_B , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM2_ETR , , ,SPI1_NSS , , , ,TSC_G3_IO1, ,LCD_SEG17 , , , ,EVENTOUT, +PortB,PB0 , , , , , , ,EXT_PA_TX, , , , , ,COMP1_OUT , , ,EVENTOUT, +PortB,PB1 , , , , , , , , ,LPUART1_RTS/LPUART1_DE, , , , , ,LPTIM2_IN1 ,EVENTOUT, +PortB,PB2 ,RTC_OUT ,LPTIM1_OUT , , ,I2C3_SMBA,SPI1_NSS , , , , , ,LCD_VLCD , ,SAI1_EXTCLK, ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK , ,USART1_RTS/USART1_DE, , , ,LCD_SEG7 , ,SAI1_SCK_B , ,EVENTOUT, +PortB,PB4 ,NJTRST , , , ,I2C3_SDA ,SPI1_MISO, ,USART1_CTS , ,TSC_G2_IO1, ,LCD_SEG8 , ,SAI1_MCLK_B,TIM17_BKIN ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 , , ,I2C1_SMBA,SPI1_MOSI, ,USART1_CK ,LPUART1_TX ,TSC_G2_IO2, ,LCD_SEG9 ,COMP2_OUT ,SAI1_SD_B ,TIM16_BKIN ,EVENTOUT, +PortB,PB6 ,MCO ,LPTIM1_ETR , , ,I2C1_SCL , , ,USART1_TX , ,TSC_G2_IO3, ,LCD_SEG6 , ,SAI1_FS_B ,TIM16_CH1N ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 , ,TIM1_BKIN ,I2C1_SDA , , ,USART1_RX , ,TSC_G2_IO4, ,LCD_SEG21 , , ,TIM17_CH1N ,EVENTOUT, +PortB,PB8 , ,TIM1_CH2N , ,SAI1_PDM_CK1 ,I2C1_SCL , , , , , ,QUADSPI_BK1_IO1,LCD_SEG16 , ,SAI1_MCLK_A,TIM16_CH1 ,EVENTOUT, +PortB,PB9 , ,TIM1_CH3N , ,SAI1_PDM_DI2 ,I2C1_SDA ,SPI2_NSS , , ,IR_OUT ,TSC_G7_IO4,QUADSPI_BK1_IO0,LCD_COM3 , ,SAI1_FS_A ,TIM17_CH1 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C3_SCL ,SPI2_SCK , , ,LPUART1_RX ,TSC_SYNC ,QUADSPI_CLK ,LCD_SEG10 ,COMP1_OUT ,SAI1_SCK_A , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C3_SDA , , , ,LPUART1_TX , ,QUADSPI_BK1_NCS,LCD_SEG11 ,COMP2_OUT , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,TIM1_BKIN ,I2C3_SMBA,SPI2_NSS , , ,LPUART1_RTS ,TSC_G1_IO1, ,LCD_SEG12 , ,SAI1_FS_A , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2C3_SCL ,SPI2_SCK , , ,LPUART1_CTS ,TSC_G1_IO2, ,LCD_SEG13 , ,SAI1_SCK_A , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , , ,I2C3_SDA ,SPI2_MISO, , , ,TSC_G1_IO3, ,LCD_SEG14 , ,SAI1_MCLK_A, ,EVENTOUT, +PortB,PB15,RTC_REFIN ,TIM1_CH3N , , , ,SPI2_MOSI, , , ,TSC_G1_IO4, ,LCD_SEG15 , ,SAI1_SD_A , ,EVENTOUT, +PortC,PC0 , ,LPTIM1_IN1 , , ,I2C3_SCL , , , ,LPUART1_RX , , ,LCD_SEG18 , , ,LPTIM2_IN1 ,EVENTOUT,ADC1_IN1 +PortC,PC1 , ,LPTIM1_OUT , ,SPI2_MOSI ,I2C3_SDA , , , ,LPUART1_TX , , ,LCD_SEG19 , , , ,EVENTOUT,ADC1_IN2 +PortC,PC2 , ,LPTIM1_IN2 , , , ,SPI2_MISO, , , , , ,LCD_SEG20 , , , ,EVENTOUT,ADC1_IN3 +PortC,PC3 , ,LPTIM1_ETR , ,SAI1_PDM_DI1 , ,SPI2_MOSI, , , , , ,LCD_VLCD , ,SAI1_SD_A ,LPTIM2_ETR ,EVENTOUT,ADC1_IN4 +PortC,PC4 , , , , , , , , , , , ,LCD_SEG22 , , , ,EVENTOUT,ADC1_IN13 +PortC,PC5 , , , ,SAI1_PDM_DI3 , , , , , , , ,LCD_SEG23 , , , ,EVENTOUT,ADC1_IN14 +PortC,PC6 , , , , , , , , , ,TSC_G4_IO1, ,LCD_SEG24 , , , ,EVENTOUT, +PortC,PC7 , , , , , , , , , ,TSC_G4_IO2, ,LCD_SEG25 , , , ,EVENTOUT, +PortC,PC8 , , , , , , , , , ,TSC_G4_IO3, ,LCD_SEG26 , , , ,EVENTOUT, +PortC,PC9 , , , ,TIM1_BKIN , , , , , ,TSC_G4_IO4,USB_NOE ,LCD_SEG27 , ,SAI1_SCK_B , ,EVENTOUT, +PortC,PC10,TRACED1 , , , , , , , , ,TSC_G3_IO2, ,LCD_COM4LCD_SEG28LCD_SEG40, , , ,EVENTOUT, +PortC,PC11, , , , , , , , , ,TSC_G3_IO3, ,LCD_COM5LCD_SEG29LCD_SEG41, , , ,EVENTOUT, +PortC,PC12,TRACED3 , , , , , , , , ,TSC_G3_IO4, ,LCD_COM6LCD_SEG30LCD_SEG42, , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortD,PD0 , , , , , ,SPI2_NSS , , , , , , , , , ,EVENTOUT, +PortD,PD1 , , , , , ,SPI2_SCK , , , , , , , , , ,EVENTOUT, +PortD,PD2 ,TRACED2 , , , , , , , , ,TSC_SYNC , ,LCD_COM7LCD_SEG31LCD_SEG43, , , ,EVENTOUT, +PortD,PD3 , , , ,SPI2_SCK , ,SPI2_MISO, , , , ,QUADSPI_BK1_NCS, , , , ,EVENTOUT, +PortD,PD4 , , , , , ,SPI2_MOSI, , , ,TSC_G5_IO1,QUADSPI_BK1_IO0, , , , ,EVENTOUT, +PortD,PD5 , , , , , , , , , ,TSC_G5_IO2,QUADSPI_BK1_IO1, , ,SAI1_MCLK_B, ,EVENTOUT, +PortD,PD6 , , , ,SAI1_PDM_DI1 , , , , , ,TSC_G5_IO3,QUADSPI_BK1_IO2, , ,SAI1_SD_A , ,EVENTOUT, +PortD,PD7 , , , , , , , , , ,TSC_G5_IO4,QUADSPI_BK1_IO3,LCD_SEG39 , , , ,EVENTOUT, +PortD,PD8 , , ,TIM1_BKIN2, , , , , , , , ,LCD_SEG28 , , , ,EVENTOUT, +PortD,PD9 ,TRACED0 , , , , , , , , , , ,LCD_SEG29 , , , ,EVENTOUT, +PortD,PD10,TRIG_INOUT , , , , , , , , ,TSC_G6_IO1, ,LCD_SEG30 , , , ,EVENTOUT, +PortD,PD11, , , , , , , , , ,TSC_G6_IO2, ,LCD_SEG31 , , ,LPTIM2_ETR ,EVENTOUT, +PortD,PD12, , , , , , , , , ,TSC_G6_IO3, ,LCD_SEG32 , , ,LPTIM2_IN1 ,EVENTOUT, +PortD,PD13, , , , , , , , , ,TSC_G6_IO4, ,LCD_SEG33 , , ,LPTIM2_OUT ,EVENTOUT, +PortD,PD14, ,TIM1_CH1 , , , , , , , , , ,LCD_SEG34 , , , ,EVENTOUT, +PortD,PD15, ,TIM1_CH2 , , , , , , , , , ,LCD_SEG35 , , , ,EVENTOUT, +PortE,PE0 , ,TIM1_ETR , , , , , , , ,TSC_G7_IO3, ,LCD_SEG36 , , ,TIM16_CH1 ,EVENTOUT, +PortE,PE1 , , , , , , , , , ,TSC_G7_IO2, ,LCD_SEG37 , , ,TIM17_CH1 ,EVENTOUT, +PortE,PE2 ,TRACECK , , ,SAI1_PDM_CK1 , , , , , ,TSC_G7_IO1, ,LCD_SEG38 , ,SAI1_MCLK_A, ,EVENTOUT, +PortE,PE3 , , , , , , , , , , , , , , , ,EVENTOUT, +PortE,PE4 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH0 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH1 , , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH3 ,LSCO , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/boards/stm32wl55_af.csv b/ports/stm32/boards/stm32wl55_af.csv index 219b8b08b7853..c5ef81a4ac4e5 100644 --- a/ports/stm32/boards/stm32wl55_af.csv +++ b/ports/stm32/boards/stm32wl55_af.csv @@ -1,45 +1,45 @@ -Port,,AF0,AF1,AF2,AF3,AF4,AF5,AF6,AF7,AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15, -,,SYS_AF,TIM1/TIM2/LPTIM1,TIM1/TIM2,SPI2S2/TIM1/LPTIM3,I2C1/I2C2/I2C3,SPI1/SPI2S2,RF,USART1/USART2,LPUART1,,,,COMP1/COMP2/TIM1,DEBUG,TIM2/TIM16/TIM17/LPTIM2,EVENOUT,ADC -PortA,PA0,,TIM2_CH1,,,I2C3_SMBA,I2S_CKIN,,USART2_CTS,,,,,COMP1_OUT,DEBUG_PWR_REGLP1S,TIM2_ETR,EVENTOUT,ADC123_IN0 -PortA,PA1,,TIM2_CH2,,LPTIM3_OUT,I2C1_SMBA,SPI1_SCK,,USART2_RTS,LPUART1_RTS,,,,,DEBUG_PWR_REGLP2S,,EVENTOUT,ADC123_IN1 -PortA,PA2,LSCO,TIM2_CH3,,,,,,USART2_TX,LPUART1_TX,,,,COMP2_OUT,DEBUG_PWR_LDORDY,,EVENTOUT,ADC123_IN2 -PortA,PA3,,TIM2_CH4,,,,I2S2_MCK,,USART2_RX,LPUART1_RX,,,,,,,EVENTOUT,ADC123_IN3 -PortA,PA4,RTC_OUT2,LPTIM1_OUT,,,,SPI1_NSS,,USART2_CK,,,,,,DEBUG_SUBGHZSPI_NSSOUT,LPTIM2_OUT,EVENTOUT,ADC12_IN4 -PortA,PA5,,TIM2_CH1,TIM2_ETR,SPI2_MISO,,SPI1_SCK,,,,,,,,DEBUG_SUBGHZSPI_SCKOUT,LPTIM2_ETR,EVENTOUT,ADC12_IN5 -PortA,PA6,,TIM1_BKIN,,,I2C2_SMBA,SPI1_MISO,,,LPUART1_CTS,,,,TIM1_BKIN,DEBUG_SUBGHZSPI_MISOOUT,TIM16_CH1,EVENTOUT,ADC12_IN6 -PortA,PA7,,TIM1_CH1N,,,I2C3_SCL,SPI1_MOSI,,,,,,,COMP2_OUT,DEBUG_SUBGHZSPI_MOSIOUT,TIM17_CH1,EVENTOUT,ADC12_IN7 -PortA,PA8,MCO,TIM1_CH1,,,,SPI2_SCK/I2S2_CK,,USART1_CK,,,,,,,LPTIM2_OUT,EVENTOUT, -PortA,PA9,,TIM1_CH2,,SPI2_NSS/I2S2_WS,I2C1_SCL,SPI2_SCK/I2S2_CK,,USART1_TX,,,,,,,,EVENTOUT, -PortA,PA10,RTC_REFIN,TIM1_CH3,,,I2C1_SDA,SPI2_MOSI/I2S2_SD,,USART1_RX,,,,,,DEBUG_RF_HSE32RDY,TIM17_BKIN,EVENTOUT, -PortA,PA11,,TIM1_CH4,TIM1_BKIN2,LPTIM3_ETR,I2C2_SDA,SPI1_MISO,,USART1_CTS,,,,,TIM1_BKIN2,DEBUG_RF_NRESET,,EVENTOUT, -PortA,PA12,,TIM1_ETR,,LPTIM3_IN1,I2C2_SCL,SPI1_MOSI,RF_BUSY,USART1_RTS,,,,,,,,EVENTOUT, -PortA,PA13,JTMS/SWDIO,,,,I2C2_SMBA,,,,IR_OUT,,,,,,,EVENTOUT, -PortA,PA14,JTCK/SWCLK,LPTIM1_OUT,,,I2C1_SMBA,,,,,,,,,,,EVENTOUT, -PortA,PA15,JTDI,TIM2_CH1,TIM2_ETR,,I2C2_SDA,SPI1_NSS,,,,,,,,,,EVENTOUT, -PortB,PB0,,,,,,,,,,,,,COMP1_OUT,,,EVENTOUT,ADC12_IN8 -PortB,PB1,,,,,,,,,LPUART1_RTS_DE,,,,,,LPTIM2_IN1,EVENTOUT,ADC12_IN9 -PortB,PB2,,LPTIM1_OUT,,,I2C3_SMBA,SPI1_NSS,,,,,,,,DEBUG_RF_SMPSRDY,,EVENTOUT, -PortB,PB3,JTDO/TRACESWO,TIM2_CH2,,,,SPI1_SCK,RF_IRQ0,USART1_RTS,,,,,,DEBUG_RF_DTB1,,EVENTOUT, -PortB,PB4,NJTRST,,,,I2C3_SDA,SPI1_MISO,,USART1_CTS,,,,,,DEBUG_RF_LDORDY,TIM17_BKIN,EVENTOUT, -PortB,PB5,,LPTIM1_IN1,,,I2C1_SMBA,SPI1_MOSI,RF_IRQ1,USART1_CK,,,,,COMP2_OUT,,TIM16_BKIN,EVENTOUT, -PortB,PB6,,LPTIM1_ETR,,,I2C1_SCL,,,USART1_TX,,,,,,,TIM16_CH1N,EVENTOUT, -PortB,PB7,,LPTIM1_IN2,,TIM1_BKIN,I2C1_SDA,,,USART1_RX,,,,,,,TIM17_CH1N,EVENTOUT, -PortB,PB8,,TIM1_CH2N,,,I2C1_SCL,,RF_IRQ2,,,,,,,,TIM16_CH1,EVENTOUT, -PortB,PB9,,TIM1_CH3N,,,I2C1_SDA,SPI2_NSS/I2S2_WS,,,IR_OUT,,,,,,TIM17_CH1,EVENTOUT, -PortB,PB10,,TIM2_CH3,,,I2C3_SCL,SPI2_SCK/I2S2_CK,,,LPUART1_RX,,,,COMP1_OUT,,,EVENTOUT, -PortB,PB11,,TIM2_CH4,,,I2C3_SDA,,,,LPUART1_TX,,,,COMP2_OUT,,,EVENTOUT, -PortB,PB12,,TIM1_BKIN,,TIM1_BKIN,I2C3_SMBA,SPI2_NSS/I2S2_WS,,,LPUART1_RTS,,,,,,,EVENTOUT, -PortB,PB13,,TIM1_CH1N,,,I2C3_SCL,SPI2_SCK/I2S2_CK,,,LPUART1_CTS,,,,,,,EVENTOUT, -PortB,PB14,,TIM1_CH2N,,I2S2_MCK,I2C3_SDA,SPI2_MISO,,,,,,,,,,EVENTOUT, -PortB,PB15,,TIM1_CH3N,,,I2C2_SCL,SPI2_MOSI/I2S2_SD,,,,,,,,,,EVENTOUT, -PortC,PC0,,LPTIM1_IN1,,,I2C3_SCL,,,,LPUART1_RX,,,,,,LPTIM2_IN1,EVENTOUT,ADC123_IN10 -PortC,PC1,,LPTIM1_OUT,,SPI2_MOSI/I2S2_SD,I2C3_SDA,,,,LPUART1_TX,,,,,,,EVENTOUT,ADC123_IN11 -PortC,PC2,,LPTIM1_IN2,,,,SPI2_MISO,,,,,,,,,,EVENTOUT,ADC123_IN12 -PortC,PC3,,LPTIM1_ETR,,,,SPI2_MOSI/I2S2_SD,,,,,,,,,LPTIM2_ETR,EVENTOUT,ADC123_IN13 -PortC,PC4,,,,,,,,,,,,,,,,EVENTOUT,ADC12_IN14 -PortC,PC5,,,,,,,,,,,,,,,,EVENTOUT,ADC12_IN15 -PortC,PC6,,,,,,I2S2_MCK,,,,,,,,,,EVENTOUT, -PortC,PC13,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC14,,,,,,,,,,,,,,,,EVENTOUT, -PortC,PC15,,,,,,,,,,,,,,,,EVENTOUT, -PortH,PH3,,,,,,,,,,,,,,,,EVENTOUT, +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9,AF10,AF11,AF12 ,AF13 ,AF14 ,AF15 ,ADC + , ,SYS_AF ,TIM1/TIM2/LPTIM1,TIM1/TIM2 ,SPI2S2/TIM1/LPTIM3,I2C1/I2C2/I2C3,SPI1/SPI2S2 ,RF ,USART1/USART2,LPUART1 , , , ,COMP1/COMP2/TIM1,DEBUG ,TIM2/TIM16/TIM17/LPTIM2,EVENOUT ,ADC +PortA,PA0 , ,TIM2_CH1 , , ,I2C3_SMBA ,I2S_CKIN , ,USART2_CTS , , , , ,COMP1_OUT ,DEBUG_PWR_REGLP1S ,TIM2_ETR ,EVENTOUT,ADC123_IN0 +PortA,PA1 , ,TIM2_CH2 , ,LPTIM3_OUT ,I2C1_SMBA ,SPI1_SCK , ,USART2_RTS ,LPUART1_RTS , , , , ,DEBUG_PWR_REGLP2S , ,EVENTOUT,ADC123_IN1 +PortA,PA2 ,LSCO ,TIM2_CH3 , , , , , ,USART2_TX ,LPUART1_TX , , , ,COMP2_OUT ,DEBUG_PWR_LDORDY , ,EVENTOUT,ADC123_IN2 +PortA,PA3 , ,TIM2_CH4 , , , ,I2S2_MCK , ,USART2_RX ,LPUART1_RX , , , , , , ,EVENTOUT,ADC123_IN3 +PortA,PA4 ,RTC_OUT2 ,LPTIM1_OUT , , , ,SPI1_NSS , ,USART2_CK , , , , , ,DEBUG_SUBGHZSPI_NSSOUT ,LPTIM2_OUT ,EVENTOUT,ADC12_IN4 +PortA,PA5 , ,TIM2_CH1 ,TIM2_ETR ,SPI2_MISO , ,SPI1_SCK , , , , , , , ,DEBUG_SUBGHZSPI_SCKOUT ,LPTIM2_ETR ,EVENTOUT,ADC12_IN5 +PortA,PA6 , ,TIM1_BKIN , , ,I2C2_SMBA ,SPI1_MISO , , ,LPUART1_CTS , , , ,TIM1_BKIN ,DEBUG_SUBGHZSPI_MISOOUT,TIM16_CH1 ,EVENTOUT,ADC12_IN6 +PortA,PA7 , ,TIM1_CH1N , , ,I2C3_SCL ,SPI1_MOSI , , , , , , ,COMP2_OUT ,DEBUG_SUBGHZSPI_MOSIOUT,TIM17_CH1 ,EVENTOUT,ADC12_IN7 +PortA,PA8 ,MCO ,TIM1_CH1 , , , ,SPI2_SCK/I2S2_CK , ,USART1_CK , , , , , , ,LPTIM2_OUT ,EVENTOUT, +PortA,PA9 , ,TIM1_CH2 , ,SPI2_NSS/I2S2_WS ,I2C1_SCL ,SPI2_SCK/I2S2_CK , ,USART1_TX , , , , , , , ,EVENTOUT, +PortA,PA10,RTC_REFIN ,TIM1_CH3 , , ,I2C1_SDA ,SPI2_MOSI/I2S2_SD, ,USART1_RX , , , , , ,DEBUG_RF_HSE32RDY ,TIM17_BKIN ,EVENTOUT, +PortA,PA11, ,TIM1_CH4 ,TIM1_BKIN2,LPTIM3_ETR ,I2C2_SDA ,SPI1_MISO , ,USART1_CTS , , , , ,TIM1_BKIN2 ,DEBUG_RF_NRESET , ,EVENTOUT, +PortA,PA12, ,TIM1_ETR , ,LPTIM3_IN1 ,I2C2_SCL ,SPI1_MOSI ,RF_BUSY,USART1_RTS , , , , , , , ,EVENTOUT, +PortA,PA13,JTMS/SWDIO , , , ,I2C2_SMBA , , , ,IR_OUT , , , , , , ,EVENTOUT, +PortA,PA14,JTCK/SWCLK ,LPTIM1_OUT , , ,I2C1_SMBA , , , , , , , , , , ,EVENTOUT, +PortA,PA15,JTDI ,TIM2_CH1 ,TIM2_ETR , ,I2C2_SDA ,SPI1_NSS , , , , , , , , , ,EVENTOUT, +PortB,PB0 , , , , , , , , , , , , ,COMP1_OUT , , ,EVENTOUT,ADC12_IN8 +PortB,PB1 , , , , , , , , ,LPUART1_RTS_DE, , , , , ,LPTIM2_IN1 ,EVENTOUT,ADC12_IN9 +PortB,PB2 , ,LPTIM1_OUT , , ,I2C3_SMBA ,SPI1_NSS , , , , , , , ,DEBUG_RF_SMPSRDY , ,EVENTOUT, +PortB,PB3 ,JTDO/TRACESWO,TIM2_CH2 , , , ,SPI1_SCK ,RF_IRQ0,USART1_RTS , , , , , ,DEBUG_RF_DTB1 , ,EVENTOUT, +PortB,PB4 ,NJTRST , , , ,I2C3_SDA ,SPI1_MISO , ,USART1_CTS , , , , , ,DEBUG_RF_LDORDY ,TIM17_BKIN ,EVENTOUT, +PortB,PB5 , ,LPTIM1_IN1 , , ,I2C1_SMBA ,SPI1_MOSI ,RF_IRQ1,USART1_CK , , , , ,COMP2_OUT , ,TIM16_BKIN ,EVENTOUT, +PortB,PB6 , ,LPTIM1_ETR , , ,I2C1_SCL , , ,USART1_TX , , , , , , ,TIM16_CH1N ,EVENTOUT, +PortB,PB7 , ,LPTIM1_IN2 , ,TIM1_BKIN ,I2C1_SDA , , ,USART1_RX , , , , , , ,TIM17_CH1N ,EVENTOUT, +PortB,PB8 , ,TIM1_CH2N , , ,I2C1_SCL , ,RF_IRQ2, , , , , , , ,TIM16_CH1 ,EVENTOUT, +PortB,PB9 , ,TIM1_CH3N , , ,I2C1_SDA ,SPI2_NSS/I2S2_WS , , ,IR_OUT , , , , , ,TIM17_CH1 ,EVENTOUT, +PortB,PB10, ,TIM2_CH3 , , ,I2C3_SCL ,SPI2_SCK/I2S2_CK , , ,LPUART1_RX , , , ,COMP1_OUT , , ,EVENTOUT, +PortB,PB11, ,TIM2_CH4 , , ,I2C3_SDA , , , ,LPUART1_TX , , , ,COMP2_OUT , , ,EVENTOUT, +PortB,PB12, ,TIM1_BKIN , ,TIM1_BKIN ,I2C3_SMBA ,SPI2_NSS/I2S2_WS , , ,LPUART1_RTS , , , , , , ,EVENTOUT, +PortB,PB13, ,TIM1_CH1N , , ,I2C3_SCL ,SPI2_SCK/I2S2_CK , , ,LPUART1_CTS , , , , , , ,EVENTOUT, +PortB,PB14, ,TIM1_CH2N , ,I2S2_MCK ,I2C3_SDA ,SPI2_MISO , , , , , , , , , ,EVENTOUT, +PortB,PB15, ,TIM1_CH3N , , ,I2C2_SCL ,SPI2_MOSI/I2S2_SD, , , , , , , , , ,EVENTOUT, +PortC,PC0 , ,LPTIM1_IN1 , , ,I2C3_SCL , , , ,LPUART1_RX , , , , , ,LPTIM2_IN1 ,EVENTOUT,ADC123_IN10 +PortC,PC1 , ,LPTIM1_OUT , ,SPI2_MOSI/I2S2_SD ,I2C3_SDA , , , ,LPUART1_TX , , , , , , ,EVENTOUT,ADC123_IN11 +PortC,PC2 , ,LPTIM1_IN2 , , , ,SPI2_MISO , , , , , , , , , ,EVENTOUT,ADC123_IN12 +PortC,PC3 , ,LPTIM1_ETR , , , ,SPI2_MOSI/I2S2_SD, , , , , , , , ,LPTIM2_ETR ,EVENTOUT,ADC123_IN13 +PortC,PC4 , , , , , , , , , , , , , , , ,EVENTOUT,ADC12_IN14 +PortC,PC5 , , , , , , , , , , , , , , , ,EVENTOUT,ADC12_IN15 +PortC,PC6 , , , , , ,I2S2_MCK , , , , , , , , , ,EVENTOUT, +PortC,PC13, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC14, , , , , , , , , , , , , , , ,EVENTOUT, +PortC,PC15, , , , , , , , , , , , , , , ,EVENTOUT, +PortH,PH3 , , , , , , , , , , , , , , , ,EVENTOUT, diff --git a/ports/stm32/can.c b/ports/stm32/can.c index bcc6983594967..9248e216c9782 100644 --- a/ports/stm32/can.c +++ b/ports/stm32/can.c @@ -65,7 +65,7 @@ bool can_init(pyb_can_obj_t *can_obj, uint32_t mode, uint32_t prescaler, uint32_ CAN_TypeDef *CANx = NULL; uint32_t sce_irq = 0; - const pin_obj_t *pins[2]; + const machine_pin_obj_t *pins[2]; switch (can_obj->can_id) { #if defined(MICROPY_HW_CAN1_TX) diff --git a/ports/stm32/dac.c b/ports/stm32/dac.c index 142b7ea387993..252af369c0087 100644 --- a/ports/stm32/dac.c +++ b/ports/stm32/dac.c @@ -324,7 +324,7 @@ STATIC mp_obj_t pyb_dac_make_new(const mp_obj_type_t *type, size_t n_args, size_ if (mp_obj_is_int(args[0])) { dac_id = mp_obj_get_int(args[0]); } else { - const pin_obj_t *pin = pin_find(args[0]); + const machine_pin_obj_t *pin = pin_find(args[0]); if (pin == pin_A4) { dac_id = 1; } else if (pin == pin_A5) { diff --git a/ports/stm32/extint.c b/ports/stm32/extint.c index 7698569149561..f6db1e632880a 100644 --- a/ports/stm32/extint.c +++ b/ports/stm32/extint.c @@ -244,7 +244,7 @@ STATIC const uint8_t nvic_irq_channel[EXTI_NUM_VECTORS] = { // Set override_callback_obj to true if you want to unconditionally set the // callback function. uint extint_register(mp_obj_t pin_obj, uint32_t mode, uint32_t pull, mp_obj_t callback_obj, bool override_callback_obj) { - const pin_obj_t *pin = NULL; + const machine_pin_obj_t *pin = NULL; uint v_line; if (mp_obj_is_int(pin_obj)) { @@ -318,7 +318,7 @@ uint extint_register(mp_obj_t pin_obj, uint32_t mode, uint32_t pull, mp_obj_t ca } // This function is intended to be used by the Pin.irq() method -void extint_register_pin(const pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj) { +void extint_register_pin(const machine_pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj) { uint32_t line = pin->pin; // Check if the ExtInt line is already in use by another Pin/ExtInt @@ -327,7 +327,7 @@ void extint_register_pin(const pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_ if (mp_obj_is_small_int(pyb_extint_callback_arg[line])) { mp_raise_msg_varg(&mp_type_OSError, MP_ERROR_TEXT("ExtInt vector %d is already in use"), line); } else { - const pin_obj_t *other_pin = MP_OBJ_TO_PTR(pyb_extint_callback_arg[line]); + const machine_pin_obj_t *other_pin = MP_OBJ_TO_PTR(pyb_extint_callback_arg[line]); mp_raise_msg_varg(&mp_type_OSError, MP_ERROR_TEXT("IRQ resource already taken by Pin('%q')"), other_pin->name); } @@ -370,7 +370,7 @@ void extint_register_pin(const pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_ } } -void extint_set(const pin_obj_t *pin, uint32_t mode) { +void extint_set(const machine_pin_obj_t *pin, uint32_t mode) { uint32_t line = pin->pin; mp_obj_t *cb = &MP_STATE_PORT(pyb_extint_callback)[line]; diff --git a/ports/stm32/extint.h b/ports/stm32/extint.h index 919e4bb2e8483..d5abb04d654e4 100644 --- a/ports/stm32/extint.h +++ b/ports/stm32/extint.h @@ -70,8 +70,8 @@ void extint_init0(void); uint extint_register(mp_obj_t pin_obj, uint32_t mode, uint32_t pull, mp_obj_t callback_obj, bool override_callback_obj); -void extint_register_pin(const pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj); -void extint_set(const pin_obj_t *pin, uint32_t mode); +void extint_register_pin(const machine_pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj); +void extint_set(const machine_pin_obj_t *pin, uint32_t mode); void extint_enable(uint line); void extint_disable(uint line); diff --git a/ports/stm32/fdcan.c b/ports/stm32/fdcan.c index bcf3e8d6a31d9..640244a3b9d8b 100644 --- a/ports/stm32/fdcan.c +++ b/ports/stm32/fdcan.c @@ -137,7 +137,7 @@ bool can_init(pyb_can_obj_t *can_obj, uint32_t mode, uint32_t prescaler, uint32_ #endif FDCAN_GlobalTypeDef *CANx = NULL; - const pin_obj_t *pins[2]; + const machine_pin_obj_t *pins[2]; switch (can_obj->can_id) { #if defined(MICROPY_HW_CAN1_TX) diff --git a/ports/stm32/lcd.c b/ports/stm32/lcd.c index e5d7f30efbd02..a78718872baed 100644 --- a/ports/stm32/lcd.c +++ b/ports/stm32/lcd.c @@ -89,10 +89,10 @@ typedef struct _pyb_lcd_obj_t { // hardware control for the LCD const spi_t *spi; - const pin_obj_t *pin_cs1; - const pin_obj_t *pin_rst; - const pin_obj_t *pin_a0; - const pin_obj_t *pin_bl; + const machine_pin_obj_t *pin_cs1; + const machine_pin_obj_t *pin_rst; + const machine_pin_obj_t *pin_a0; + const machine_pin_obj_t *pin_bl; // character buffer for stdout-like output char char_buffer[LCD_CHAR_BUF_W * LCD_CHAR_BUF_H]; diff --git a/ports/stm32/led.c b/ports/stm32/led.c index e70c22532c5b3..39b1f7e388814 100644 --- a/ports/stm32/led.c +++ b/ports/stm32/led.c @@ -47,7 +47,7 @@ typedef struct _pyb_led_obj_t { mp_obj_base_t base; mp_uint_t led_id; - const pin_obj_t *led_pin; + const machine_pin_obj_t *led_pin; } pyb_led_obj_t; STATIC const pyb_led_obj_t pyb_led_obj[] = { @@ -73,7 +73,7 @@ STATIC const pyb_led_obj_t pyb_led_obj[] = { void led_init(void) { /* Turn off LEDs and initialize */ for (int led = 0; led < NUM_LEDS; led++) { - const pin_obj_t *led_pin = pyb_led_obj[led].led_pin; + const machine_pin_obj_t *led_pin = pyb_led_obj[led].led_pin; mp_hal_gpio_clock_enable(led_pin->gpio); MICROPY_HW_LED_OFF(led_pin); mp_hal_pin_output(led_pin); @@ -143,7 +143,7 @@ static inline bool led_pwm_is_enabled(int led) { // this function has a large stack so it should not be inlined STATIC void led_pwm_init(int led) __attribute__((noinline)); STATIC void led_pwm_init(int led) { - const pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; + const machine_pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; const led_pwm_config_t *pwm_cfg = &led_pwm_config[led - 1]; // GPIO configuration @@ -192,7 +192,7 @@ STATIC void led_pwm_init(int led) { STATIC void led_pwm_deinit(int led) { // make the LED's pin a standard GPIO output pin - const pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; + const machine_pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; GPIO_TypeDef *g = led_pin->gpio; uint32_t pin = led_pin->pin; static const int mode = 1; // output @@ -211,7 +211,7 @@ void led_state(pyb_led_t led, int state) { return; } - const pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; + const machine_pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; if (state == 0) { // turn LED off MICROPY_HW_LED_OFF(led_pin); @@ -241,7 +241,7 @@ void led_toggle(pyb_led_t led) { #endif // toggle the output data register to toggle the LED state - const pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; + const machine_pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; led_pin->gpio->ODR ^= led_pin->pin_mask; } @@ -261,7 +261,7 @@ int led_get_intensity(pyb_led_t led) { } #endif - const pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; + const machine_pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin; GPIO_TypeDef *gpio = led_pin->gpio; if (gpio->ODR & led_pin->pin_mask) { diff --git a/ports/stm32/machine_adc.c b/ports/stm32/machine_adc.c index 4b644e6c97113..91094427b86cc 100644 --- a/ports/stm32/machine_adc.c +++ b/ports/stm32/machine_adc.c @@ -571,7 +571,7 @@ STATIC mp_obj_t mp_machine_adc_make_new(const mp_obj_type_t *type, size_t n_args sample_time = ADC_SAMPLETIME_DEFAULT_INT; } } else { - const pin_obj_t *pin = pin_find(source); + const machine_pin_obj_t *pin = pin_find(source); if (pin->adc_num & PIN_ADC1) { #if defined(STM32WL) adc = ADC; diff --git a/ports/stm32/make-stmconst.py b/ports/stm32/make-stmconst.py index 4e4f2d7155f87..6d64fe3cfaf4f 100644 --- a/ports/stm32/make-stmconst.py +++ b/ports/stm32/make-stmconst.py @@ -183,22 +183,20 @@ def print_int_obj(val, needed_mpzs): needed_mpzs.add(val) -def print_periph(periph_name, periph_val, needed_qstrs, needed_mpzs): +def print_periph(periph_name, periph_val, needed_mpzs): qstr = periph_name.upper() print("{ MP_ROM_QSTR(MP_QSTR_%s), " % qstr, end="") print_int_obj(periph_val, needed_mpzs) print(" },") - needed_qstrs.add(qstr) -def print_regs(reg_name, reg_defs, needed_qstrs, needed_mpzs): +def print_regs(reg_name, reg_defs, needed_mpzs): reg_name = reg_name.upper() for r in reg_defs: qstr = reg_name + "_" + r[0] print("{ MP_ROM_QSTR(MP_QSTR_%s), " % qstr, end="") print_int_obj(r[1], needed_mpzs) print(" }, // %s-bits, %s" % (r[2], r[3])) - needed_qstrs.add(qstr) # This version of print regs groups registers together into submodules (eg GPIO submodule). @@ -208,7 +206,7 @@ def print_regs(reg_name, reg_defs, needed_qstrs, needed_mpzs): # As such, we don't use this version. # And for the number of constants we have, this function seems to use about the same amount # of ROM as print_regs. -def print_regs_as_submodules(reg_name, reg_defs, modules, needed_qstrs): +def print_regs_as_submodules(reg_name, reg_defs, modules): mod_name_lower = reg_name.lower() + "_" mod_name_upper = mod_name_lower.upper() modules.append((mod_name_lower, mod_name_upper)) @@ -220,14 +218,12 @@ def print_regs_as_submodules(reg_name, reg_defs, modules, needed_qstrs): """ % (mod_name_lower, mod_name_upper) ) - needed_qstrs.add(mod_name_upper) for r in reg_defs: print( " { MP_ROM_QSTR(MP_QSTR_%s), MP_ROM_INT(%#x) }, // %s-bits, %s" % (r[0], r[1], r[2], r[3]) ) - needed_qstrs.add(r[0]) print( """}; @@ -247,13 +243,6 @@ def print_regs_as_submodules(reg_name, reg_defs, modules, needed_qstrs): def main(): cmd_parser = argparse.ArgumentParser(description="Extract ST constants from a C header file.") cmd_parser.add_argument("file", nargs=1, help="input file") - cmd_parser.add_argument( - "-q", - "--qstr", - dest="qstr_filename", - default="build/stmconst_qstr.h", - help="Specified the name of the generated qstr header file", - ) cmd_parser.add_argument( "--mpz", dest="mpz_filename", @@ -269,14 +258,13 @@ def main(): reg_defs["GPIO"].append(["BSRRL", 0x18, 16, "legacy register"]) reg_defs["GPIO"].append(["BSRRH", 0x1A, 16, "legacy register"]) - needed_qstrs = set() needed_mpzs = set() print("// Automatically generated from %s by make-stmconst.py" % args.file[0]) print("") for periph_name, periph_val in periphs: - print_periph(periph_name, periph_val, needed_qstrs, needed_mpzs) + print_periph(periph_name, periph_val, needed_mpzs) for reg in ( "ADC", @@ -309,8 +297,8 @@ def main(): "IPCC", ): if reg in reg_defs: - print_regs(reg, reg_defs[reg], needed_qstrs, needed_mpzs) - # print_regs_as_submodules(reg, reg_defs[reg], modules, needed_qstrs) + print_regs(reg, reg_defs[reg], needed_mpzs) + # print_regs_as_submodules(reg, reg_defs[reg], modules) # print("#define MOD_STM_CONST_MODULES \\") # for mod_lower, mod_upper in modules: @@ -318,12 +306,6 @@ def main(): print("") - with open(args.qstr_filename, "wt") as qstr_file: - print("#if MICROPY_PY_STM_CONST", file=qstr_file) - for qstr in sorted(needed_qstrs): - print("Q({})".format(qstr), file=qstr_file) - print("#endif // MICROPY_PY_STM_CONST", file=qstr_file) - with open(args.mpz_filename, "wt") as mpz_file: for mpz in sorted(needed_mpzs): assert 0 <= mpz <= 0xFFFFFFFF diff --git a/ports/stm32/mboot/Makefile b/ports/stm32/mboot/Makefile index 54fc8f4830828..7be5cca69d7ad 100755 --- a/ports/stm32/mboot/Makefile +++ b/ports/stm32/mboot/Makefile @@ -227,10 +227,8 @@ GEN_QSTRDEFS_GENERATED = $(HEADER_BUILD)/qstrdefs.generated.h GEN_ROOT_POINTERS = $(HEADER_BUILD)/root_pointers.h GEN_PINS_SRC = $(BUILD)/pins_$(BOARD).c GEN_PINS_HDR = $(HEADER_BUILD)/pins.h -GEN_PINS_QSTR = $(HEADER_BUILD)/pins_qstr.h GEN_PINS_AF_CONST = $(HEADER_BUILD)/pins_af_const.h GEN_PINS_AF_DEFS = $(HEADER_BUILD)/pins_af_defs.h -GEN_PINS_AF_PY = $(BUILD)/pins_af.py $(OBJ): $(GEN_QSTRDEFS_GENERATED) $(GEN_ROOT_POINTERS) $(GEN_PINS_AF_DEFS) @@ -245,10 +243,10 @@ $(GEN_ROOT_POINTERS): | $(HEADER_BUILD) $(GEN_PINS_AF_DEFS): $(BOARD_PINS) $(MAKE_PINS) ../$(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD) $(ECHO) "GEN $@" - $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af ../$(AF_FILE) \ - --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) --qstr $(GEN_PINS_QSTR) \ - --af-const $(GEN_PINS_AF_CONST) --af-defs $(GEN_PINS_AF_DEFS) \ - --af-py $(GEN_PINS_AF_PY) > $(GEN_PINS_SRC) + $(Q)$(PYTHON) $(MAKE_PINS) --board-csv $(BOARD_PINS) --af-csv ../$(AF_FILE) --prefix $(PREFIX_FILE) \ + --output-source $(GEN_PINS_SRC) --output-header $(GEN_PINS_HDR) \ + --output-af-const $(GEN_PINS_AF_CONST) --output-af-defs $(GEN_PINS_AF_DEFS) \ + --mboot-mode ######################################### diff --git a/ports/stm32/mphalport.h b/ports/stm32/mphalport.h index 2757d39841306..410aa5a8deeb9 100644 --- a/ports/stm32/mphalport.h +++ b/ports/stm32/mphalport.h @@ -90,7 +90,7 @@ static inline mp_uint_t mp_hal_ticks_cpu(void) { #define MP_HAL_PIN_SPEED_HIGH (GPIO_SPEED_FREQ_HIGH) #define MP_HAL_PIN_SPEED_VERY_HIGH (GPIO_SPEED_FREQ_VERY_HIGH) -#define mp_hal_pin_obj_t const pin_obj_t * +#define mp_hal_pin_obj_t const machine_pin_obj_t * #define mp_hal_get_pin_obj(o) pin_find(o) #define mp_hal_pin_name(p) ((p)->name) #define mp_hal_pin_input(p) mp_hal_pin_config((p), MP_HAL_PIN_MODE_INPUT, MP_HAL_PIN_PULL_NONE, 0) @@ -114,7 +114,7 @@ void mp_hal_gpio_clock_enable(GPIO_TypeDef *gpio); void mp_hal_pin_config(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, uint32_t alt); bool mp_hal_pin_config_alt(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, uint8_t fn, uint8_t unit); void mp_hal_pin_config_speed(mp_hal_pin_obj_t pin_obj, uint32_t speed); -void extint_register_pin(const pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj); +void extint_register_pin(const machine_pin_obj_t *pin, uint32_t mode, bool hard_irq, mp_obj_t callback_obj); mp_obj_base_t *mp_hal_get_spi_obj(mp_obj_t spi_in); diff --git a/ports/stm32/pin.c b/ports/stm32/pin.c index f2db0e20e84f9..599d61de41682 100644 --- a/ports/stm32/pin.c +++ b/ports/stm32/pin.c @@ -97,10 +97,10 @@ void pin_init0(void) { } // C API used to convert a user-supplied pin name into an ordinal pin number. -const pin_obj_t *pin_find(mp_obj_t user_obj) { +const machine_pin_obj_t *pin_find(mp_obj_t user_obj) { const mp_print_t *print = &mp_plat_print; - const pin_obj_t *pin_obj; + const machine_pin_obj_t *pin_obj; // If a pin was provided, then use it if (mp_obj_is_type(user_obj, &pin_type)) { @@ -149,7 +149,7 @@ const pin_obj_t *pin_find(mp_obj_t user_obj) { } // See if the pin name matches a board pin - pin_obj = pin_find_named_pin(&pin_board_pins_locals_dict, user_obj); + pin_obj = pin_find_named_pin(&machine_pin_board_pins_locals_dict, user_obj); if (pin_obj) { if (pin_class_debug) { mp_printf(print, "Pin.board maps "); @@ -162,7 +162,7 @@ const pin_obj_t *pin_find(mp_obj_t user_obj) { } // See if the pin name matches a cpu pin - pin_obj = pin_find_named_pin(&pin_cpu_pins_locals_dict, user_obj); + pin_obj = pin_find_named_pin(&machine_pin_cpu_pins_locals_dict, user_obj); if (pin_obj) { if (pin_class_debug) { mp_printf(print, "Pin.cpu maps "); @@ -180,7 +180,7 @@ const pin_obj_t *pin_find(mp_obj_t user_obj) { /// \method __str__() /// Return a string describing the pin object. STATIC void pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); // pin name mp_printf(print, "Pin(Pin.cpu.%q, mode=Pin.", self->name); @@ -238,7 +238,7 @@ STATIC void pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t } } -STATIC mp_obj_t pin_obj_init_helper(const pin_obj_t *pin, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args); +STATIC mp_obj_t pin_obj_init_helper(const machine_pin_obj_t *pin, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args); /// \classmethod \constructor(id, ...) /// Create a new Pin object associated with the id. If additional arguments are given, @@ -247,7 +247,7 @@ mp_obj_t mp_pin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, mp_arg_check_num(n_args, n_kw, 1, MP_OBJ_FUN_ARGS_MAX, true); // Run an argument through the mapper and return the result. - const pin_obj_t *pin = pin_find(args[0]); + const machine_pin_obj_t *pin = pin_find(args[0]); if (n_args > 1 || n_kw > 0) { // pin mode given, so configure this GPIO @@ -265,7 +265,7 @@ mp_obj_t mp_pin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, // fast method for getting/setting pin value STATIC mp_obj_t pin_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 0, 1, false); - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); if (n_args == 0) { // get pin return MP_OBJ_NEW_SMALL_INT(mp_hal_pin_read(self)); @@ -303,7 +303,7 @@ STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(pin_map_dict_obj, MP_ROM_PTR(&pin_map_dic /// \classmethod af_list() /// Returns an array of alternate functions available for this pin. STATIC mp_obj_t pin_af_list(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t result = mp_obj_new_list(0, NULL); const pin_af_obj_t *af = self->af; @@ -327,7 +327,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pin_debug_fun_obj, 1, 2, pin_debug); STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(pin_debug_obj, MP_ROM_PTR(&pin_debug_fun_obj)); // init(mode, pull=None, alt=-1, *, value, alt) -STATIC mp_obj_t pin_obj_init_helper(const pin_obj_t *self, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +STATIC mp_obj_t pin_obj_init_helper(const machine_pin_obj_t *self, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { static const mp_arg_t allowed_args[] = { { MP_QSTR_mode, MP_ARG_REQUIRED | MP_ARG_INT }, { MP_QSTR_pull, MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE}}, @@ -402,14 +402,14 @@ STATIC mp_obj_t pin_value(size_t n_args, const mp_obj_t *args) { STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pin_value_obj, 1, 2, pin_value); STATIC mp_obj_t pin_off(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_hal_pin_low(self); return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_off_obj, pin_off); STATIC mp_obj_t pin_on(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_hal_pin_high(self); return mp_const_none; } @@ -423,7 +423,7 @@ STATIC mp_obj_t pin_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar { MP_QSTR_trigger, MP_ARG_INT, {.u_int = GPIO_MODE_IT_RISING | GPIO_MODE_IT_FALLING} }, { MP_QSTR_hard, MP_ARG_BOOL, {.u_bool = false} }, }; - pin_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); @@ -441,7 +441,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(pin_irq_obj, 1, pin_irq); /// \method name() /// Get the pin name. STATIC mp_obj_t pin_name(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_QSTR(self->name); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_name_obj, pin_name); @@ -449,11 +449,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_name_obj, pin_name); /// \method names() /// Returns the cpu and board names for this pin. STATIC mp_obj_t pin_names(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t result = mp_obj_new_list(0, NULL); mp_obj_list_append(result, MP_OBJ_NEW_QSTR(self->name)); - const mp_map_t *map = &pin_board_pins_locals_dict.map; + const mp_map_t *map = &machine_pin_board_pins_locals_dict.map; mp_map_elem_t *elem = map->table; for (mp_uint_t i = 0; i < map->used; i++, elem++) { @@ -468,7 +468,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_names_obj, pin_names); /// \method port() /// Get the pin port. STATIC mp_obj_t pin_port(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->port); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_port_obj, pin_port); @@ -476,7 +476,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_port_obj, pin_port); /// \method pin() /// Get the pin number. STATIC mp_obj_t pin_pin(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->pin); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_pin_obj, pin_pin); @@ -484,7 +484,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_pin_obj, pin_pin); /// \method gpio() /// Returns the base address of the GPIO block associated with this pin. STATIC mp_obj_t pin_gpio(mp_obj_t self_in) { - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT((intptr_t)self->gpio); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(pin_gpio_obj, pin_gpio); @@ -572,7 +572,7 @@ STATIC MP_DEFINE_CONST_DICT(pin_locals_dict, pin_locals_dict_table); STATIC mp_uint_t pin_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { (void)errcode; - pin_obj_t *self = MP_OBJ_TO_PTR(self_in); + machine_pin_obj_t *self = MP_OBJ_TO_PTR(self_in); switch (request) { case MP_PIN_READ: { diff --git a/ports/stm32/pin.h b/ports/stm32/pin.h index 2397a9d48ee95..d16c176380262 100644 --- a/ports/stm32/pin.h +++ b/ports/stm32/pin.h @@ -53,7 +53,7 @@ typedef struct { uint32_t pin_mask; pin_gpio_t *gpio; const pin_af_obj_t *af; -} pin_obj_t; +} machine_pin_obj_t; extern const mp_obj_type_t pin_type; extern const mp_obj_type_t pin_af_type; @@ -61,38 +61,22 @@ extern const mp_obj_type_t pin_af_type; // Include all of the individual pin objects #include "genhdr/pins.h" -typedef struct { - const char *name; - const pin_obj_t *pin; -} pin_named_pin_t; - -extern const pin_named_pin_t pin_board_pins[]; -extern const pin_named_pin_t pin_cpu_pins[]; - -// extern pin_map_obj_t pin_map_obj; - -typedef struct { - mp_obj_base_t base; - qstr name; - const pin_named_pin_t *named_pins; -} pin_named_pins_obj_t; - extern const mp_obj_type_t pin_board_pins_obj_type; extern const mp_obj_type_t pin_cpu_pins_obj_type; -extern const mp_obj_dict_t pin_cpu_pins_locals_dict; -extern const mp_obj_dict_t pin_board_pins_locals_dict; +extern const mp_obj_dict_t machine_pin_cpu_pins_locals_dict; +extern const mp_obj_dict_t machine_pin_board_pins_locals_dict; MP_DECLARE_CONST_FUN_OBJ_KW(pin_init_obj); void pin_init0(void); -uint32_t pin_get_mode(const pin_obj_t *pin); -uint32_t pin_get_pull(const pin_obj_t *pin); -uint32_t pin_get_af(const pin_obj_t *pin); -const pin_obj_t *pin_find(mp_obj_t user_obj); -const pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name); -const pin_af_obj_t *pin_find_af(const pin_obj_t *pin, uint8_t fn, uint8_t unit); -const pin_af_obj_t *pin_find_af_by_index(const pin_obj_t *pin, mp_uint_t af_idx); -const pin_af_obj_t *pin_find_af_by_name(const pin_obj_t *pin, const char *name); +uint32_t pin_get_mode(const machine_pin_obj_t *pin); +uint32_t pin_get_pull(const machine_pin_obj_t *pin); +uint32_t pin_get_af(const machine_pin_obj_t *pin); +const machine_pin_obj_t *pin_find(mp_obj_t user_obj); +const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name); +const pin_af_obj_t *pin_find_af(const machine_pin_obj_t *pin, uint8_t fn, uint8_t unit); +const pin_af_obj_t *pin_find_af_by_index(const machine_pin_obj_t *pin, mp_uint_t af_idx); +const pin_af_obj_t *pin_find_af_by_name(const machine_pin_obj_t *pin, const char *name); #endif // MICROPY_INCLUDED_STM32_PIN_H diff --git a/ports/stm32/pin_defs_stm32.c b/ports/stm32/pin_defs_stm32.c index 070005d217d36..8a946fdd3cf9d 100644 --- a/ports/stm32/pin_defs_stm32.c +++ b/ports/stm32/pin_defs_stm32.c @@ -5,7 +5,7 @@ // GPIO_MODE_INPUT, GPIO_MODE_OUTPUT_PP, GPIO_MODE_OUTPUT_OD, // GPIO_MODE_AF_PP, GPIO_MODE_AF_OD, or GPIO_MODE_ANALOG. -uint32_t pin_get_mode(const pin_obj_t *pin) { +uint32_t pin_get_mode(const machine_pin_obj_t *pin) { GPIO_TypeDef *gpio = pin->gpio; uint32_t mode = (gpio->MODER >> (pin->pin * 2)) & 3; if (mode == GPIO_MODE_OUTPUT_PP || mode == GPIO_MODE_AF_PP) { @@ -19,12 +19,12 @@ uint32_t pin_get_mode(const pin_obj_t *pin) { // Returns the pin pullup/pulldown. The value returned by this macro should // be one of GPIO_NOPULL, GPIO_PULLUP, or GPIO_PULLDOWN. -uint32_t pin_get_pull(const pin_obj_t *pin) { +uint32_t pin_get_pull(const machine_pin_obj_t *pin) { return (pin->gpio->PUPDR >> (pin->pin * 2)) & 3; } // Returns the af (alternate function) index currently set for a pin. -uint32_t pin_get_af(const pin_obj_t *pin) { +uint32_t pin_get_af(const machine_pin_obj_t *pin) { return (pin->gpio->AFR[pin->pin >> 3] >> ((pin->pin & 7) * 4)) & 0xf; } diff --git a/ports/stm32/pin_defs_stm32.h b/ports/stm32/pin_defs_stm32.h index 1f950c1179833..6c67b6492422b 100644 --- a/ports/stm32/pin_defs_stm32.h +++ b/ports/stm32/pin_defs_stm32.h @@ -133,6 +133,8 @@ enum { PIN_ADC1 = (1 << 0), PIN_ADC2 = (1 << 1), PIN_ADC3 = (1 << 2), + PIN_ADC4 = (1 << 3), + PIN_ADC5 = (1 << 4), }; typedef GPIO_TypeDef pin_gpio_t; diff --git a/ports/stm32/pin_named_pins.c b/ports/stm32/pin_named_pins.c index 8eeb4ed32b118..7a27158a6dcfa 100644 --- a/ports/stm32/pin_named_pins.c +++ b/ports/stm32/pin_named_pins.c @@ -35,17 +35,17 @@ MP_DEFINE_CONST_OBJ_TYPE( pin_cpu_pins_obj_type, MP_QSTR_cpu, MP_TYPE_FLAG_NONE, - locals_dict, &pin_cpu_pins_locals_dict + locals_dict, &machine_pin_cpu_pins_locals_dict ); MP_DEFINE_CONST_OBJ_TYPE( pin_board_pins_obj_type, MP_QSTR_board, MP_TYPE_FLAG_NONE, - locals_dict, &pin_board_pins_locals_dict + locals_dict, &machine_pin_board_pins_locals_dict ); -const pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name) { +const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name) { const mp_map_t *named_map = &named_pins->map; mp_map_elem_t *named_elem = mp_map_lookup((mp_map_t *)named_map, name, MP_MAP_LOOKUP); if (named_elem != NULL && named_elem->value != MP_OBJ_NULL) { @@ -54,7 +54,7 @@ const pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t na return NULL; } -const pin_af_obj_t *pin_find_af(const pin_obj_t *pin, uint8_t fn, uint8_t unit) { +const pin_af_obj_t *pin_find_af(const machine_pin_obj_t *pin, uint8_t fn, uint8_t unit) { const pin_af_obj_t *af = pin->af; for (mp_uint_t i = 0; i < pin->num_af; i++, af++) { if (af->fn == fn && af->unit == unit) { @@ -64,7 +64,7 @@ const pin_af_obj_t *pin_find_af(const pin_obj_t *pin, uint8_t fn, uint8_t unit) return NULL; } -const pin_af_obj_t *pin_find_af_by_index(const pin_obj_t *pin, mp_uint_t af_idx) { +const pin_af_obj_t *pin_find_af_by_index(const machine_pin_obj_t *pin, mp_uint_t af_idx) { const pin_af_obj_t *af = pin->af; for (mp_uint_t i = 0; i < pin->num_af; i++, af++) { if (af->idx == af_idx) { @@ -75,7 +75,7 @@ const pin_af_obj_t *pin_find_af_by_index(const pin_obj_t *pin, mp_uint_t af_idx) } /* unused -const pin_af_obj_t *pin_find_af_by_name(const pin_obj_t *pin, const char *name) { +const pin_af_obj_t *pin_find_af_by_name(const machine_pin_obj_t *pin, const char *name) { const pin_af_obj_t *af = pin->af; for (mp_uint_t i = 0; i < pin->num_af; i++, af++) { if (strcmp(name, qstr_str(af->name)) == 0) { diff --git a/ports/stm32/pyb_i2c.c b/ports/stm32/pyb_i2c.c index 915eabe0b2f8c..fa38ef372dabe 100644 --- a/ports/stm32/pyb_i2c.c +++ b/ports/stm32/pyb_i2c.c @@ -290,8 +290,8 @@ void i2c_init0(void) { int pyb_i2c_init(I2C_HandleTypeDef *i2c) { int i2c_unit; - const pin_obj_t *scl_pin; - const pin_obj_t *sda_pin; + const machine_pin_obj_t *scl_pin; + const machine_pin_obj_t *sda_pin; if (0) { #if defined(MICROPY_HW_I2C1_SCL) diff --git a/ports/stm32/servo.c b/ports/stm32/servo.c index e0aa2d6b69f83..07cc4eab88536 100644 --- a/ports/stm32/servo.c +++ b/ports/stm32/servo.c @@ -48,7 +48,7 @@ typedef struct _pyb_servo_obj_t { mp_obj_base_t base; - const pin_obj_t *pin; + const machine_pin_obj_t *pin; uint8_t pulse_min; // units of 10us uint8_t pulse_max; // units of 10us uint8_t pulse_centre; // units of 10us diff --git a/ports/stm32/spi.c b/ports/stm32/spi.c index 7b89b48b53e9e..47714a28725ba 100644 --- a/ports/stm32/spi.c +++ b/ports/stm32/spi.c @@ -341,7 +341,7 @@ void spi_set_params(const spi_t *spi_obj, uint32_t prescale, int32_t baudrate, int spi_init(const spi_t *self, bool enable_nss_pin) { SPI_HandleTypeDef *spi = self->spi; uint32_t irqn = 0; - const pin_obj_t *pins[4] = { NULL, NULL, NULL, NULL }; + const machine_pin_obj_t *pins[4] = { NULL, NULL, NULL, NULL }; if (0) { #if defined(MICROPY_HW_SPI1_SCK) diff --git a/ports/stm32/timer.c b/ports/stm32/timer.c index c15b84fe54f95..41e5c6157d5ac 100644 --- a/ports/stm32/timer.c +++ b/ports/stm32/timer.c @@ -1199,7 +1199,7 @@ STATIC mp_obj_t pyb_timer_channel(size_t n_args, const mp_obj_t *pos_args, mp_ma if (!mp_obj_is_type(pin_obj, &pin_type)) { mp_raise_ValueError(MP_ERROR_TEXT("pin argument needs to be be a Pin type")); } - const pin_obj_t *pin = MP_OBJ_TO_PTR(pin_obj); + const machine_pin_obj_t *pin = MP_OBJ_TO_PTR(pin_obj); const pin_af_obj_t *af = pin_find_af(pin, AF_FN_TIM, self->tim_id); if (af == NULL) { mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Pin(%q) doesn't have an alt for Timer(%d)"), pin->name, self->tim_id); diff --git a/ports/stm32/uart.c b/ports/stm32/uart.c index 0d648a6fc1aeb..83e9e0fdd8597 100644 --- a/ports/stm32/uart.c +++ b/ports/stm32/uart.c @@ -250,7 +250,7 @@ bool uart_init(machine_uart_obj_t *uart_obj, uint8_t uart_fn = AF_FN_UART; int uart_unit; - const pin_obj_t *pins[4] = {0}; + const machine_pin_obj_t *pins[4] = {0}; switch (uart_obj->uart_id) { #if defined(MICROPY_HW_UART1_TX) && defined(MICROPY_HW_UART1_RX) diff --git a/ports/unix/Makefile b/ports/unix/Makefile index 52ae8314eb4ce..9f5e01a5ff9b7 100644 --- a/ports/unix/Makefile +++ b/ports/unix/Makefile @@ -229,9 +229,6 @@ OBJ += $(addprefix $(BUILD)/, $(SHARED_SRC_C:.c=.o)) # List of sources for qstr extraction SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) -# Append any auto-generated sources that are needed by sources listed in -# SRC_QSTR -SRC_QSTR_AUTO_DEPS += ifneq ($(FROZEN_MANIFEST),) CFLAGS += -DMPZ_DIG_SIZE=16 # force 16 bits to work on both 32 and 64 bit archs diff --git a/ports/windows/Makefile b/ports/windows/Makefile index 31ac8d8b8847a..47ce664d7bde6 100644 --- a/ports/windows/Makefile +++ b/ports/windows/Makefile @@ -82,9 +82,6 @@ LIB += -lws2_32 # List of sources for qstr extraction SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) -# Append any auto-generated sources that are needed by sources listed in -# SRC_QSTR -SRC_QSTR_AUTO_DEPS += ifneq ($(FROZEN_MANIFEST),) CFLAGS += -DMPZ_DIG_SIZE=16 diff --git a/py/mkrules.mk b/py/mkrules.mk index 8b21c7974dce9..5076559328343 100644 --- a/py/mkrules.mk +++ b/py/mkrules.mk @@ -97,6 +97,10 @@ $(BUILD)/%.pp: %.c $(ECHO) "PreProcess $<" $(Q)$(CPP) $(CFLAGS) -Wp,-C,-dD,-dI -o $@ $< +# Special case for compiling auto-generated source files. +$(BUILD)/%.o: $(BUILD)/%.c + $(call compile_c) + # The following rule uses | to create an order only prerequisite. Order only # prerequisites only get built if they don't exist. They don't cause timestamp # checking to be performed. diff --git a/shared/memzip/README.md b/shared/memzip/README.md index 3938e3198c953..6ffe1d2c6fb82 100644 --- a/shared/memzip/README.md +++ b/shared/memzip/README.md @@ -18,9 +18,6 @@ OBJ += $(BUILD)/memzip-files.o MAKE_MEMZIP = ../shared/memzip/make-memzip.py -$(BUILD)/memzip-files.o: $(BUILD)/memzip-files.c - $(call compile_c) - $(BUILD)/memzip-files.c: $(shell find ${MEMZIP_DIR} -type f) @$(ECHO) "Creating $@" $(Q)$(PYTHON) $(MAKE_MEMZIP) --zip-file $(BUILD)/memzip-files.zip --c-file $@ $(MEMZIP_DIR) diff --git a/tools/boardgen.py b/tools/boardgen.py new file mode 100644 index 0000000000000..caa9fe851c768 --- /dev/null +++ b/tools/boardgen.py @@ -0,0 +1,556 @@ +# This file is part of the MicroPython project, http://micropython.org/ +# +# The MIT License (MIT) +# +# Copyright (c) 2023 Jim Mussared +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# This script contains common functionality to assist a port in implementing +# make-pins.py, which is used to emit compile-time definitions of pin, AF, and +# ADC objects based on inputs from the vendor HAL/SDK and the board +# definition's pins.csv. + +# The pins.csv file can contain empty lines, comments (a line beginning with "#") +# or pin definition lines. Pin definition lines must be of the form: +# +# board,cpu +# +# Where "board" is the user-facing name of the pin as specified by the particular +# board layout and markings, and "cpu" is the corresponding name of the CPU/MCU +# pin. +# +# The "board" entry may be absent if the CPU pin has no additional name, and both +# entries may start with "-" to hide them from the corresponding Python dict of +# pins, and hence hide them from the user (but they are still accessible in C). +# +# For example, take the following pins.csv file: +# +# X1,PA0 +# -X2,PA1 +# X3,-PA2 +# -X4,-PA3 +# ,PA4 +# ,-PA5 +# +# The first row here configures: +# - The CPU pin PA0 is labelled X1. +# - The Python user can access both by the names Pin("X1") and Pin("A0"). +# - The Python user can access both by the members Pin.board.X1 and Pin.cpu.A0. +# - In C code they are available as pyb_pin_X1 and pin_A0. +# +# Prefixing the names with "-" hides them from the user. The following table +# summarises the various possibilities: +# +# pins.csv entry | board name | cpu name | C board name | C cpu name +# ---------------+------------+----------+--------------+----------- +# X1,PA0 "X1" "A0" pyb_pin_X1 pin_A0 +# -X2,PA1 - "A1" pyb_pin_X2 pin_A1 +# X3,-PA2 "X3" - pyb_pin_X3 pin_A2 +# -X4,-PA3 - - pyb_pin_X4 pin_A3 +# ,PA4 - "A4" - pin_A4 +# ,-PA5 - - - pin_A5 + +import argparse +import csv +import os +import sys + + +class PinGeneratorError(Exception): + pass + + +# A port should define a subclass of Pin that knows how to validate cpu/board +# names and emits the required structures. +class Pin: + def __init__(self, cpu_pin_name): + self._cpu_pin_name = cpu_pin_name + # Optional aliases for the board from pins.csv. Each entry is a tuple + # of (name, hidden). Hidden board pins are in pins.csv with with a "-" + # prefix and will available to C but not Python. + self._board_pin_names = set() + # An unavailable pin is one that is not explicitly mentioned at all in + # pins.csv (or added explicitly with PinGenerator.add_cpu_pin). + self._available = False + # A hidden pin is one that is in pins.csv with a "-" prefix and will + # be still available to C but not Python. + self._hidden = False + # Reference to the PinGenerator instance. + self._generator = None + + # The name of the pin to use in MP_QSTR_{} or pin_{}. Defaults to the cpu name. + def name(self): + return self._cpu_pin_name + + # Add a board alias (e.g. from pins.csv). + def add_board_pin_name(self, board_pin_name, hidden=False): + self._board_pin_names.add( + ( + board_pin_name, + hidden, + ) + ) + + # Override this to handle an af specified in af.csv. + def add_af(self, af_idx, af_name, af): + raise NotImplementedError + + # Override this to verify that naming matches the MCU standard (e.g. "GPIOn" or "PXn"). + @staticmethod + def validate_cpu_pin_name(cpu_pin_name): + if not cpu_pin_name.strip(): + raise PinGeneratorError("Missing cpu pin name") + + # Override this to provide additional validation of board names. + @staticmethod + def validate_board_pin_name(board_pin_name): + # TODO: ensure this is a valid Python/C identifier and can be used as MP_QSTR_foo. + pass + + # Must be implemented when using NumericPinGenerator. + # Returns the integer index, or None to exclude this pin from the table. + def index(self): + raise NotImplementedError + + # Can be overridden when using NumericPinGenerator. + # Returns a string which is a C expression that evaluates to the index + # e.g. `GPIO_NUM_7`. + # This is used whenever the index is emitted in source code and defaults + # to just returning the pin index as a literal. + # Return None to exclude this pin from the table. + def index_name(self): + i = self.index() + return str(i) if i is not None else None + + # Returns an expression that defines the pin. e.g. `{ .base { ... }, .x }`. + # This is used as the RHS of the `const machine_pin_obj_t + # pin_EXT_GPIO0_obj =` statements for named pins, and elements of + # `machine_pin_obj_table` for numeric pins. + # This will typically might be implemented as an invocation of a macro + # defined in the port-specific prefix. + def definition(self): + raise NotImplementedError + + # Whether the pin object should be declared as "const". This should be True + # for most pins, but some special cases (e.g. external pins on rp2) might + # need mutable pin objects (e.g. to track current pin state). + def is_const(self): + return True + + # Optionally return a preprocessor expression that can be used to suppress + # this pin (e.g. `MICROPY_HW_ENABLE_GPIOn`). + def enable_macro(self): + return None + + # Override this to output any additional per-pin definitions or other + # content that should appear at the start of the source output. + # This could be used to define additional objects such as IRQs or AFs. + def print_source(self, out_source): + pass + + +# A port should define a subclass of PinGenerator (or NumericPinGenerator). +class PinGenerator: + def __init__(self, pin_type, enable_af=False): + self._pins = [] + self._pin_type = pin_type + self._enable_af = enable_af + + # Allows a port to define a known cpu pin (without relying on it being in the + # csv file). + def add_cpu_pin(self, cpu_pin_name, available=True): + pin = self._pin_type(cpu_pin_name) + pin._available = available + self._pins.append(pin) + pin._generator = self + return pin + + # Iterate just the available pins (i.e. ones in pins.csv). + def available_pins(self, exclude_hidden=False): + for pin in self._pins: + if not pin._available: + continue + if exclude_hidden and pin._hidden: + continue + yield pin + + # Allows a port to add additional command-line arguments to be handled. + def extra_args(self, parser): + pass + + # Load board->cpu mapping from csv. + def parse_board_csv(self, filename): + with open(filename, "r") as csvfile: + rows = csv.reader(csvfile) + for linenum, row in enumerate(rows): + try: + # Skip empty lines, and lines starting with "#". + if len(row) == 0 or row[0].startswith("#"): + continue + + # Lines must be pairs of names. + if len(row) != 2: + raise PinGeneratorError("Expecting two entries in each row") + board_pin_name, cpu_pin_name = (x.strip() for x in row) + + # All rows must include a cpu name. + cpu_hidden = False + if cpu_pin_name.startswith("-"): + cpu_hidden = True + cpu_pin_name = cpu_pin_name[1:] + self._pin_type.validate_cpu_pin_name(cpu_pin_name) + pin = self.find_pin_by_cpu_pin_name(cpu_pin_name, create=True) + pin._available = True # It's in pins.csv so must be available. + pin._hidden = cpu_hidden # Optionally don't make available to Python. + + # Rows can optionally alias to a board name. + if board_pin_name: + board_hidden = False + if board_pin_name.startswith("-"): + board_hidden = True + board_pin_name = board_pin_name[1:] + self._pin_type.validate_board_pin_name(board_pin_name) + pin.add_board_pin_name(board_pin_name, board_hidden) + + # Inject "file:line: " into the exception. + except PinGeneratorError as er: + raise PinGeneratorError("{}:{}: {}".format(filename, linenum, er)) + + def parse_af_csv(self, filename, header_rows=1, pin_col=0, af_col=1): + headings = {} + with open(filename, "r") as csvfile: + rows = csv.reader(csvfile) + for linenum, row in enumerate(rows): + try: + # Skip empty lines, and lines starting with "#". + if len(row) == 0 or row[0].startswith("#"): + continue + + # Consume `header_rows` non-blank/comment rows at the start. + if header_rows: + if not headings: + # If this is the first header row then initialise + # the headings dict. + for af_idx, header in enumerate(row[af_col:]): + headings[af_idx] = header.strip() + header_rows -= 1 + continue + + # Lines must be pairs of names. + if len(row) <= max(pin_col, af_col): + raise PinGeneratorError( + "Expecting {} entries in each row".format(max(pin_col, af_col)) + ) + + cpu_pin_name = row[pin_col].strip() + if cpu_pin_name == "-": + continue + self._pin_type.validate_cpu_pin_name(cpu_pin_name) + pin = self.find_pin_by_cpu_pin_name(cpu_pin_name, create=True) + + for af_idx, af in enumerate(row[af_col:]): + af = af.strip() + if not af: + continue + pin.add_af(af_idx, headings.get(af_idx, ""), af) + + # Inject "file:line: " into the exception. + except PinGeneratorError as er: + raise PinGeneratorError("{}:{}: {}".format(filename, linenum, er)) + + # Find an existing pin. + def find_pin_by_cpu_pin_name(self, cpu_pin_name, create=True): + for pin in self._pins: + if pin._cpu_pin_name == cpu_pin_name: + return pin + if create: + return self.add_cpu_pin(cpu_pin_name, available=False) + else: + raise PinGeneratorError("Unknown cpu pin {}".format(cpu_pin_name)) + + # Print the locals dict for Pin.board. + def print_board_locals_dict(self, out_source): + print(file=out_source) + print( + "STATIC const mp_rom_map_elem_t machine_pin_board_pins_locals_dict_table[] = {", + file=out_source, + ) + for pin in self.available_pins(): + for board_pin_name, board_hidden in pin._board_pin_names: + if board_hidden: + # Don't include hidden pins in Pins.board. + continue + + # We don't use the enable macro for board pins, because they + # shouldn't be referenced in pins.csv unless they're + # available. + print( + " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(pin_{:s}) }},".format( + board_pin_name, + pin.name(), + ), + file=out_source, + ) + print("};", file=out_source) + print( + "MP_DEFINE_CONST_DICT(machine_pin_board_pins_locals_dict, machine_pin_board_pins_locals_dict_table);", + file=out_source, + ) + + # Print the locals dict for Pin.cpu. + def print_cpu_locals_dict(self, out_source): + print(file=out_source) + print( + "STATIC const mp_rom_map_elem_t machine_pin_cpu_pins_locals_dict_table[] = {", + file=out_source, + ) + for pin in self.available_pins(exclude_hidden=True): + m = pin.enable_macro() + if m: + print(" #if {}".format(m), file=out_source) + print( + " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(pin_{:s}) }},".format( + pin.name(), + pin.name(), + ), + file=out_source, + ) + if m: + print(" #endif", file=out_source) + print("};", file=out_source) + print( + "MP_DEFINE_CONST_DICT(machine_pin_cpu_pins_locals_dict, machine_pin_cpu_pins_locals_dict_table);", + file=out_source, + ) + + # NumericPinGenerator can override this to use an entry in machine_pin_obj_table. + def _cpu_pin_pointer(self, pin): + return "&pin_{:s}_obj".format(pin.name()) + + # Allow a port to prefix the board pin macro names with something. + # e.g. STM32 does pyb_pin_NAME whereas other ports using pin_NAME. + def board_name_define_prefix(self): + return "" + + # Print the pin_CPUNAME and pin_BOARDNAME macros. + def print_defines(self, out_header, cpu=True, board=True): + # Provide #defines for each cpu pin. + for pin in self.available_pins(): + print(file=out_header) + m = pin.enable_macro() + if m: + print("#if {}".format(m), file=out_header) + + # #define pin_CPUNAME (...) + if cpu: + print( + "#define pin_{:s} ({:s})".format(pin.name(), self._cpu_pin_pointer(pin)), + file=out_header, + ) + + # #define pin_BOARDNAME (pin_CPUNAME) + if board: + for board_pin_name, _board_hidden in pin._board_pin_names: + # Note: Hidden board pins are still available to C via the macro. + # Note: The RHS isn't wrapped in (), which is necessary to make the + # STATIC_AF_ macro work on STM32. + print( + "#define {:s}pin_{:s} pin_{:s}".format( + self.board_name_define_prefix(), + board_pin_name, + pin.name(), + ), + file=out_header, + ) + + if m: + print("#endif", file=out_header) + + def print_pin_objects(self, out_source): + print(file=out_source) + for pin in self.available_pins(): + m = pin.enable_macro() + if m: + print("#if {}".format(m), file=out_source) + print( + "{:s}machine_pin_obj_t pin_{:s}_obj = {:s};".format( + "const " if pin.is_const() else "", + pin.name(), + pin.definition(), + ), + file=out_source, + ) + if m: + print("#endif", file=out_source) + + def print_pin_object_externs(self, out_header): + print(file=out_header) + for pin in self.available_pins(): + m = pin.enable_macro() + if m: + print("#if {}".format(m), file=out_header) + print( + "extern {:s}machine_pin_obj_t pin_{:s}_obj;".format( + "const " if pin.is_const() else "", + pin.name(), + ), + file=out_header, + ) + if m: + print("#endif", file=out_header) + + def print_source(self, out_source): + self.print_pin_objects(out_source) + self.print_cpu_locals_dict(out_source) + self.print_board_locals_dict(out_source) + + def print_header(self, out_header): + self.print_pin_object_externs(out_header) + self.print_defines(out_header) + + # A port can override this if it has extra input files (e.g. af.csv) to load. + def load_inputs(self, out_source): + # Optionally load pins.csv to get cpu->board name mappings. + if self._enable_af and self.args.af_csv: + print("// --af-csv {:s}".format(self.args.af_csv), file=out_source) + self.parse_af_csv(self.args.af_csv) + + # Optionally load pins.csv to get cpu->board name mappings. + if self.args.board_csv: + print("// --board-csv {:s}".format(self.args.board_csv), file=out_source) + self.parse_board_csv(self.args.board_csv) + + # Prepend the prefix file to the start of the output. + if self.args.prefix: + print("// --prefix {:s}".format(self.args.prefix), file=out_source) + print(file=out_source) + with open(self.args.prefix, "r") as prefix_file: + print(prefix_file.read(), end="", file=out_source) + + # A port can override this to do extra work after the main source+header + # have been written, such as generating additional header files. + def generate_extra_files(self): + pass + + def main(self): + parser = argparse.ArgumentParser(description="Generate board specific pin file") + parser.add_argument("--board-csv") + if self._enable_af: + parser.add_argument("--af-csv") + parser.add_argument("--prefix") + parser.add_argument("--output-source") + parser.add_argument("--output-header") + self.extra_args(parser) + self.args = parser.parse_args() + + try: + with open(self.args.output_source, "w") as out_source: + print("// This file was automatically generated by make-pins.py", file=out_source) + print("//", file=out_source) + + # Load additional files (including port-specific ones). + self.load_inputs(out_source) + + # Allow a port to print arbitrary per-pin content. + for pin in self.available_pins(): + pin.print_source(out_source) + + # Print the tables and dictionaries. + self.print_source(out_source) + + with open(self.args.output_header, "w") as out_header: + self.print_header(out_header) + + self.generate_extra_files() + except PinGeneratorError as er: + print(er) + sys.exit(1) + + +# For ports that use numeric pin identifiers (e.g. ESP32, rp2). +# This emits the machine_pin_obj_t instances as an array (machine_pin_obj_table). +class NumericPinGenerator(PinGenerator): + # This should return a const expression that is the number of GPIO pins + # for this board. + def cpu_table_size(self): + raise NotImplementedError + + def print_cpu_table(self, out_source): + # Print machine_pin_obj_table, where each element is `[n] = {obj}`. + print(file=out_source) + print( + "const machine_pin_obj_t machine_pin_obj_table[{}] = {{".format(self.cpu_table_size()), + file=out_source, + ) + for pin in self.available_pins(): + n = pin.index_name() + if n is None: + continue + + m = pin.enable_macro() + if m: + print(" #if {}".format(m), file=out_source) + print( + " [{:s}] = {:s},".format( + pin.index_name(), + pin.definition(), + ), + file=out_source, + ) + if m: + print(" #endif", file=out_source) + print("};", file=out_source) + + # For pins that do not have an index, print them out in the same style as PinGenerator. + print(file=out_source) + for pin in self.available_pins(): + n = pin.index_name() + if n is not None: + continue + + m = pin.enable_macro() + if m: + print("#if {}".format(m), file=out_source) + print( + "{:s}machine_pin_obj_t pin_{:s}_obj = {:s};".format( + "const " if pin.is_const() else "", + pin.name(), + pin.definition(), + ), + file=out_source, + ) + if m: + print("#endif", file=out_source) + + # Replace PinGenerator's implementation to print the numeric table. + def print_source(self, out_source): + self.print_cpu_table(out_source) + self.print_board_locals_dict(out_source) + + # Replace PinGenerator's implementation to only print the defines. + def print_header(self, out_header): + self.print_defines(out_header) + + def _cpu_pin_pointer(self, pin): + n = pin.index_name() + if n is not None: + return "&machine_pin_obj_table[{:s}]".format(pin.index_name()) + else: + return super()._cpu_pin_pointer(pin) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy