You've already forked incutec-OpenFC
mirror of
https://github.com/incutec-hw/OpenFC.git
synced 2026-08-06 05:20:53 +00:00
OSD redesign based on Jason Young's (RPi) proven topology:
- Replace GS8052 dual op-amp with dedicated ICs: TLV3201 comparator,
SN74LVC1G3157 SPDT mux, TLV9061 non-inverting buffer, SDM02U30LP3
Schottky for DC restore
- Add chroma filter (680R+470pF), AC coupling (1uF), resistor divider
pixel level (12k/3.9k/1.4k), gain-2 buffer (470R/470R)
- Fix C66 footprint 0201->0402 for 1uF cap
- Assign correct LCSC part numbers for all 13 OSD passives
Library fixes:
- Add new footprints: X2SON-4, X2SON-6, X3-DFN0603, SC-70-6,
SOD-523, SOT-23-5, MouseBite for local OSD components
- Add matching 3D models (step+wrl) for all new footprints
- Fix 8 footprints with broken 3D model paths in lib.pretty
(/.3dshapes/ -> ${KIPRJMOD}/lib.3dshapes/, remove double hardware/)
- Fix 5 broken 3D model paths in PCB file
- Add symbols for TLV3201, SN74LVC1G3157, TLV9061, SDM02U30LP3
- Add datasheets/ and image (1).png to .gitignore
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
OpenFC — Project Instructions
What This Is
Open-source Betaflight flight controller. 30x30mm, 4-layer, 2S-6S. Integrated ELRS receiver (break-off tab).
Key ICs
| IC | Part | LCSC | Bus |
|---|---|---|---|
| MCU | RP2354B (QFN-80, 2MB flash) | C39843328 | — |
| IMU | LSM6DSV16XTR | C5267406 | SPI0 (GPIO18-20), CS=GPIO14, INT=GPIO13 |
| Baro | BMP388 | C779278 | I2C0 (GPIO16/17) |
| Blackbox | BY25Q128ASWIG | C394872 | SPI1 (GPIO42-44), CS=GPIO46 |
| ELRS MCU | ESP32-C3FH4 | C2858491 | UART1 (GPIO21 RX, GPIO22 TX funcsel 11) |
| ELRS Radio | SX1281IMLTRT | C2151551 | SPI to ESP32 |
| 12V Buck | LMR51420YDDCR/YFDDCR | C5383002/C7296200 | — |
| 3.3V LDO | LP5912-3.3DRVR | C524780 | — |
| 1.8V Gyro LDO | NCV8187AMT180TAG | C893189 | — |
| ELRS 3.3V LDO | WL9005D4-33 | C5357206 | — |
| Power Mux | TPS2116DRLR | C3235557 | — |
| OSD Mux | PI3A223ZMEX | — | GPIO32-37 |
GPIO Map (RP2354B → Betaflight)
- UART0: TX=GPIO0, RX=GPIO1
- UART1 (ELRS): TX=GPIO22 (funcsel 11 UART_AUX), RX=GPIO21
- PIO UART0: TX=GPIO2, RX=GPIO3
- PIO UART1: TX=GPIO26, RX=GPIO27
- Motors: M1=GPIO31, M2=GPIO30, M3=GPIO29, M4=GPIO28 (PIO0 DShot)
- OSD: VBLACK=GPIO32, SYNC_IN=GPIO33, PIXEL_SEL=GPIO34, VWHITE=GPIO35, COLOR_SEL=GPIO36, SYNCLVL=GPIO37
- ADC: VBAT=GPIO41, CURRENT=GPIO40, RSSI=GPIO45, EXT=GPIO47
- LED strip: GPIO23 (PIO2), Status LED: GPIO12
- 10V enable: GPIO11, Beeper: GPIO6
- ESP control: EN=GPIO24, BOOT=GPIO25
Power Tree
+BATT → LMR51420 → +12V (switchable via GPIO11) / +5V_BUCK (always on) +5V_BUCK + VBUS → TPS2116 mux → +5V → LP5912 → +3.3V → RP2354B VREG → +1.1V +5V → WL9005D4 → +3.3V_ELRS | +5V → NCV8187 → +1.8V_GYRO
PIO Allocation
PIO0: DShot (motors), PIO1: PIO UARTs, PIO2: LED strip + OSD
Critical Open Issues (pre-production review 2026-03-01)
- CRIT-1: SX1281 VDD_IN disconnected — no power to radio
- CRIT-2: Motor pin numbering M1-M4 reversed vs BF config
- CRIT-3: OSD needs 3 consecutive pins for FB_OSD (remap GPIO33=W, 34=EN, 35=SYNC)
- CRIT-4: No battery reverse polarity protection
- CRIT-5: ELRS LDO EN tied to own output (bootstrap problem)
Schematic Structure
hardware/ — KiCad 9 hierarchical: root OpenFC.kicad_sch + 12 sub-sheets:
rp2350a, elrs, power, pads, connectors, osd, Radioschematic, leds, imu, baro, blackbox, compass (DNP)
Rules
- NEVER raw-edit
.kicad_sch,.kicad_pcb,.kicad_pro— use Python scripts with kicad-skip or pcbnew API - Python tools live in
hardware/tools/ - Libraries are project-local:
hardware/lib.kicad_sym,hardware/lib.pretty/,hardware/lib.3dshapes/ - Production exports in
hardware/production/— use KiCad Fabrication Toolkit for JLCPCB - JLCPCB assembly, prefer LCSC basic parts
- Full review in
OpenFC_preproduction_review.md
Firmware
- Target: Betaflight RP2350B (PICO platform)
- No firmware in this repo yet
- RP2354B uses Pico SDK (C/C++), PlatformIO
- ESP32-C3FH4 runs ExpressLRS firmware (separate build)
README Discrepancies (fix these)
- README says BMI388 → actual is BMP388
- README says W25Q128JVPIQTR → actual is BY25Q128ASWIG
- 10V rail is actually ~12.1V per feedback divider