{
  "family": "Core",
  "name": "U.2",
  "rev": "a",
  "tile_id": 7,
  "json_version": "0.59",
  "updated_at": "2026-05-01T12:36:00.689Z",
  "headline": "expanded-I/0 USB-prog. Cortex-M4",
  "description": "The expanded-I/O USB-programmable Core.U.2 is based on the same 80-MHz Cortex-M4 STM32L422 as the smaller Core.U.1, with the top 12 pads (1-5 and 16-22) matching the pad layout of the Core.U.1.  The additional I/O pads provide a user-configurable combination of single-wire and trace debugging, two I2C ports, one SPI port, one quad SPI port, ten 12-bit ADC inputs, multiple timers, capacitive-touch inputs, and an on-board comparator.  The board also includes an onboard LED and a physical button for reset and bootloading (see Application Notes).",
  "application_notes": [
    {
      "sort": 0,
      "details": "Similar to the Core.U.1, when the chip is blank, it will default into the bootloader when connected over USB.  Once there is code in the program space, you need to hold the BOOT0 pin low during reset (either power-on or via the NRST pin) to enter the bootloader.  The physical button will also execute this behavior.",
      "heading": "USB Bootloading",
      "image_url": ""
    },
    {
      "sort": 1,
      "details": "The single-wire debug port is available on pads 13 (SWCLK) and 14 (SWDIO).  While not absolutely required, it is often helpful to have the ability to hold pads 22 (NRST) low when connecting to the debugger.  You can likely also use BOOT0 (via either the pad or the button) to help the debugger connect.",
      "heading": "Single-Wire Debug & Bootloading",
      "image_url": ""
    },
    {
      "sort": 2,
      "details": "The board button will issue a software reset via the NRST pin when pressed for a short (less than ~1sec) time.  When held for more than ~2 seconds and released, the system will enter the bootloader.",
      "heading": "Button",
      "image_url": ""
    },
    {
      "sort": 3,
      "details": "The onboard LED is connected to PA8 in an active-high configuration.",
      "heading": "LED",
      "image_url": ""
    }
  ],
  "package": {
    "pads": 22,
    "type": "T48",
    "size_x": 4000,
    "size_y": 8000,
    "size_z": 0
  },
  "power": [
    {
      "max": 3.6,
      "min": 1.8,
      "type": "system",
      "notes": "for USB communications, the supply voltage should be greater than 3.0V",
      "gnd_pad": [
        "1"
      ],
      "function": "",
      "direction": "input",
      "is_required": true,
      "max_current": "",
      "positive_pad": [
        "20"
      ]
    }
  ],
  "components": [
    {
      "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32l422tb.html",
      "part": "STM32L422TB",
      "datasheet": "https://mosaic-component-datasheets.s3.eu-north-1.amazonaws.com/7/ST_Microelectronics-STM32L422TB.pdf",
      "manufacturer": "ST Microelectronics"
    }
  ],
  "pads": [
    {
      "pad": "1",
      "geometry": {
        "size_x": 1000,
        "size_y": 400,
        "center_x": -1500,
        "center_y": 1600
      },
      "functions": [
        {
          "note": "",
          "type": "power",
          "function": "GND",
          "direction": "input"
        }
      ]
    },
    {
      "pad": "2",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": 800
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A7",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 4,
          "note": "",
          "type": "digital",
          "function": "I2C3.CLK",
          "direction": "bidirectional",
          "interface": "I2C3"
        },
        {
          "af": 5,
          "note": "",
          "type": "digital",
          "function": "SPI1.MOSI",
          "direction": "bidirectional",
          "interface": "SPI1"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC12",
          "direction": "input"
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM1.1N",
          "direction": "output"
        },
        {
          "af": 10,
          "note": "",
          "type": "digital",
          "function": "QSPI.IO2",
          "direction": "bidirectional",
          "interface": "QSPI"
        }
      ]
    },
    {
      "pad": "3",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": 0
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A1",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 4,
          "note": "optional SMBus alert",
          "type": "digital",
          "function": "I2C1.SMBA",
          "direction": "",
          "interface": "I2C1"
        },
        {
          "af": 5,
          "note": "",
          "type": "digital",
          "function": "SPI1.CLK",
          "direction": "bidirectional",
          "interface": "SPI1"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC6",
          "direction": "input"
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM2.2",
          "direction": "output"
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "TIM15.1N",
          "direction": "output"
        },
        {
          "note": "",
          "type": "other",
          "function": "COMP1.+",
          "direction": "input"
        },
        {
          "af": 7,
          "note": "",
          "type": "digital",
          "function": "USART2.RTS_DE",
          "direction": "bidirectional",
          "interface": "USART2"
        }
      ]
    },
    {
      "pad": "4",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -800
      },
      "functions": [
        {
          "type": "digital",
          "function": "B6",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 4,
          "type": "digital",
          "function": "I2C1.CLK",
          "direction": "bidirectional",
          "interface": "I2C1"
        },
        {
          "af": 14,
          "type": "timer",
          "function": "TIM16.1N",
          "direction": "output"
        },
        {
          "af": 1,
          "note": "external trigger",
          "type": "timer",
          "function": "LPTIM1.ETR",
          "direction": "input"
        },
        {
          "af": 7,
          "type": "digital",
          "function": "USART1.TX",
          "direction": "output",
          "interface": "USART1"
        },
        {
          "af": 9,
          "note": "",
          "type": "other",
          "function": "G2.IO3",
          "direction": ""
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "TRACE.D3",
          "direction": ""
        }
      ]
    },
    {
      "pad": "5",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -1600
      },
      "functions": [
        {
          "type": "digital",
          "function": "B7",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 4,
          "type": "digital",
          "function": "I2C1.DAT",
          "direction": "bidirectional",
          "interface": "I2C1"
        },
        {
          "af": 1,
          "type": "timer",
          "function": "LPTIM1.2",
          "direction": "output"
        },
        {
          "af": 7,
          "type": "digital",
          "function": "USART1.RX",
          "direction": "input",
          "interface": "USART1"
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "TRACE.CK",
          "direction": ""
        },
        {
          "af": 9,
          "note": "",
          "type": "other",
          "function": "G2.IO4",
          "direction": ""
        }
      ]
    },
    {
      "pad": "6",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -2400
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A3",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 10,
          "note": "",
          "type": "digital",
          "function": "QSPI.CLK",
          "direction": "bidirectional",
          "interface": "QSPI"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC8",
          "direction": "input"
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM2.4",
          "direction": ""
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "TIM15.2",
          "direction": ""
        },
        {
          "af": 7,
          "note": "",
          "type": "digital",
          "function": "USART2.RX",
          "direction": "",
          "interface": "USART2"
        },
        {
          "af": 8,
          "note": "",
          "type": "digital",
          "function": "LPUART1.RX",
          "direction": "",
          "interface": "LPUART1"
        }
      ]
    },
    {
      "pad": "7",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -3200
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A2",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 10,
          "note": "",
          "type": "digital",
          "function": "QSPI.CS",
          "direction": "",
          "interface": "QSPI"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC7",
          "direction": "input"
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM2.3",
          "direction": ""
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "TIM15.1",
          "direction": ""
        },
        {
          "af": 7,
          "note": "",
          "type": "digital",
          "function": "USART2.TX",
          "direction": "",
          "interface": "USART2"
        },
        {
          "af": 8,
          "note": "",
          "type": "digital",
          "function": "LPUART1.TX",
          "direction": "",
          "interface": "LPUART1"
        }
      ]
    },
    {
      "pad": "8",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -4000
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A0",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC5",
          "direction": ""
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM2.1",
          "direction": ""
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "TIM2.ETR",
          "direction": ""
        },
        {
          "af": 7,
          "note": "",
          "type": "digital",
          "function": "USART2.CTS",
          "direction": "",
          "interface": "USART2"
        },
        {
          "note": "",
          "type": "other",
          "function": "COMP1.IN-",
          "direction": ""
        },
        {
          "af": 12,
          "note": "",
          "type": "other",
          "function": "COMP1.OUT",
          "direction": ""
        }
      ]
    },
    {
      "pad": "9",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -4800
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A6",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 5,
          "note": "",
          "type": "digital",
          "function": "SPI1.MISO",
          "direction": "output",
          "interface": "SPI1"
        },
        {
          "af": 10,
          "note": "",
          "type": "digital",
          "function": "QSPI.IO3",
          "direction": "",
          "interface": "QSPI"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC11",
          "direction": ""
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM1.BKIN",
          "direction": ""
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "TIM16.1",
          "direction": ""
        },
        {
          "af": 8,
          "note": "",
          "type": "digital",
          "function": "LPUART1.CTS",
          "direction": "",
          "interface": "LPUART1"
        },
        {
          "af": 6,
          "note": "",
          "type": "other",
          "function": "COMP1.OUT",
          "direction": ""
        }
      ]
    },
    {
      "pad": "10",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": -1600,
        "center_y": -5600
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A5",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 5,
          "note": "",
          "type": "digital",
          "function": "SPI1.CLK",
          "direction": "",
          "interface": "SPI1"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC10",
          "direction": ""
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM2.1",
          "direction": ""
        },
        {
          "af": 2,
          "note": "",
          "type": "timer",
          "function": "TIM2.ETR",
          "direction": ""
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "LPTIM2.ETR",
          "direction": ""
        },
        {
          "note": "",
          "type": "other",
          "function": "COMP1.IN-",
          "direction": ""
        }
      ]
    },
    {
      "pad": "11",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -5600
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "B0",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "TRACE.D1",
          "direction": ""
        },
        {
          "af": 5,
          "note": "",
          "type": "digital",
          "function": "SPI1.CS",
          "direction": "",
          "interface": "SPI1"
        },
        {
          "af": 10,
          "note": "",
          "type": "digital",
          "function": "QSPI.IO1",
          "direction": "",
          "interface": "QSPI"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC15",
          "direction": ""
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM1.2N",
          "direction": ""
        },
        {
          "af": 12,
          "note": "",
          "type": "other",
          "function": "COMP1.OUT",
          "direction": ""
        }
      ]
    },
    {
      "pad": "12",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -4800
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "B3",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "TRACE.SWO",
          "direction": ""
        },
        {
          "af": 5,
          "note": "",
          "type": "digital",
          "function": "SPI1.CLK",
          "direction": "",
          "interface": "SPI1"
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM2.2",
          "direction": ""
        },
        {
          "af": 7,
          "note": "",
          "type": "digital",
          "function": "USART1.RTS_DE",
          "direction": "",
          "interface": "USART1"
        }
      ]
    },
    {
      "pad": "13",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -4000
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A14",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "SWCLK",
          "direction": ""
        },
        {
          "af": 4,
          "note": "",
          "type": "digital",
          "function": "I2C1.SMBA",
          "direction": "",
          "interface": "I2C1"
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "LPTIM1.OUT",
          "direction": ""
        }
      ]
    },
    {
      "pad": "14",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -3200
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A13",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "SWDIO",
          "direction": ""
        }
      ]
    },
    {
      "pad": "15",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -2400
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "B1",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 0,
          "note": "",
          "type": "system",
          "function": "TRACE.D1",
          "direction": ""
        },
        {
          "af": 10,
          "note": "",
          "type": "digital",
          "function": "QSPI.IO0",
          "direction": "",
          "interface": "QSPI"
        },
        {
          "note": "",
          "type": "analog",
          "function": "ADC16",
          "direction": ""
        },
        {
          "af": 1,
          "note": "",
          "type": "timer",
          "function": "TIM1.3N",
          "direction": ""
        },
        {
          "af": 14,
          "note": "",
          "type": "timer",
          "function": "LPTIM2.1",
          "direction": ""
        },
        {
          "af": 8,
          "note": "",
          "type": "digital",
          "function": "LPUART1.RTS_DE",
          "direction": "",
          "interface": "LPUART1"
        }
      ]
    },
    {
      "pad": "16",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -1600
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A12",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 5,
          "type": "digital",
          "function": "SPI1.MOSI",
          "direction": "output",
          "interface": "SPI1"
        },
        {
          "af": 1,
          "note": "external trigger",
          "type": "timer",
          "function": "TIM1.ETR",
          "direction": "input"
        },
        {
          "af": 7,
          "note": "RS232 ready-to-send / RS485 driver-enable",
          "type": "digital",
          "function": "USART1.RTS_DE",
          "direction": "bidirectional",
          "interface": "USART1"
        },
        {
          "af": 10,
          "type": "digital",
          "function": "USB.DP",
          "direction": "bidirectional",
          "interface": "USB"
        }
      ]
    },
    {
      "pad": "17",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": -800
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A11",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 5,
          "type": "digital",
          "function": "SPI1.MISO",
          "direction": "output",
          "interface": "SPI1"
        },
        {
          "af": 1,
          "type": "timer",
          "function": "TIM1.4",
          "direction": "output"
        },
        {
          "af": 2,
          "note": "break input to disable PWM output",
          "type": "timer",
          "function": "TIM1.BKIN2",
          "direction": "input"
        },
        {
          "af": 12,
          "note": "break input to disable PWM output based on COMP1 output",
          "type": "timer",
          "function": "TIM1.BKIN2_COMP1",
          "direction": "input"
        },
        {
          "af": 7,
          "note": "RS232 clear-to-send",
          "type": "digital",
          "function": "USART1.CTS",
          "direction": "bidirectional",
          "interface": "USART1"
        },
        {
          "af": 6,
          "type": "other",
          "function": "COMP1.OUT",
          "direction": "output"
        },
        {
          "af": 10,
          "type": "digital",
          "function": "USB.DM",
          "direction": "bidirectional",
          "interface": "USB"
        },
        {
          "af": 9,
          "note": "",
          "type": "other",
          "function": "G2.IO1",
          "direction": ""
        }
      ]
    },
    {
      "pad": "18",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": 0
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "B4",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 4,
          "type": "digital",
          "function": "I2C3.DAT",
          "direction": "bidirectional",
          "interface": "I2C3"
        },
        {
          "af": 5,
          "type": "digital",
          "function": "SPI1.MISO",
          "direction": "output",
          "interface": "SPI1"
        },
        {
          "af": 7,
          "note": "RS232 clear-to-send",
          "type": "digital",
          "function": "USART1.CTS",
          "direction": "bidirectional",
          "interface": "USART1"
        },
        {
          "af": 9,
          "note": "",
          "type": "other",
          "function": "G2.IO1",
          "direction": ""
        }
      ]
    },
    {
      "pad": "19",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": 800
      },
      "functions": [
        {
          "note": "",
          "type": "digital",
          "function": "A4",
          "direction": "bidirectional",
          "is_default": true
        },
        {
          "af": 5,
          "type": "digital",
          "function": "SPI1.CS",
          "direction": "bidirectional",
          "interface": "SPI1"
        },
        {
          "af": 14,
          "note": "break input to disable PWM output",
          "type": "timer",
          "function": "LPTIM2.OUT",
          "direction": "output"
        },
        {
          "type": "other",
          "function": "COMP1.-",
          "direction": "input"
        }
      ]
    },
    {
      "pad": "20",
      "geometry": {
        "size_x": 800,
        "size_y": 400,
        "center_x": 1600,
        "center_y": 1600
      },
      "functions": [
        {
          "note": "1.71-3.6V (>=3.3V for USB)",
          "type": "power",
          "function": "V+",
          "direction": "input"
        }
      ]
    },
    {
      "pad": "21",
      "geometry": {
        "size_x": 400,
        "size_y": 800,
        "center_x": 400,
        "center_y": 1600
      },
      "functions": [
        {
          "note": "internal pull-down defaults to run mode, hold high during reset to enter bootloader (or use the button described in the Application Note section)",
          "type": "system",
          "function": "BOOT0",
          "direction": "",
          "is_default": true
        },
        {
          "note": "",
          "type": "digital",
          "function": "PH3",
          "direction": "bidirectional"
        }
      ]
    },
    {
      "pad": "22",
      "geometry": {
        "size_x": 400,
        "size_y": 800,
        "center_x": -400,
        "center_y": 1600
      },
      "functions": [
        {
          "note": "active-low reset with internal pull-up",
          "type": "system",
          "function": "NRST",
          "direction": ""
        }
      ]
    }
  ],
  "interfaces": [
    {
      "name": "I2C1",
      "type": "I2C",
      "parameters": {
        "modes": [
          "master, slave"
        ],
        "addresses": [
          {
            "address": "programmable"
          }
        ],
        "address_bits": [
          7
        ],
        "max_clock_speed": "1MHz"
      },
      "pad_assignments": [
        {
          "pad": "3",
          "role": "bus",
          "function": "I2C1.SMBA"
        },
        {
          "pad": "4",
          "role": "bus",
          "function": "I2C1.CLK",
          "is_required": true
        },
        {
          "pad": "5",
          "role": "bus",
          "function": "I2C1.DAT",
          "is_required": true
        },
        {
          "pad": "13",
          "role": "bus",
          "function": "I2C1.SMBA"
        }
      ],
      "mutually_exclusive": [
        "USART1"
      ]
    },
    {
      "name": "I2C3",
      "type": "I2C",
      "parameters": {
        "modes": [
          "master, slave"
        ],
        "addresses": [
          {
            "address": "programmable"
          }
        ],
        "address_bits": [
          7
        ],
        "max_clock_speed": "1MHz"
      },
      "pad_assignments": [
        {
          "pad": "2",
          "role": "bus",
          "function": "I2C3.CLK",
          "is_required": true
        },
        {
          "pad": "18",
          "role": "bus",
          "function": "I2C3.DAT",
          "is_required": true
        }
      ],
      "mutually_exclusive": [
        "QSPI"
      ]
    },
    {
      "name": "SPI1",
      "type": "SPI",
      "parameters": {
        "modes": [
          "master, slave"
        ],
        "max_clock_speed": "40Mhz (master), 20MHz (slave)"
      },
      "pad_assignments": [
        {
          "pad": "3",
          "role": "bus",
          "function": "SPI1.CLK"
        },
        {
          "pad": "2",
          "role": "bus",
          "function": "SPI1.MOSI"
        },
        {
          "pad": "9",
          "role": "bus",
          "function": "SPI1.MISO"
        },
        {
          "pad": "10",
          "role": "bus",
          "function": "SPI1.CLK"
        },
        {
          "pad": "11",
          "role": "other",
          "function": "SPI1.CS"
        },
        {
          "pad": "12",
          "role": "bus",
          "function": "SPI1.CLK"
        },
        {
          "pad": "16",
          "role": "bus",
          "function": "SPI1.MOSI"
        },
        {
          "pad": "17",
          "role": "bus",
          "function": "SPI1.MISO"
        },
        {
          "pad": "18",
          "role": "bus",
          "function": "SPI1.MISO"
        },
        {
          "pad": "19",
          "role": "other",
          "function": "SPI1.CS"
        }
      ]
    },
    {
      "name": "USB",
      "type": "USB",
      "parameters": {
        "modes": []
      },
      "pad_assignments": [
        {
          "pad": "16",
          "role": "bus",
          "function": "USB.DP",
          "is_required": true
        },
        {
          "pad": "17",
          "role": "bus",
          "function": "USB.DM",
          "is_required": true
        }
      ]
    },
    {
      "name": "USART1",
      "type": "USART",
      "parameters": {
        "modes": []
      },
      "pad_assignments": [
        {
          "pad": "4",
          "role": "bus",
          "function": "USART1.TX",
          "is_required": true
        },
        {
          "pad": "5",
          "role": "bus",
          "function": "USART1.RX",
          "is_required": true
        },
        {
          "pad": "16",
          "role": "bus",
          "function": "USART1.RTS_DE"
        },
        {
          "pad": "17",
          "role": "bus",
          "function": "USART1.CTS"
        },
        {
          "pad": "18",
          "role": "bus",
          "function": "USART1.CTS"
        },
        {
          "pad": "12",
          "role": "bus",
          "function": "USART1.RTS_DE"
        }
      ],
      "mutually_exclusive": [
        "I2C1"
      ]
    },
    {
      "name": "USART2",
      "type": "USART",
      "parameters": {
        "modes": []
      },
      "pad_assignments": [
        {
          "pad": "3",
          "role": "bus",
          "function": "USART2.RTS_DE"
        },
        {
          "pad": "6",
          "role": "bus",
          "function": "USART2.RX"
        },
        {
          "pad": "7",
          "role": "bus",
          "function": "USART2.TX"
        },
        {
          "pad": "8",
          "role": "bus",
          "function": "USART2.CTS"
        }
      ],
      "mutually_exclusive": [
        "LPUART1",
        "QSPI"
      ]
    },
    {
      "name": "LPUART1",
      "type": "LPUART",
      "parameters": {
        "modes": []
      },
      "pad_assignments": [
        {
          "pad": "6",
          "role": "bus",
          "function": "LPUART1.RX"
        },
        {
          "pad": "7",
          "role": "bus",
          "function": "LPUART1.TX"
        },
        {
          "pad": "9",
          "role": "bus",
          "function": "LPUART1.CTS"
        },
        {
          "pad": "15",
          "role": "bus",
          "function": "LPUART1.RTS_DE"
        }
      ],
      "mutually_exclusive": [
        "QSPI",
        "USART2"
      ]
    },
    {
      "name": "QSPI",
      "type": "QSPI",
      "parameters": {
        "modes": []
      },
      "pad_assignments": [
        {
          "pad": "2",
          "role": "bus",
          "function": "QSPI.IO2",
          "is_required": true
        },
        {
          "pad": "6",
          "role": "bus",
          "function": "QSPI.CLK",
          "is_required": true
        },
        {
          "pad": "7",
          "role": "other",
          "function": "QSPI.CS",
          "is_required": true
        },
        {
          "pad": "9",
          "role": "bus",
          "function": "QSPI.IO3",
          "is_required": true
        },
        {
          "pad": "11",
          "role": "bus",
          "function": "QSPI.IO1",
          "is_required": true
        },
        {
          "pad": "15",
          "role": "bus",
          "function": "QSPI.IO0",
          "is_required": true
        }
      ],
      "mutually_exclusive": [
        "I2C3",
        "LPUART1",
        "USART2"
      ]
    }
  ],
  "config": {
    "gpio": {
      "kind": "padconfig",
      "group": "Pinmux",
      "label": "GPIO pad configuration",
      "perPad": {
        "fields": {
          "exti": {
            "kind": "select",
            "when": {
              "direction": "in"
            },
            "default": "none",
            "options": [
              {
                "value": "none"
              },
              {
                "value": "rising"
              },
              {
                "value": "falling"
              },
              {
                "value": "both"
              }
            ]
          },
          "pull": {
            "kind": "select",
            "default": "none",
            "options": [
              {
                "value": "none"
              },
              {
                "value": "up"
              },
              {
                "value": "down"
              }
            ]
          },
          "speed": {
            "kind": "select",
            "default": "medium",
            "options": [
              {
                "value": "low"
              },
              {
                "value": "medium"
              },
              {
                "value": "high"
              },
              {
                "value": "very-high"
              }
            ]
          },
          "direction": {
            "kind": "select",
            "default": "in",
            "options": [
              {
                "value": "in"
              },
              {
                "value": "out"
              }
            ]
          },
          "output_default": {
            "kind": "select",
            "when": {
              "direction": "out"
            },
            "default": "low",
            "options": [
              {
                "value": "low"
              },
              {
                "value": "high"
              }
            ]
          }
        }
      },
      "appliesTo": {
        "selector": "pads.<padNum>",
        "whereValueDerived": {
          "role": "gpio"
        }
      }
    },
    "pads": {
      "kind": "padmux",
      "group": "Pinmux",
      "label": "Pad function assignments",
      "perPad": {
        "2": {
          "label": "Pad 2",
          "default": "A7",
          "options": [
            {
              "value": "A7",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 4,
              "value": "I2C3.CLK",
              "interface": "I2C3"
            },
            {
              "af": 5,
              "value": "SPI1.MOSI",
              "interface": "SPI1"
            },
            {
              "value": "ADC12",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM1.1N",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 10,
              "value": "QSPI.IO2",
              "interface": "QSPI"
            }
          ]
        },
        "3": {
          "label": "Pad 3",
          "default": "A1",
          "options": [
            {
              "value": "A1",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 4,
              "value": "I2C1.SMBA",
              "interface": "I2C1"
            },
            {
              "af": 5,
              "value": "SPI1.CLK",
              "interface": "SPI1"
            },
            {
              "value": "ADC6",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM2.2",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 14,
              "value": "TIM15.1N",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "value": "COMP1.+"
            },
            {
              "af": 7,
              "value": "USART2.RTS_DE",
              "interface": "USART2"
            }
          ]
        },
        "4": {
          "label": "Pad 4",
          "default": "B6",
          "options": [
            {
              "value": "B6",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 4,
              "value": "I2C1.CLK",
              "interface": "I2C1"
            },
            {
              "af": 14,
              "value": "TIM16.1N",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 1,
              "value": "LPTIM1.ETR",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "af": 7,
              "value": "USART1.TX",
              "interface": "USART1"
            },
            {
              "af": 9,
              "value": "G2.IO3"
            },
            {
              "af": 0,
              "value": "TRACE.D3",
              "derived": {
                "role": "system"
              }
            }
          ]
        },
        "5": {
          "label": "Pad 5",
          "default": "B7",
          "options": [
            {
              "value": "B7",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 4,
              "value": "I2C1.DAT",
              "interface": "I2C1"
            },
            {
              "af": 1,
              "value": "LPTIM1.2",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 7,
              "value": "USART1.RX",
              "interface": "USART1"
            },
            {
              "af": 0,
              "value": "TRACE.CK",
              "derived": {
                "role": "system"
              }
            },
            {
              "af": 9,
              "value": "G2.IO4"
            }
          ]
        },
        "6": {
          "label": "Pad 6",
          "default": "A3",
          "options": [
            {
              "value": "A3",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 10,
              "value": "QSPI.CLK",
              "interface": "QSPI"
            },
            {
              "value": "ADC8",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM2.4",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 14,
              "value": "TIM15.2",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 7,
              "value": "USART2.RX",
              "interface": "USART2"
            },
            {
              "af": 8,
              "value": "LPUART1.RX",
              "interface": "LPUART1"
            }
          ]
        },
        "7": {
          "label": "Pad 7",
          "default": "A2",
          "options": [
            {
              "value": "A2",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 10,
              "value": "QSPI.CS",
              "interface": "QSPI"
            },
            {
              "value": "ADC7",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM2.3",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 14,
              "value": "TIM15.1",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 7,
              "value": "USART2.TX",
              "interface": "USART2"
            },
            {
              "af": 8,
              "value": "LPUART1.TX",
              "interface": "LPUART1"
            }
          ]
        },
        "8": {
          "label": "Pad 8",
          "default": "A0",
          "options": [
            {
              "value": "A0",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "value": "ADC5",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM2.1",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 14,
              "value": "TIM2.ETR",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "af": 7,
              "value": "USART2.CTS",
              "interface": "USART2"
            },
            {
              "value": "COMP1.IN-"
            },
            {
              "af": 12,
              "value": "COMP1.OUT"
            }
          ]
        },
        "9": {
          "label": "Pad 9",
          "default": "A6",
          "options": [
            {
              "value": "A6",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 5,
              "value": "SPI1.MISO",
              "interface": "SPI1"
            },
            {
              "af": 10,
              "value": "QSPI.IO3",
              "interface": "QSPI"
            },
            {
              "value": "ADC11",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM1.BKIN",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "af": 14,
              "value": "TIM16.1",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 8,
              "value": "LPUART1.CTS",
              "interface": "LPUART1"
            },
            {
              "af": 6,
              "value": "COMP1.OUT"
            }
          ]
        },
        "10": {
          "label": "Pad 10",
          "default": "A5",
          "options": [
            {
              "value": "A5",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 5,
              "value": "SPI1.CLK",
              "interface": "SPI1"
            },
            {
              "value": "ADC10",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM2.1",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 2,
              "value": "TIM2.ETR",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "af": 14,
              "value": "LPTIM2.ETR",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "value": "COMP1.IN-"
            }
          ]
        },
        "11": {
          "label": "Pad 11",
          "default": "B0",
          "options": [
            {
              "value": "B0",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 0,
              "value": "TRACE.D1",
              "derived": {
                "role": "system"
              }
            },
            {
              "af": 5,
              "value": "SPI1.CS",
              "interface": "SPI1"
            },
            {
              "af": 10,
              "value": "QSPI.IO1",
              "interface": "QSPI"
            },
            {
              "value": "ADC15",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM1.2N",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 12,
              "value": "COMP1.OUT"
            }
          ]
        },
        "12": {
          "label": "Pad 12",
          "default": "B3",
          "options": [
            {
              "value": "B3",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 0,
              "value": "TRACE.SWO",
              "derived": {
                "role": "system"
              }
            },
            {
              "af": 5,
              "value": "SPI1.CLK",
              "interface": "SPI1"
            },
            {
              "af": 1,
              "value": "TIM2.2",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 7,
              "value": "USART1.RTS_DE",
              "interface": "USART1"
            }
          ]
        },
        "13": {
          "label": "Pad 13",
          "default": "A14",
          "options": [
            {
              "value": "A14",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 0,
              "value": "SWCLK",
              "derived": {
                "role": "system"
              }
            },
            {
              "af": 4,
              "value": "I2C1.SMBA",
              "interface": "I2C1"
            },
            {
              "af": 1,
              "value": "LPTIM1.OUT",
              "derived": {
                "role": "timer-output"
              }
            }
          ]
        },
        "14": {
          "label": "Pad 14",
          "default": "A13",
          "options": [
            {
              "value": "A13",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 0,
              "value": "SWDIO",
              "derived": {
                "role": "system"
              }
            }
          ]
        },
        "15": {
          "label": "Pad 15",
          "default": "B1",
          "options": [
            {
              "value": "B1",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 0,
              "value": "TRACE.D1",
              "derived": {
                "role": "system"
              }
            },
            {
              "af": 10,
              "value": "QSPI.IO0",
              "interface": "QSPI"
            },
            {
              "value": "ADC16",
              "derived": {
                "role": "analog"
              }
            },
            {
              "af": 1,
              "value": "TIM1.3N",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 14,
              "value": "LPTIM2.1",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 8,
              "value": "LPUART1.RTS_DE",
              "interface": "LPUART1"
            }
          ]
        },
        "16": {
          "label": "Pad 16",
          "default": "A12",
          "options": [
            {
              "value": "A12",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 5,
              "value": "SPI1.MOSI",
              "interface": "SPI1"
            },
            {
              "af": 1,
              "value": "TIM1.ETR",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "af": 7,
              "value": "USART1.RTS_DE",
              "interface": "USART1"
            },
            {
              "af": 10,
              "value": "USB.DP",
              "interface": "USB"
            }
          ]
        },
        "17": {
          "label": "Pad 17",
          "default": "A11",
          "options": [
            {
              "value": "A11",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 5,
              "value": "SPI1.MISO",
              "interface": "SPI1"
            },
            {
              "af": 1,
              "value": "TIM1.4",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 2,
              "value": "TIM1.BKIN2",
              "derived": {
                "role": "timer-input"
              }
            },
            {
              "af": 12,
              "value": "TIM1.BKIN2_COMP1",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "af": 7,
              "value": "USART1.CTS",
              "interface": "USART1"
            },
            {
              "af": 6,
              "value": "COMP1.OUT"
            },
            {
              "af": 10,
              "value": "USB.DM",
              "interface": "USB"
            },
            {
              "af": 9,
              "value": "G2.IO1"
            }
          ]
        },
        "18": {
          "label": "Pad 18",
          "default": "B4",
          "options": [
            {
              "value": "B4",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 4,
              "value": "I2C3.DAT",
              "interface": "I2C3"
            },
            {
              "af": 5,
              "value": "SPI1.MISO",
              "interface": "SPI1"
            },
            {
              "af": 7,
              "value": "USART1.CTS",
              "interface": "USART1"
            },
            {
              "af": 9,
              "value": "G2.IO1"
            }
          ]
        },
        "19": {
          "label": "Pad 19",
          "default": "A4",
          "options": [
            {
              "value": "A4",
              "derived": {
                "role": "gpio"
              }
            },
            {
              "af": 5,
              "value": "SPI1.CS",
              "interface": "SPI1"
            },
            {
              "af": 14,
              "value": "LPTIM2.OUT",
              "derived": {
                "role": "timer-output"
              }
            },
            {
              "value": "COMP1.-"
            }
          ]
        },
        "21": {
          "label": "Pad 21",
          "default": "BOOT0",
          "options": [
            {
              "value": "BOOT0",
              "derived": {
                "role": "system"
              }
            },
            {
              "value": "PH3",
              "derived": {
                "role": "gpio"
              }
            }
          ]
        }
      },
      "derives": "catalog.pads"
    },
    "clock": {
      "kind": "select",
      "group": "Clock",
      "label": "Clock configuration",
      "default": "medium",
      "options": [
        {
          "label": "Low (8MHz, MSI)",
          "value": "low",
          "firmware_contract": [
            {
              "type": "clock",
              "source": "msi",
              "sysclk_mhz": 8
            }
          ]
        },
        {
          "label": "Medium (16MHz, MSI)",
          "value": "medium",
          "firmware_contract": [
            {
              "type": "clock",
              "source": "msi",
              "sysclk_mhz": 16
            }
          ]
        },
        {
          "label": "High (48MHz, MSI)",
          "value": "high",
          "firmware_contract": [
            {
              "type": "clock",
              "source": "msi",
              "sysclk_mhz": 48
            }
          ]
        },
        {
          "label": "Max (80MHz, HSI16 + PLL)",
          "value": "max",
          "firmware_contract": [
            {
              "pll": true,
              "type": "clock",
              "source": "hsi16",
              "sysclk_mhz": 80
            }
          ]
        }
      ]
    },
    "bootloader": {
      "kind": "multiselect",
      "group": "Bootloader",
      "label": "Programming methods",
      "default": [],
      "options": [
        {
          "value": "USB_DFU"
        },
        {
          "value": "USART1"
        },
        {
          "value": "USART2"
        },
        {
          "value": "USART3"
        },
        {
          "value": "I2C1"
        },
        {
          "value": "I2C3"
        },
        {
          "value": "SPI1"
        }
      ]
    },
    "interfaces": {
      "kind": "instances",
      "group": "Interfaces",
      "label": "Interfaces",
      "derives": "catalog.interfaces",
      "defaults": {
        "role": {
          "kind": "select",
          "when": {
            "enabled": true
          },
          "default": "master",
          "options": [
            {
              "value": "master"
            },
            {
              "value": "slave"
            }
          ]
        },
        "speed": {
          "max": 1000000,
          "min": 100000,
          "kind": "number",
          "unit": "Hz",
          "when": {
            "enabled": true
          },
          "default": 400000
        },
        "enabled": {
          "kind": "boolean",
          "default": false
        }
      },
      "perInstance": {
        "USB": {
          "fields": {
            "role": {
              "kind": "select",
              "when": {
                "enabled": true
              },
              "default": "device",
              "options": [
                {
                  "value": "host"
                },
                {
                  "value": "device"
                }
              ]
            },
            "deviceClass": {
              "kind": "select",
              "when": {
                "enabled": true
              },
              "default": "cdc",
              "options": [
                {
                  "value": "none"
                },
                {
                  "value": "cdc"
                },
                {
                  "value": "hid"
                },
                {
                  "value": "dfu"
                },
                {
                  "value": "msc"
                }
              ]
            }
          },
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "usb",
                "tag": "USB.bus",
                "signalsFrom": "interfaces.USB.pad_assignments"
              }
            ]
          },
          "requires": {
            "predicates": {
              "pads.16": "USB.DP",
              "pads.17": "USB.DM"
            }
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.USB"
              }
            ]
          }
        },
        "I2C1": {
          "fields": {
            "address": {
              "max": 119,
              "min": 8,
              "kind": "number",
              "unit": "7-bit",
              "when": {
                "role": "slave"
              },
              "default": 66
            }
          },
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "i2c",
                "tag": "I2C1.bus",
                "signalsFrom": "interfaces.I2C1.pad_assignments"
              }
            ]
          },
          "requires": {
            "predicates": {
              "pads.4": "I2C1.CLK",
              "pads.5": "I2C1.DAT"
            }
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.I2C1"
              }
            ]
          }
        },
        "I2C3": {
          "fields": {
            "address": {
              "max": 119,
              "min": 8,
              "kind": "number",
              "unit": "7-bit",
              "when": {
                "role": "slave"
              },
              "default": 66
            }
          },
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "i2c",
                "tag": "I2C3.bus",
                "signalsFrom": "interfaces.I2C3.pad_assignments"
              }
            ]
          },
          "requires": {
            "predicates": {
              "pads.2": "I2C3.CLK",
              "pads.18": "I2C3.DAT"
            }
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.I2C3"
              }
            ]
          }
        },
        "QSPI": {
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "qspi",
                "tag": "QSPI.bus",
                "signalsFrom": "interfaces.QSPI.pad_assignments"
              }
            ]
          },
          "requires": {
            "predicates": {
              "pads.2": "QSPI.IO2",
              "pads.6": "QSPI.CLK",
              "pads.7": "QSPI.CS",
              "pads.9": "QSPI.IO3",
              "pads.11": "QSPI.IO1",
              "pads.15": "QSPI.IO0"
            }
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.QSPI"
              }
            ]
          }
        },
        "SPI1": {
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "spi",
                "tag": "SPI1.bus",
                "signalsFrom": "interfaces.SPI1.pad_assignments"
              }
            ]
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.SPI1"
              }
            ]
          }
        },
        "USART1": {
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "uart",
                "tag": "USART1.bus",
                "signalsFrom": "interfaces.USART1.pad_assignments"
              }
            ]
          },
          "requires": {
            "predicates": {
              "pads.4": "USART1.TX",
              "pads.5": "USART1.RX"
            }
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.USART1"
              }
            ]
          }
        },
        "USART2": {
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "uart",
                "tag": "USART2.bus",
                "signalsFrom": "interfaces.USART2.pad_assignments"
              }
            ]
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.USART2"
              }
            ]
          }
        },
        "LPUART1": {
          "netlist": {
            "when": {
              "enabled": true
            },
            "buses": [
              {
                "bus": "uart",
                "tag": "LPUART1.bus",
                "signalsFrom": "interfaces.LPUART1.pad_assignments"
              }
            ]
          },
          "firmware_contract": {
            "entries": [
              {
                "via": "register",
                "type": "register",
                "value": 1,
                "register": "RCC.CLK_EN.LPUART1"
              }
            ]
          }
        }
      }
    }
  },
  "features": {
    "led": {
      "kind": "led",
      "color": "red",
      "label": "Status LED",
      "control": {
        "pin": "PA8",
        "via": "gpio",
        "polarity": "active-high"
      },
      "center_x": 1600,
      "center_y": 200,
      "rotation": 90
    },
    "clock": {
      "kind": "clock",
      "sources": [
        {
          "type": "hsi16",
          "description": "16MHz internal RC",
          "frequency_mhz": 16
        },
        {
          "type": "msi",
          "description": "Multi-speed internal RC (100kHz-48MHz)",
          "frequency_mhz": 4
        },
        {
          "type": "hsi48",
          "description": "48MHz internal RC (USB)",
          "frequency_mhz": 48
        }
      ],
      "boot_source": "hsi16"
    },
    "button": {
      "kind": "button",
      "label": "Reset / bootloader button",
      "wired_to": "NRST",
      "behaviors": [
        {
          "action": "soft_reset",
          "trigger": "short_press",
          "duration": "<1s",
          "description": "press briefly for software reset (drives NRST)"
        },
        {
          "action": "bootloader_entry",
          "trigger": "long_press",
          "duration": ">2s",
          "description": "hold and release to enter the bootloader"
        }
      ]
    }
  }
}