Skip to the content
2 layers40 × 60 mmMAIN LITE, the printed circuit board in 3D

MainLite: minimal STM32H733ZG module (AMS / ECU / uDV on a backplane) — KiCad design + machine-readable pin model

Size
40 × 60 mm
Copper layers
2
Thickness
1.2 mm
Parts
80
Nets
159
Pads
401
Tracks, vias
1,034, 174
Pours
5
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
5 Oct 2026
Updated
2 Nov 2026

Overview

MAIN LITE is an open-source printed circuit board by isc-fs, from the isc-fs/IFS08-ES-MainLite repository on GitHub. It is a 2-layer board of 40 × 60 mm with 80 parts on 159 nets, routed with 1,034 tracks and 174 vias.

It is built around the TCAN330D, BMI088 and LD39200PU33R, with the ESD9B5.0ST5G among its other parts. Its parts include 29 resistors, 26 capacitors, 6 ICs, 6 diodes and 5 connectors. It belongs with the STM32 boards of this library.

Main components

4

README

README.md
isc-full-primary

IFS08-ES-MainLite

Hardware design, KiCad schematic and PCB layout of the MainLite, the minimal STM32H733ZG control module of the IFS08, developed for the ISC Formula Student Racing Team (Season 2025/2026). Mounted on a backplane, the same module becomes the AMS, the ECU or the uDV.

Formula Student Season [blocked] Hardware [blocked] Microcontroller [blocked] CAN Bus [blocked]

View Work Order PDF Download Word Document Schematic PDF Interactive BOM Pin model


Getting started

  1. Create a GitHub account if you don't have one yet.

  2. Download and install GitHub Desktop (beginner) or Git CLI (advanced).

  3. Clone this repository to your machine:

    • SSH: git@github.com:isc-fs/IFS08-ES-MainLite.git
    • HTTPS: https://github.com/isc-fs/IFS08-ES-MainLite.git
  4. Open IFS08-MainLite/MAIN_LITE.kicad_pro with KiCad 9.x.


How we work with this repository

Main branches

The repository follows standard ISC branching rules:

  • main is the production branch. It contains only validated hardware releases, schematics, and documentation ready for track operations. Never work directly on it.
  • dev (or active feature branches) is the development and integration point. Never commit directly to main — all changes arrive through a reviewed Pull Request.
text
main  ──────────────────●──────────────────────●──▶  (validated releases only)
                        ↑                      ↑
dev   ──────●───●───●───●───●───●───●───●───●──●──▶  (continuous integration)
            ↑   ↑       ↑   ↑   ↑       ↑   ↑
          feat/1 fix/1 feat/2 fix/2   feat/3 fix/3

Feature branches

All work — whether a new hardware revision, firmware update, or bug fix — is done on a feature branch created from dev (or main). When the work is ready, a Pull Request is opened, reviewed, merged, and the branch is deleted.

text
feat/<n>   →  new functionality / hardware addition (feat/1, feat/2, feat/3 ...)
fix/<n>    →  bug fix / schematic correction       (fix/1,  fix/2,  fix/3  ...)

Step-by-step workflow

  1. Create the branch:
    bash
    git checkout dev
    git pull origin dev
    git checkout -b feat/your-feature-name
  2. Work and commit:
    bash
    git add .
    git commit -m "feat(hw): add reverse polarity protection to 5V input"
  3. Push and open Pull Request:
    bash
    git push origin feat/your-feature-name
    Open a PR against dev, verify 0 KiCad DRC/ERC errors, provide test evidence, and request review from the Electronics Subsystem Technical Director.

1. Project Overview & System Purpose

The MainLite is a small, self-contained STM32H733ZG module: MCU, 3.3 V regulation, three CAN transceivers, IMU, microSD, USB-C and SWD. Everything that changes between car subsystems lives on the backplane it plugs into through two 1×18 2.54 mm headers (J3 and J4):

RoleNode id (CAN bootloader)Flash bus
ECU — vehicle control unit0x1FDCAN2
AMS — accumulator management system0x2FDCAN1
uDV — driverless interface0x3FDCAN2

Every MainLite carries the ISC CAN bootloader in flash sector 0.

