
Tiva-80pin adapter
embedded-pro/e-foc-hardware
hardware to be used with https://github.com/embedded-pro/e-foc

hardware to be used with https://github.com/embedded-pro/e-foc
E foc is an open-source printed circuit board by embedded-pro, from the embedded-pro/e-foc-hardware repository on GitHub. It is a 2-layer board of 89.4 × 66.9 mm with 186 parts on 128 nets, routed with 1,407 tracks and 417 vias.
It is built around the SN65HVD230D, TLV9062ID and TLV9064ID, with the FAN7888M, LM5164DDA and W25Q32JVSSIQ among its other parts. Its parts include 82 resistors, 36 capacitors, 10 ICs, 9 diodes and 7 connectors. It belongs with the robots and motor control boards of this library.
A three-phase brushless (BLDC / PMSM) motor driver board designed to run the e-foc Field-Oriented Control firmware.
This repository contains the KiCad electrical design — schematics, project configuration and (eventually) the PCB layout — for the power and signal-chain hardware that the e-foc control software targets. The microcontroller itself lives on a pluggable module; this board provides the power stage, gate drive, current sensing, protection and peripheral connectivity around it.
Scope: this repo is the hardware. For the control algorithms (Clarke/Park transforms, Space Vector Modulation, current/velocity PID loops, auto-tuning), see the firmware repository.
CSD88537ND 60 V dual NexFET™
half-bridge power blocks (one per phase) — low RDS(on), sized for a
50 V bus at 5 A.FAN7888 3-phase gate driver with bootstrap high-side supply for clean,
cross-conduction-protected switching.TLV9062 / TLV9064 analog conditioning stage
for the controller's ADC.LM5164 100 V synchronous buck plus
AMS1117 linear regulators generating the +15 V gate-drive rail, +5 V and
+3.3 V logic rails, with TVS bus-clamp protection (SMCJ51A).SN65HVD230 transceiver for multi-axis /
networked control.24LC04 I²C EEPROM (calibration / parameters) and
W25Q32 32-Mbit SPI flash (logs / firmware assets).PlatformFactory abstraction (e.g. STM32F407
or TI Tiva TM4C1294 modules).The design is organised as hierarchical schematic sheets, each a self-contained functional block:
| Sheet | Function | Key parts |
|---|---|---|
e-foc.kicad_sch | Top-level sheet wiring all blocks together | — |
power-supply | Wide-input supply: gate-drive + logic rails, protection | LM5164, AMS1117-3.3, SMCJ51A (D1 bus TVS) |
driver | Three-phase inverter, gate drive, phase shunts, motor terminals | FAN7888, 3× CSD88537ND, 0.02 Ω shunts |
adc-conditioner | Current/voltage sense amplification & anti-alias filtering | TLV9062, TLV9064 |
microcontroller-connector | 2×12 header to the MCU module + signal break-out | Conn_02x12 |
can-bus | CAN field-bus interface | SN65HVD230 |
serial-com | Serial / debug communications | — |
eeprom-mem | I²C EEPROM for calibration & parameters | 24LC04 |
flash-mem | SPI NOR flash for logging / assets | W25Q32JVSS |
These are the hard design targets the board must meet — the authoritative requirements used for design review and sign-off.
| # | Requirement | Target |
|---|---|---|
| R1 | Input bus voltage | 50 V max |
| R2 | Output current | 5 A max continuous (DC) |
| R3 | Motor types | 3-phase brushless (BLDC) / PMSM, FOC control |
| R4 | PWM switching frequency | 50 kHz max |
| R5 | Configuration storage | EEPROM available for parameters / calibration |
| R6 | Firmware-update storage | External flash for FW update |
| R7 | Field-bus | CAN @ 1 Mbps max, GND present in the connector |
| R8 | PCB stack-up | 2 layers is sufficient |
| R9 | Position feedback | input for encoder OR hall sensor |
| Parameter | Value |
|---|---|
| Power topology | 3× half-bridge (1 dual FET per phase), low-side shunt sensing |
| Switching devices | TI CSD88537ND, 60 V dual N-channel NexFET™ half-bridge (Q1–Q3) — 10 V margin over the 50 V bus (R1) |
| Bus TVS clamp | D1 = SMCJ51A, 51 V standoff / 1500 W (see note below) |
| Gate driver | FAN7888, 3-phase, bootstrap high-side |
| Current sense | 0.02 Ω low-side shunt per phase + op-amp gain stage |
| Logic rails | +3.3 V logic + gate-drive rail (FAN7888 VDD) |
| Protection | TVS bus clamp (SMCJ51A), CAN ESD array, gate clamps |
| Comms | CAN (SN65HVD230, R7), serial / debug |
| Storage | I²C EEPROM (24LC04, R5), SPI flash (W25Q32, 32 Mbit, R6) |
| Controller | External 24-pin MCU module (STM32 / TI Tiva, via firmware abstraction) |
D1 TVS sizing. The bus is 50 V max; the
CSD88537NDis a 60 V FET. A standard TVS cannot both stand off 50 V and clamp below 60 V (clamp ratio ~1.5×), soSMCJ51A(Vrwm 51 V, Vbr ≥ 56.7 V, Vc ≈ 82 V) is chosen to absorb gross load-dump / inductive transients without conducting in normal operation. The 10 V FET margin against switching ringing must be held by layout — tight commutation loop, adequate bulk capacitance, and (if needed) an RC snubber — not by the TVS. Compliance with R1–R9 is confirmed during design review and bring-up.
e-foc/
├── hardware/ # KiCad projects — one folder per board
│ ├── e-foc/ # main motor-driver board
│ │ ├── e-foc.kicad_pro
│ │ ├── e-foc.kicad_sch # top-level (root) schematic
│ │ ├── e-foc.kicad_pcb # PCB layout
│ │ ├── sym-lib-table
│ │ ├── components/ # project symbol libs (e.g. CSD88537ND)
│ │ └── schematic/ # hierarchical sub-sheets
│ │ ├── power-supply.kicad_sch
│ │ ├── driver.kicad_sch
│ │ └── … adc-conditioner, can-bus, encoder, eeprom-mem,
│ │ flash-mem, microcontroller-connector, serial-com
│ └── tiva-80pin-adapter/ # EK-TM4C1294XL ↔ e-foc adapter board
│ ├── tiva-80pin-adapter.kicad_pro
│ ├── tiva-80pin-adapter.kicad_sch
│ └── tiva-80pin-adapter.kicad_pcb
├── scripts/ # export helpers (run per board)
│ ├── export_review.py # review package -> review_exports/<board>/
│ └── export_jlcpcb.py # fab + assembly -> manufacturing/<board>/
└── .github/workflows/ # CI: kicad-bot.yml (quality gate) + release.ymlEach board is a self-contained KiCad project in its own
hardware/<board>/folder — the.kicad_pro, root schematic and board share that folder (KiCad locates them by name and path). Hierarchical sub-sheets and project symbol libs are referenced by relative path within the board folder. Generated outputs are gitignored and land underreview_exports/<board>/andmanufacturing/<board>/.
This is a KiCad 10 project.
git clone https://github.com/embedded-pro/e-foc-hw.git
cd e-foc-hwhardware/e-foc/e-foc.kicad_pro (or
hardware/tiva-80pin-adapter/tiva-80pin-adapter.kicad_pro) in KiCad.With KiCad 8+ installed you can run electrical / design-rule checks locally:
kicad-cli sch erc --output erc.json --format json hardware/e-foc/e-foc.kicad_sch
kicad-cli pcb drc --output drc.json --format json hardware/e-foc/e-foc.kicad_pcbOr use the export helpers (any board): python scripts/export_review.py for the
e-foc board, python scripts/export_review.py --name tiva-80pin-adapter for the
adapter; scripts/export_jlcpcb.py likewise for the fab/assembly package.
Every push and pull request that touches a schematic or board file is checked by
kicad-bot — a CI quality gate
that wraps kicad-cli, KiBot, KiCost and KiDiff to run:
The workflow lives in .github/workflows/kicad-bot.yml
and uploads a kicad-bot-output/ artifact (report, metrics, raw violation data).
kicad-bot is a CI guardrail, not a substitute for design review or sign-off.
To enable distributor BOM pricing/availability, add the relevant API keys as
repository secrets (MOUSER_KEY, DIGIKEY_CLIENT_ID, DIGIKEY_CLIENT_SECRET).
All third-party actions are pinned to a full commit SHA (with the version in a trailing comment) for supply-chain hardening.
Releases are automated with release-please
and driven by Conventional Commits
(feat:, fix:, …). The flow (.github/workflows/release.yml):
main keep an open release PR with the next version bump and
CHANGELOG.md entries.e-foc-hw-<version>.zip and attached to the
release as a downloadable fabrication package.Version state is tracked in .release-please-manifest.json;
behaviour is configured in release-please-config.json.
Released under the MIT License.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 22 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R33, R36, R39, R42, R43, R44, R45, R48, R61, R62, R63, R64, R65, R66, R67, R68 +6 |
| 19 | TestPoint | TestPoint:TestPoint_Pad_1.0x1.0mm | TP1, TP2, TP3, TP4, TP5, TP6, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19 +3 |
| 17 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R10, R11, R12, R13, R14, R15, R34, R35, R37, R38, R40, R41, R46, R47, R52, R53 +1 |
| 8 | 150pF,50V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C20, C21, C22, C23, C24, C25, C26, C27 |
| 8 | NetTie_3_Tee | NetTie:NetTie-3_SMD_Pad0.5mm | NT2, NT3, NT4, NT5, NT6, NT7, NT8, NT9 |
| 6 | 100nF,50V,X7R | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C4, C7, C9, C10, C31 |
| 6 | 200 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R19, R20, R22, R23, R26, R27 |
| 5 | 0R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R49, R79, R80, R81, R82 |
| 4 | 0.02 | Resistor_SMD:R_2512_6332Metric_Pad1.40x3.35mm_HandSolder | R21, R24, R25, R28 |
| 4 | 100k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6, R30, R31, R32 |
| 4 | 100nF,16V,X7R | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C28, C29, C35, C36 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_DIN965_Pad_TopBottom | H1, H2, H3, H4 |
| 3 | 10 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R16, R17, R18 |
| 3 | 100R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R55, R56, R57 |
| 3 | 100nF,16V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C17, C18, C19 |
| 3 | 100nF,50V,X7R | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C11, C12, C13 |
| 3 | 100pF,15V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C32, C33, C34 |
| 3 | 1N4148W | Diode_SMD:D_SOD-123 | D3, D4, D5 |
| 3 | 2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R58, R59, R60 |
| 3 | 470R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R74, R76, R78 |
| 3 | 4K7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R7, R8, R9 |
| 3 | BC847 | Package_TO_SOT_SMD:SOT-23W_Handsoldering | Q4, Q5, Q6 |
| 3 | CSD88537ND | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | Q1, Q2, Q3 |
| 3 | LED | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D7, D8, D9 |
| 2 | 100uF/100V | Capacitor_SMD:CP_Elec_10x10.5 | C14, C15 |
| 2 | 2.2nF,50V,X7R | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C6 |
| 2 | 60R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R50, R51 |
| 1 | 100 uH | Inductor_SMD:L_7.3x7.3_H4.5 | L1 |
| 1 | 100nF,100V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C16 |
| 1 | 124k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 1SMB5945BT3G | Diode_SMD:D_SMB | D2 |
| 1 | 2.2uF,100V,X7R | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1 |
| 1 | 22R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R69 |
| 1 | 24LC04 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U9 |
| 1 | 280k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2 |
| 1 | 2M | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R29 |
| 1 | 33k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5 |
| 1 | 4.7nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C30 |
| 1 | 4.7uF,50V,X7R | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8 |
| 1 | 47pF,50V,X7R | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C5 |
| 1 | 50k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4 |
| 1 | 576k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3 |
| 1 | 74LVC14 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U8 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U3 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5 |
| 1 | Conn_01x05_Pin | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J4 |
| 1 | Conn_02x06_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_Vertical | J7 |
| 1 | Conn_02x12_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x12_P2.54mm_Vertical | J6 |
| 1 | FAN7888 | Package_SO:SOIC-20W_7.5x12.8mm_P1.27mm | U4 |
| 1 | Fuse | Fuse:Fuse_1812_4532Metric | F1 |
| 1 | LM317_SOT-223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | LM5164DDA | Package_SO:HSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.1mm | U1 |
| 1 | NUP2105L | Package_TO_SOT_SMD:SOT-23W_Handsoldering | D6 |
| 1 | NetTie_2 | NetTie:NetTie-2_SMD_Pad2.0mm | NT1 |
| 1 | SMCJ51A | Diode_SMD:D_SMC | D1 |
| 1 | SN65HVD230 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U7 |
| 1 | SW_DIP_x03 | Button_Switch_SMD:SW_DIP_SPSTx03_Slide_6.7x9.18mm_W8.61mm_P2.54mm_LowProfile | SW1 |
| 1 | Screw_Terminal_01x02 | TerminalBlock_CUI:TerminalBlock_CUI_TB007-508-02_1x02_P5.08mm_Horizontal | J1 |
| 1 | Screw_Terminal_01x03 | TerminalBlock_CUI:TerminalBlock_CUI_TB007-508-03_1x03_P5.08mm_Horizontal | J2 |
| 1 | Screw_Terminal_01x03 | TerminalBlock:TerminalBlock_Xinya_XY308-2.54-3P_1x03_P2.54mm_Horizontal | J3 |
| 1 | TLV9062 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6 |
| 1 | TLV9064 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U5 |
| 1 | Varistor | Fuse:Fuse_1812_4532Metric | RV1 |
| 1 | W25Q32JVSS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U10 |

embedded-pro/e-foc-hardware
hardware to be used with https://github.com/embedded-pro/e-foc



Arpit192005/Drone-ESC
A custom 3-phase Brushless DC (BLDC) Electronic Speed Controller (ESC) designed in KiCad, intended for drone and robotics applications.


liorknafo/power-feed-manual-mill
DIY stepper power feed for a SIEG X3.5D mill: electromagnetic clutch, RP2040 controller PCB, Rust firmware, build123d CAD

Yaotinx/power-supply
A dual-output switch-mode power supply designed in KiCad for AC-DC conversion operating at a 55kHz switching frequency.


CornellMarsRover/KiCad
This folder serves as the central repository for all KiCad PCB designs across multiple years. Each subfolder corresponds to a specific design cycle and contains all associated board files, schematics, and documentation.
It measures 89.4 × 66.9 mm and has 2 copper layers, 1.6 mm thick.
186 parts, built around the SN65HVD230D, TLV9062ID, TLV9064ID and FAN7888M. 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.
From the embedded-pro/e-foc-hardware repository on GitHub, at the commit this page was made from: the board is hardware/e-foc/e-foc.kicad_pcb and its schematic hardware/e-foc/e-foc.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask embedded-pro before reusing the design.