Pinout
All Alp Lab modules conform to the E1M open standard, which fixes the pad-to-signal assignments at the default-function level plus GPIO as a universal secondary on every digital pad.
| Form factor | Outline | Pad count | LGA pitch |
|---|---|---|---|
| E1M | 35 × 35 mm | 312 | 0.8 mm |
| E1M-X | 45 × 65 mm | 496 | 0.8 mm |
Machine-readable pinout
The canonical pinout is published as JSON in alplabai/e1m-spec:
| File | Description |
|---|---|
pinout/v1.json | E1M (35 × 35 mm) pinout, every pad's coordinate + signals |
pinout/x-v1.json | E1M-X (45 × 65 mm) pinout |
pinout/schema/loom-v1.schema.json | JSON Schema validating both pinouts |
Consume the JSON directly in EDA tools, schematic generators, or the ALP SDK's orchestrator at scripts/alp_orchestrate.py. The schema is named Loom v1.
Signal groups
The E1M interface carries the following classes (every pad declares a default function plus the alt-functions it can carry):
Power
VBAT/VIN— main system inputV3V3/V1V8— internal voltage rails (output by the SoM)VBAT_BACKUP— RTC / backup-domain railGND— ground reference (many pads)
Communication
- SPI — multiple controllers (
SPI0..SPI3) - I²C / I³C — multiple buses (
I2C0..I2C3); some pads support I³C - UART — multiple channels (
UART0..UART5) - CAN / CAN-FD —
CAN0 - USB — USB 2.0 (E1M) and USB 3.0 (E1M-X)
- SDIO —
SDIO0,SDIO1
High-speed (E1M-X only)
- Ethernet — dual RGMII MACs + MDIO (V2N module exposes both via RTL8211FDI PHYs)
- PCIe —
PCIE0,PCIE1 - MIPI CSI-2 — multiple lanes for camera input
- MIPI DSI — display output
- Parallel LCD —
LCD0
Audio
- I²S / SAI —
I2S0,I2S1 - PDM —
PDM0(digital microphone input)
Analog
- ADC —
ADC0..ADC2 - DAC —
DAC0,DAC1 - Quadrature encoder —
ENC0..ENC3
Control / system
- PWM —
PWM0..PWM7 - GPIO — universal secondary on every digital pad
- SWD / JTAG — debug interface
- RESET#, BOOT#, MODULE_EN, WDT_INT — system control signals
- BOARD_ID ADC — hw_rev detect (see
<alp/hw_info.h>)
Default-function vs alt-function
Each pad has exactly one default function that every conformant SoM shall carry on that pad. The default is what a generic carrier should wire if it wants vendor-portable behaviour.
Beyond default + GPIO, pads may carry alt-functions chosen by the SoM vendor. These are declared in the per-SoM manifest (metadata/e1m_modules/<MPN>.yaml in the ALP SDK). Alt-functions are not part of E1M conformance — relying on them locks you to a specific SoM family.
Naming convention
Pad identifiers follow the BGA-style column-letter / row-number convention in the coordinate space of the form factor:
A1,B2, … on E1M (35 × 35)A1, …,AQ15on E1M-X (45 × 65)
Signal names match the silkscreen field of the corresponding pad in the JSON pinout.
ALP SDK access
In firmware, address peripheral instances through the portable IDs in <alp/e1m_pinout.h>:
alp_i2c_t *bus = alp_i2c_open(&(alp_i2c_config_t){
.bus_id = E1M_I2C0,
.bitrate_hz = 400000u,
});
E1M_<CLASS>_COUNT macros document the cross-SoM-portable instance count per class — apps that respect these bounds work across every conformant SoM. See the <alp/peripheral.h> reference.
Carrier-board design
For routing rules, decoupling, and footprint guidance, see the Design Guide.