

Bfunc
Open Source, Breadboard-Friendly Function Generator Design
- Size
- 63.5 × 25.4 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 45
- Nets
- 27
- Pads
- 219
- Tracks, vias
- 316, 20
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 21 Feb 2020
- Updated
- 23 Oct 2025
Overview
Bfunc is an open-source printed circuit board by Cushychicken, from the Cushychicken/bfunc repository on GitHub. It is a 2-layer board of 63.5 × 25.4 mm with 45 parts on 27 nets, routed with 316 tracks and 20 vias.
It is built around the MIC5504-3.3YM5. Its parts include 19 capacitors, 9 resistors, 8 connectors, 3 ICs and 2 crystals. It belongs with the STM32 boards of this library.
Main components
1README
README.mdbfunc - An open source, breadboard friendly function generator
These are the source files for bfunc, a function generator I've been desiging, building, and programming in my spare time.
The fastest way to understand what's going on here is to read the design document. That should give you a good top-level understanding of this project. If it doesn't, there's a Contact link on my blog. I encourage you to let me know if there's something you don't understand, or is otherwise unclear!
Project Structure
All hardware files can be found in the hardware/ directory. All hardware design was done using KiCAD.
Software is broken into two directories:
sw_embedded/for all the code running on the bFunc board, andsw_desktop/, which contains the Python app for the GUI.
The sw_embedded directory contains two subfolders:
stm32_cube_bfunc/contains all the software used for building the prototype, which I made out of a STM32 BluePill board and a SparkFun Minigen Pro shield.bfunc_rev1/contains all the software used in the first board revision.
How can I contribute?
I'm so glad you asked! Check out the Call for Users page on my blog. That will outline the next steps for getting a board, and getting yourself set up to work on it.
After all that, if you still can't get enough bFunc in your life - I've been keeping weekly project journals on my blog in addition to the design document. Here is a link to the first one to get you started.
Parts
45| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100nF | Capacitor_SMD:C_0402_1005Metric | C1, C3, C4, C5, C11, C12, C14 |
| 3 | 0R | Resistor_SMD:R_0402_1005Metric | R6, R7, R8 |
| 3 | 1uF | Capacitor_SMD:C_0805_2012Metric | C15, C18, C20 |
| 2 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R3 |
| 2 | 10nF | Capacitor_SMD:C_0402_1005Metric | C6, C13 |
| 2 | 10pF | Capacitor_SMD:C_0402_1005Metric | C8, C9 |
| 2 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C10, C16 |
| 2 | Conn_01x20_Male | Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_Vertical | J9, J10 |
| 2 | TestPoint | Connect:PINTST | TP1, TP2 |
| 1 | 100pF | Capacitor_SMD:C_0402_1005Metric | C7 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | 1M | Resistor_SMD:R_0402_1005Metric | R9 |
| 1 | 2.2K | Resistor_SMD:R_0402_1005Metric | R4 |
| 1 | 330R | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 390R | Resistor_SMD:R_0402_1005Metric | R5 |
| 1 | 4.5nF | Capacitor_SMD:C_0402_1005Metric | C17 |
| 1 | AD9837 | Package_CSP:LFCSP-WD-10-1EP_3x3mm_P0.5mm_EP1.64x2.38mm | U1 |
| 1 | Conn_01x02_Male | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | Conn_01x03_Male | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J4 |
| 1 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical_SMD | J1 |
| 1 | Conn_02x05_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical | J5 |
| 1 | Conn_Coaxial | Connector_Coaxial:BNC_TEConnectivity_1478204_Vertical | J3 |
| 1 | Crystal | Crystals:Crystal_SMD_TXC_9HT11-2pin_2.0x1.2mm_HandSoldering | Y1 |
| 1 | Ferrite_Bead | Inductor_SMD:L_0603_1608Metric | FB1 |
| 1 | MIC5504-3.3YM5 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | SG-5032CAN | Oscillators:Oscillator_SMD_SeikoEpson_SG8002LB-4pin_5.0x3.2mm | X1 |
| 1 | STM32F072C8Tx | Package_QFP:LQFP-48_7x7mm_P0.5mm | U2 |
| 1 | SW_Push | Button_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2 | SW1 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Molex-105017-0001 | J6 |
Questions
How big is the Bfunc PCB?
It measures 63.5 × 25.4 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Bfunc use?
45 parts, built around the MIC5504-3.3YM5. 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 Bfunc KiCad files?
From the Cushychicken/bfunc repository on GitHub, at the commit this page was made from: the board is hardware/bfunc.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Bfunc design in my own project?
Its repository states no licence, so its author keeps all rights: ask Cushychicken before reusing the design.
Similar boards
- 2 layers172 × 152.9 mm

- 2 layers22.9 × 36.7 mm

Usb2usb
tmk/USB2USB_Converter
USB to USB keyboard protocol converter supported by TMK keyboard firmware
26 parts152 - 2 layers78 × 130 mm

Lofence
kiu/lofence
LoFence is a LoRaWAN capable IoT electric fence monitoring system running on the The Things Network.
65 parts142MIT - 2 layers96.5 × 55 mm

- 2 layers120 × 130 mm

SingularitySurfer V1
nkrackow/SingularitySurfer-FPGA-Lock-In-Amplifier
Repository for the development of an FPGA based DSP Lock-In Amplifier
174 parts80MIT - 4 layers60.2 × 20.8 mm

PhaseLatchMini
AndersBNielsen/PhaseLatchMini
High-rate continuous streaming of interleaved dual ADC (I/Q) samples over USB Full‑Speed (FS) using only the built‑in CDC class on an STM32F103C8 ("Blue Pill" style) board.
63 parts72 - 2 layers98 × 56 mm

Thermal pcb
Badbird5907/thermal-camera
My design of a cheap and affordable thermal camera
68 parts59MIT - 4 layers58 × 38 mm

Qspimux2-prog
felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests
99 parts57CC-BY-SA-4.0