text
                 +--------------------------------------------------------------+
   USB-C (J5) ---+  ESD (D3/D4)   +5V <- VBUS (D11)        SWD (J2: GND/CLK/DIO/VDD)
                 |                                                              |
   +5V (J4.17/18)+--> LD39200 (U1) --> VDD 3.3 V --> J4.15/16                   |
                 |                                                              |
                 |      +--------------------------------------------+         |
                 |      |        STM32H733ZGTx (U5, LQFP-144)         |         |
                 |      |  HSE 24 MHz (Y1)                            |         |
                 |      +--+---------+---------+---------+------+----+         |
                 |         |FDCAN1   |FDCAN2   |FDCAN3   |I2C2  |SDMMC1        |
                 |      TCAN330   TCAN330   TCAN330   BMI088  microSD (J1)      |
                 |       (U2)      (U3)      (U4)     (IC1)    4-bit, CD PE3    |
                 |      120R R1   120R R5   120R R9                             |
                 +--------+---------+---------+-----------------------------+---+
                          |         |         |                             |
                   J4.3/4 CAN1  J4.5/6 CAN2  J4.7/8 CAN3     J3: 13 GPIO, USART10, 1-Wire
                                                            J4: SPI1 + nRF24 CS/CE/IRQ

2. Hardware Architecture & Electrical Specifications

BlockPartNotes
MCUSTM32H733ZGTx (U5)Cortex-M7 @ 550 MHz, 1 MB flash, LQFP-144
Clock24 MHz crystal (Y1)HSE on PH0/PH1, 10 pF load caps (C5/C6)
3.3 V railST LD39200PU33R (U1)From +5V (backplane J4.17/18 or USB VBUS through D11)
CAN3× TI TCAN330 (U2/U3/U4)FDCAN1 PD0/PD1, FDCAN2 PB12/PB13, FDCAN3 PG10/PG9; fixed 120 Ω terminations R1/R5/R9
IMUBosch BMI088 (IC1)I2C2 PF0/PF1, accel 0x18, gyro 0x68, no external pull-ups
StoragemicroSD (J1, Molex 104031-0811)SDMMC1 4-bit PC8–PC12/PD2, 33 Ω series, 47 kΩ pull-ups, card detect PE3
USBUSB-C (J5, GCT USB4085)USB_OTG_HS FS PHY PA11/PA12, VBUS sense PA9 (100k/47k)
Debug1×4 header (J2)GND, SWCLK (PA14), SWDIO (PA13), VDD
Status2× LEDOK_STATUS PD14, ERR_STATUS PD15
ButtonsSW1 / SW2BOOT0, NRST
VBAT—Not connected (no backup battery)

3. Backplane Connectors (J3 / J4)

PinJ3 netJ3 MCUJ4 netJ4 MCU / part
1GND—GND—
2GND—GND—
3DS18B20_REFRIPD5 (pin 119)CANL1R1.2, U2.6
4USART10_RXPG11 (pin 126)CANH1R1.1, U2.7
5USART10_TXPG12 (pin 127)CANH2R5.1, U3.7
6GPIO1PB4 (pin 134)CANL2R5.2, U3.6
7GPIO2PB5 (pin 135)CANH3R9.1, U4.7
8GPIO3PB6 (pin 136)CANL3R9.2, U4.6
9GPIO4PB7 (pin 137)NRF24_CSPB0 (pin 46)
10GPIO5PB8 (pin 139)NRF24_CEPC5 (pin 45)
11GPIO6PB9 (pin 140)NRF24_IRQPC4 (pin 44)
12GPIO7PF7 (pin 19)SPI1_MOSIPA7 (pin 43)
13GPIO8PF8 (pin 20)SPI1_MISOPA6 (pin 42)
14GPIO9PF9 (pin 21)SPI1_SCKPA5 (pin 41)
15GPIO10PF10 (pin 22)VDD—
16GPIO11PC0 (pin 26)VDD—
17GPIO12PC1 (pin 27)+5V—
18GPIO13PC2_C (pin 28)+5V—

Per-role use of these pins (which GPIO is which signal on the AMS, ECU or uDV backplane) is defined by each backplane design.


4. Machine-Readable Pin Model

