Skip to main content
Importing Modules and Chips

Using M.2 Connectors for MicroMod Modules

Overview

SparkFun's MicroMod ecosystem uses the M.2 Key E edge connector (75 pins, 0.5 mm pitch) to create swappable processor modules. A processor board (e.g., RP2040, ESP32, STM32) plugs into any compatible carrier board via a single M.2 edge connector.

In tscircuit, you model the M.2 connector as a <chip> component. The same component definition works on both sides:

  • Processor board — the processor module exposes signals through the M.2 edge pads.
  • Carrier board — the carrier hosts the physical M.2 socket and routes those signals to headers, sensors, or other peripherals.

MicroMod Signal Map

The MicroMod specification assigns each M.2 pin a fixed function. Odd-numbered pins are GND; even-numbered pins carry signals:

PinSignalNotes
23V3Regulated 3.3 V from carrier
43V3_EN3.3 V enable (active high)
6RESETSystem reset (active low)
8BOOTBootloader entry
10USB_DMUSB D−
12USB_DPUSB D+
16UART_TX1Primary UART transmit
18UART_RX1Primary UART receive
24I2C_SDAPrimary I²C data
26I2C_SCLPrimary I²C clock
34SPI_CSSPI chip select
36SPI_SCKSPI clock
38SPI_COPISPI controller out
40SPI_CIPOSPI controller in
50A0Analog input 0
52A1Analog input 1
56PWM0PWM output 0
58PWM1PWM output 1
60D0Digital I/O 0
62D1Digital I/O 1
64–74G0–G5General-purpose I/O

All odd pins (1, 3, 5 … 75) are GND.

Defining the MicroMod Edge Connector

Model the connector as a <chip> with the full 75-pin label map. Because every odd pin is GND, omit them from schPinArrangement to keep the schematic readable — only signal pins appear on the schematic side.

Connecting a Processor Module

On the processor board, map your MCU's GPIO/peripheral pins to the correct M.2 pin numbers using the connections prop. Use pin number references (sel.U1.pin6) rather than label names when referencing chip pins — label names are not part of the global sel type union.

import { sel } from "@tscircuit/core"

// RP2040 processor mapped to MicroMod signals
<MicroModEdge
name="J1"
connections={{
pin2: "net.3V3", // 3.3 V rail
pin6: sel.U1.pin42, // RUN / nRESET
pin8: "net.BOOT", // BOOTSEL
pin10: "net.USB_DM_EXT", // USB D−
pin12: "net.USB_DP_EXT", // USB D+
pin16: sel.U1.pin2, // GPIO0 → UART_TX1
pin18: sel.U1.pin3, // GPIO1 → UART_RX1
pin24: sel.U1.pin6, // GPIO4 → I2C_SDA
pin26: sel.U1.pin7, // GPIO5 → I2C_SCL
pin34: sel.U1.pin21, // GPIO17 → SPI_CS
pin36: sel.U1.pin22, // GPIO18 → SPI_SCK
pin38: sel.U1.pin23, // GPIO19 → SPI_COPI
pin40: sel.U1.pin20, // GPIO16 → SPI_CIPO
pin50: sel.U1.pin28, // GPIO26/ADC0 → A0
pin52: sel.U1.pin29, // GPIO27/ADC1 → A1
pin56: sel.U1.pin25, // GPIO21 → PWM0
pin60: sel.U1.pin8, // GPIO6 → D0
pin64: sel.U1.pin10, // GPIO8 → G0
}}
/>

Carrier Board Pattern

On the carrier board, the same connector definition appears but connections go outward to headers, sensors, or other chips:

<MicroModEdge
name="J1"
connections={{
pin2: "net.3V3",
pin16: "net.TX_TO_HOST", // route UART_TX1 to debug header
pin24: sel.SENSOR.SDA, // route I2C_SDA to an on-board sensor
pin26: sel.SENSOR.SCL,
pin50: sel.ADC.IN1, // route A0 to ADC chip
}}
/>

All GND pins connect to net.GND via netlabel:

{/* Connect all GND pins with net labels instead of individual connections */}
<netlabel net="GND" anchorSide="top" connection="J1.pin1" />
<netlabel net="GND" anchorSide="top" connection="J1.pin3" />
{/* ... repeat for all odd pins up to pin75 */}

Footprint Note

The MicroMod Key E footprint string edge_connector_75p_m2_key_e is a custom footprint. If the autorouter or renderer does not recognize it, import the footprint from KiCad using the KiCad library importer:

import footprint from "@tscircuit/kicad-footprint/SparkFun-MicroMod/MicroMod_Key_E_Connector.kicad_mod"

See the Importing from KiCad guide for details on using .kicad_mod files in tscircuit.

Full Example: RP2040 Processor Board

The SparkFun MicroMod RP2040 Processor is a complete example that uses this connector. The tscircuit implementation is available in the sparkfun-boards repository as a reference for both the processor module and the M.2 edge connector wiring pattern.