model/mainlite.pins.yaml (JSON twin: mainlite.pins.json) lists all 144 pins of U5: net, alternate function, whether and where each one leaves the module on J3/J4, and what it connects to on the board. It also describes the CAN, SDMMC, I2C, HSE, VBAT, SWD and USB interfaces. tools/gen_pins.py generates it from the schematic; CI fails a PR whose committed model is stale or whose schematic has KiCad ERC errors. Each change that reaches main is published as a pin-model-vX.Y release, so other repos (e.g. the virtual HIL) can check their pin definitions against a pinned version.

bash
python3 tools/gen_pins.py        # after any schematic change; commit model/

Format, versioning and how to consume it: docs/pin-model.md.


5. Formal Design Documents & Reports

DocumentFile LinkDescriptionStatus
Work Order (PDF)📄 WO_ES-IFS08-MainLite.pdfFormal Work Order (WO-IFS08-MLITE-001): requirements, interfaces, verification protocol and QA sign-off sheet.Rev 1.0
Work Order (DOCX)📄 WO_ES-IFS08-MainLite.docxWord source of the Work Order, on the ISC base template styles.Rev 1.0
Markdown Specification📄 WORK_ORDER_MAIN_LITE.mdSynchronized Markdown version of the Work Order for Git version control and quick online reference.Rev 1.0
Schematic (PDF)📄 MAIN_LITE_schematic.pdfEeschema PDF export of the schematic.v1.1
Interactive BOM📄 MAIN_LITE_v1-1_BOM.htmlInteractiveHtmlBom export for assembly.v1.1
Pin model📄 pin-model.mdFormat and use of the generated pin model.Schema v1
Fabrication outputs📁 production/Gerbers/drill (MAIN_LITE.zip), BOM, CPL and IPC netlist as sent to fab.v1.1

6. Repository Structure

text
IFS08-ES-MainLite/
├── .github/workflows/                 # CI: pin-model check + ERC, model release on main
├── docs/                              # Documentation
│   ├── bom/
│   │   └── MAIN_LITE_v1-1_BOM.html    # Interactive BOM
│   ├── MAIN_LITE_schematic.pdf        # Schematic PDF export
│   ├── pin-model.md                   # Pin model format & usage
│   └── WORK_ORDER_MAIN_LITE.md        # Synchronized Markdown Work Order
├── IFS08-MainLite/                    # KiCad Project Files (KiCad 9.x)
│   ├── Libraries/                     # Local symbols & footprints (BMI088, LD39200, LSM115J, switch, ISC logo, MainLite module)
│   ├── production/                    # Fabrication outputs (Gerbers, BOM, CPL)
│   ├── fp-lib-table                   # Footprint Library Table
│   ├── sym-lib-table                  # Symbol Library Table
│   ├── MAIN_LITE.kicad_pro            # KiCad Project File
│   ├── MAIN_LITE.kicad_sch            # Schematic
│   └── MAIN_LITE.kicad_pcb            # PCB Layout
├── model/                             # GENERATED pin model (mainlite.pins.yaml / .json)
├── tests/                             # Pin model invariants (unittest)
├── tools/                             # gen_pins.py, kicad_export.sh, erc_summary.py, ST pin data
├── WO_ES-IFS08-MainLite.pdf           # Official Work Order (PDF)
├── WO_ES-IFS08-MainLite.docx          # Official Work Order (Word)
├── .gitignore                         # KiCad and OS Ignore Rules
└── README.md                          # Repository Documentation

Libraries/MAIN_LITE/ holds the MainLite module symbol and footprint that backplane designs place to mate with J3/J4.


7. Author & Team Credits

  • Subsystem: Low Voltage & Electronics Subsystem (ES)
  • Author & Technical Lead: Raúl Morán
  • Team: ISC Formula Student Racing Team — Universidad Pontificia Comillas (ICAI)
  • Season: 2025 / 2026

ISC Racing Team — IFS08 Electronics Subsystem

Parts

80
QtyValueFootprintReferences
12100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C28
933RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3, R6, R8, R26, R29, R30, R31, R32, R33
747kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14, R16, R17, R18, R19, R20, R21
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3_DIN965_PadH1, H2, H3, H4
3120RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R5, R9
3TCAN330Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU2, U3, U4
2100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC4, C20
2100nFCapacitor_SMD:C_0402_1005MetricC21, C22
210kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR4, R40
210pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5, C6
210uCapacitor_SMD:C_0603_1608MetricC1, C2
21kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11, R12
21uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C19
22.2uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC29, C30
22u2Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC7, C27
25k1Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR50, R51
2Conn_01x18_PinConnector_PinHeader_2.54mm:PinHeader_1x18_P2.54mm_VerticalJ3, J4
2ESD9B5.0ST5GDiode_SMD:D_SOD-923D3, D4
2LEDLED_SMD:LED_0805_2012MetricD1, D2
2SW_PushButton_Switch_SMD:SW_SPST_B3U-1000P-BSW1, SW2
1100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13
11kResistor_SMD:R_0603_1608MetricR2
124MHzCrystal:Crystal_SMD_2520-4Pin_2.5x2.0mmY1
147RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR7
14k7Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR10
1BMI088BMI088:BMI088IC1
1Conn_01x04_SocketConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1GLED_SMD:LED_0805_2012MetricLED1
1LD39200PU33RLD39200:SON95P300X300X100-7N-DU1
1LOGOLogo_ISC:LogoISCG3
1LSM115JE3_TR13LSM115JE3_TR13:DIOM5436X330ND11
1Micro_SD_Card_Det1Connector_Card:microSD_HC_Molex_104031-0811J1
1STM32H733ZGTxPackage_QFP:LQFP-144_20x20mm_P0.5mmU5
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_GCT_USB4085J5

Similar boards

  • 4 layers101.5 × 71.5 mmPantalla, the printed circuit board in 3D

    Pantalla

    jbmata/stm32h743-touchgfx-display

    STM32H743 firmware for a TouchGFX display with CAN telemetry, SD logging, and project documentation

    106 parts
  • 4 layers100.1 × 60.2 mmHades, the printed circuit board in 3D

    Hades

    pms67/HadesFCS

    Complete flight control system designed from scratch. Hardware designed with KiCad.

    215 parts1kBSD-3-Clause
  • 4 layers99.8 × 94.6 mmOresat adcs card, the printed circuit board in 3D

    Oresat adcs card

    oresat/oresat-adcs-hardware

    Controller PCB for OreSat reaction wheels, magnetorquers, IMU, and magnetometers

    598 parts21GPL-2.0
  • 2 layers60 × 60 mmMissionBus, the printed circuit board in 3D

    MissionBus

    wasa-rockoon/WOBC

    WASAロケットプロジェクト 共通電装基盤

    146 parts1MIT
  • 4 layers82.8 × 33 mmE ink watch, the printed circuit board in 3D

    E ink watch

    sandgum/Triangulate-ES_01-Watch

    A 5mm thick smartwatch which uses an E-ink display and two OLEDs to display information while consuming very little power

    162 parts22
  • 4 layers33 × 90 mmActive drag system, the printed circuit board in 3D

    Active drag system

    RocketryVT/active-drag-system

    Eigen Library, cmake, and arm-none-eabi-gcc tooling required for successful build.

    100 parts6MIT
  • 4 layers70.8 × 100 mmFlapjack, the printed circuit board in 3D

    Flapjack

    Caleb646/Flapjack

    A custom VTOL drone platform — from airframe to PCB to firmware.

    116 parts4
  • 4 layers110 × 90 mmURC, the printed circuit board in 3D

    URC

    spikonado/URC

    Universal Robot Controller

    180 parts2CERN-OHL-W-2.0

Questions

How big is the MAIN LITE PCB?

It measures 40 × 60 mm and has 2 copper layers, 1.2 mm thick.

What parts does the MAIN LITE use?

80 parts, built around the TCAN330D, BMI088, LD39200PU33R and ESD9B5.0ST5G. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the MAIN LITE KiCad files?

From the isc-fs/IFS08-ES-MainLite repository on GitHub, at the commit this page was made from: the board is IFS08-MainLite/MAIN_LITE.kicad_pcb and its schematic IFS08-MainLite/MAIN_LITE.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MAIN LITE design in my own project?

Its repository states no licence, so its author keeps all rights: ask isc-fs before reusing the design.