USB Sensor Node

Placement is complete: USB/power is grouped on the left/lower-left, DDS and low-level analog are central, and the output amplifier sits behind the right-edge BNC. I’m checking and tightening any remaining decoupling-placement issues now.
Created a project doc
PCB Layout Review — Programmable Function Generator
Board outline set to 100 mm × 80 mm with 2 mm rounded corners. Stackup set to 4 copper layers for USB, SPI, analog output, and multi-rail po...
View doc
PCB layout placement is complete on a 100 × 80 mm, 4-layer board: USB/power is on the left, LT3471 power is lower-left, DDS/control/conditioning are central, and the THS3091/BNC output is on the right. I ran placement, DRC, and BOM checks; details are captured in PCB Layout Review.
Open items:
  • Board is not routed yet, so airwires are expected.
  • DRC still reports exposed-pad footprint copper overlap on U3, U6, and U10.
  • Generic resistors/capacitors/inductors still need final orderable MPNs for assembly.
Suggested next steps:
  1. Repair or replace U3/U6/U10 exposed-pad footprints.
  2. Assign real MPNs/packages to generic passives and inductors.
  3. Route the PCB, then re-run full DRC.
Fix footprints and BOM
Fix footprint overlaps
Assign passive MPNs
Route the PCB
Run full checks
X1
J3
J1
U4
U9
U7 V_{SS} - C31 P1
U1 SOURCE - C2 P1
R3 P2 - U4 PA11[PA9]
R30 P2 - R31 P1
R15 P2 - R16 P1
U1 VCC - C1 P1
U4 PA7 - U5 SDATA
U6 A2 - R14 P1
U7 V_{SS} - C31 P1
U5 VDD - C7 P1
U8 VIN- - R26 P2
R32 P2 - R33 P1
U5 CAP/2.5V - C9 P1
U4 PA15 - U7 ~{CS}
U10 OUT 2 - R24 P1
U4 VBAT - U4 VREF+
R28 P2 - R29 P1
U4 PF2-NRST - R8 P2
U6 A1 - R13 P1
U5 VDD - C7 P1
U1 SOURCE - C2 P1
U1 EN - R5 P2
J1 DN1 - J1 DN2
U1 VCC - C1 P1
U1 VCC - C1 P1
U1 SOURCE - C2 P1
J1 VBUS__1 - U1 VCC
U4 VBAT - U4 VREF+
U1 EN - R5 P2
U7 V_{SS} - C31 P1
U3 VREF - C22 P1
U3 ~SHDN~/SS2 - R35 P2
U7 V_{SS} - C31 P1
U7 V_{DD} - C30 P1
U6 A1 - R13 P1
U5 VDD - C7 P1
X1 OUT - U5 MCLK
U9 VREFIO - C18 P1
U7 V_{DD} - C30 P1
U4 PA5 - U5 SCLK
U4 PF2-NRST - R8 P2
U6 A2 - R14 P1
U6 EN - R11 P2
U3 ~SHDN~/SS1 - R34 P2
U1 ILIMIT - R6 P1
U4 PA14-BOOT0 - R7 P1
U3 ~SHDN~/SS1 - R34 P2
U5 COMP - C10 P1
R20 P2 - R21 P2
U4 PA13 - J3 SWDIO/TMS
R20 P2 - R21 P2
U7 V_{DD} - C30 P1
R22 P2 - R23 P1
R28 P2 - R29 P1
U7 V_{SS} - C31 P1
U4 PA13 - J3 SWDIO/TMS
U1 SOURCE - C2 P1
U7 V_{SS} - C31 P1
U7 V_{DD} - C30 P1
J1 DP1 - J1 DP2
U4 PA5 - U5 SCLK
U7 V_{DD} - C30 P1
U6 EN - R11 P2
U5 VDD - C7 P1
U7 V_{DD} - C30 P1
R32 P2 - R33 P1
U6 A2 - R14 P1
U1 SOURCE - C2 P1
J1 DN1 - J1 DN2
U6 EN - R11 P2
U7 W - U8 VIN+
U4 PA15 - U7 ~{CS}
R4 P2 - U4 PA12[PA10]
U10 OUT 2 - R24 P1
U7 V_{SS} - C31 P1
U4 VBAT - U4 VREF+
U5 VDD - C7 P1
R3 P2 - U4 PA11[PA9]
R15 P2 - R16 P1
R32 P2 - R33 P1
U4 PA7 - U5 SDATA
U5 VDD - C7 P1
U5 VDD - C7 P1
U9 SPI2C - R10 P1
U6 D - R22 P1
U4 PA5 - U5 SCLK
U4 PA8 - R15 P1
U3 ~SHDN~/SS1 - R34 P2
U4 PF2-NRST - R8 P2
U7 V_{DD} - C30 P1
U1 SOURCE - C2 P1
U4 PA7 - U5 SDATA
R21 P1 - U10 OUT 1
U5 CAP/2.5V - C9 P1
R17 P2 - C20 P1
U1 GATE - C3 P1
R30 P2 - R31 P1
J1 DP1 - J1 DP2
U7 W - U8 VIN+
U4 VBAT - U4 VREF+
R17 P2 - C20 P1
U8 VIN- - R26 P2
U3 SW2 - L2 P2
J1 DN1 - J1 DN2
U4 PA6 - U7 SDO
U9 VREFIO - C18 P1
U3 SW2 - L2 P2
U5 VDD - C7 P1
U7 V_{SS} - C31 P1
U3 VREF - C22 P1
U5 VDD - C7 P1
U3 SW1 - L1 P2
U3 VREF - C22 P1
U7 V_{SS} - C31 P1
U4 PA5 - U5 SCLK
U8 VOUT - R26 P1
R30 P2 - R31 P1
U4 VBAT - U4 VREF+
J1 DP1 - J1 DP2
U9 VOUT - R20 P1
J1 CC2 - R2 P1
U5 COMP - C10 P1
U7 V_{SS} - C31 P1
U8 VOUT - R26 P1
U1 SOURCE - C2 P1
J1 CC2 - R2 P1
U3 SW1 - L1 P2
U4 PA7 - U5 SDATA
R4 P2 - U4 PA12[PA10]
U3 ~SHDN~/SS2 - R35 P2
U4 PA14-BOOT0 - R7 P1
R22 P2 - R23 P1
U5 VOUT - R17 P1
U6 A0 - R12 P1
R32 P2 - R33 P1
U5 VDD - C7 P1
R17 P2 - C20 P1
C25 P2 - D2 A
U9 VOUT - R20 P1
U7 V_{SS} - C31 P1
U10 -IN 2 - R24 P2
U3 SW1 - L1 P2
U10 OUT 2 - R24 P1
J1 CC1 - R1 P1
U4 PB0 - U9 ~SYNC~/A0
J1 DN1 - J1 DN2
U5 VDD - C7 P1
U6 A0 - R12 P1
U7 V_{DD} - C30 P1
J1 CC1 - R1 P1
U10 -IN 2 - R24 P2
R15 P2 - R16 P1
U4 PA4 - U5 ~FSYNC
U7 V_{DD} - C30 P1
J1 VBUS__1 - U1 VCC
U5 VDD - C7 P1
U5 VDD - C7 P1
R20 P2 - R21 P2
R28 P2 - R29 P1
J1 CC2 - R2 P1
U6 A1 - R13 P1
U7 V_{DD} - C30 P1
J1 DP1 - J1 DP2
R21 P1 - U10 OUT 1
U4 VBAT - U4 VREF+
C25 P2 - D2 A
U4 PA6 - U7 SDO
U4 PA8 - R15 P1
C25 P2 - D2 A
U7 V_{DD} - C30 P1
U6 A0 - R12 P1
U7 V_{SS} - C31 P1
U1 ILIMIT - R6 P1
U4 PF2-NRST - R8 P2
U8 VOUT - R26 P1
U1 GATE - C3 P1
U4 PA14-BOOT0 - R7 P1
U4 VBAT - U4 VREF+
U8 VIN- - R26 P2
U10 -IN 2 - R24 P2
U3 SW2 - L2 P2
U4 PA6 - U7 SDO
U5 VDD - C7 P1
U1 SOURCE - C2 P1
U9 SPI2C - R10 P1
U3 VREF - C22 P1
X1 OUT - U5 MCLK
U5 VOUT - R17 P1
U5 VDD - C7 P1
U5 VDD - C7 P1
U1 SOURCE - C2 P1
U6 D - R22 P1
U5 VDD - C7 P1
R22 P2 - R23 P1
R30 P2 - R31 P1
U4 PB0 - U9 ~SYNC~/A0
U4 PA4 - U5 ~FSYNC
U3 ~SHDN~/SS2 - R35 P2
R21 P1 - U10 OUT 1
U1 SOURCE - C2 P1
J1 CC1 - R1 P1
U5 VDD - C7 P1
R10
Resistance
10kΩ
R6
Resistance
2kΩ
R28
Resistance
49.9Ω
R35
Resistance
4.7kΩ
R34
Resistance
4.7kΩ
R7
Resistance
10kΩ
R21
Resistance
10kΩ
R17
Resistance
100Ω
R23
Resistance
10kΩ
R4
Resistance
22Ω
R9
Resistance
10kΩ
R24
Resistance
2.32kΩ
R2
Resistance
5.1kΩ
R33
Resistance
150kΩ
R1
Resistance
5.1kΩ
R12
Resistance
100kΩ
R13
Resistance
100kΩ
R16
Resistance
10kΩ
R31
Resistance
4.99kΩ
R29
Resistance
1MΩ
R32
Resistance
10kΩ
R3
Resistance
22Ω
R25
Resistance
1kΩ
R26
Resistance
866Ω
R11
Resistance
10kΩ
R5
Resistance
300kΩ
R27
Resistance
95.3Ω
R8
Resistance
10kΩ
R15
Resistance
45.3kΩ
R30
Resistance
69.8kΩ
R22
Resistance
10kΩ
R14
Resistance
100kΩ
R20
Resistance
10kΩ
C23
Capacitance
4.7uF
C28
Capacitance
330nF
C30
Capacitance
100nF
C24
Capacitance
4.7uF
C25
Capacitance
1uF
C7
Capacitance
100nF
C37
Capacitance
6.8uF
C10
Capacitance
10nF
C15
Capacitance
100nF
C9
Capacitance
100nF
C6
Capacitance
10uF
C8
Capacitance
10uF
C29
Capacitance
330nF
C14
Capacitance
100nF
C2
Capacitance
10uF
C33
Capacitance
100nF
C4
Capacitance
1uF
C34
Capacitance
100nF
C32
Capacitance
100nF
C31
Capacitance
100nF
C1
Capacitance
1uF
C12
Capacitance
4.7uF
C16
Capacitance
100nF
C35
Capacitance
100nF
C26
Capacitance
47pF
C18
Capacitance
150nF
C5
Capacitance
1uF
C20
Capacitance
1nF
C19
Capacitance
100nF
C11
Capacitance
100nF
C21
Capacitance
4.7uF
C36
Capacitance
6.8uF
C22
Capacitance
100nF
C17
Capacitance
1uF
C3
Capacitance
100pF
C13
Capacitance
100nF
C27
Capacitance
22pF
D1
D2
J1 GND__1 - J1 GND
U7 GND - C30 P2
J1 GND__1 - J1 GND
U5 AGND - C7 P2
U2 GND - C4 P2
C20 P2 - R16 P2
U7 GND - C30 P2
U5 AGND - C7 P2
U7 GND - C30 P2
U2 GND - C4 P2
C20 P2 - R16 P2
U7 GND - C30 P2
U5 AGND - C7 P2
J1 GND__1 - J1 GND
U7 GND - C30 P2
U2 GND - C4 P2
U3 GND - C22 P2
J1 GND__1 - J1 GND
C20 P2 - R16 P2
U5 AGND - C7 P2
U3 GND - C22 P2
U2 GND - C4 P2
U2 GND - C4 P2
U5 AGND - C7 P2
U3 GND - C22 P2
U3 GND - C22 P2
U2 GND - C4 P2
J1 GND__1 - J1 GND
U5 AGND - C7 P2
U5 AGND - C7 P2
U5 AGND - C7 P2
U7 GND - C30 P2
C20 P2 - R16 P2
U7 GND - C30 P2
C20 P2 - R16 P2
GND
C20 P2 - R16 P2
U2 GND - C4 P2
J1 GND__1 - J1 GND
U3 GND - C22 P2
J1 GND__1 - J1 GND
U3 GND - C22 P2
U2 GND - C4 P2
U7 GND - C30 P2
J1 GND__1 - J1 GND
GND
GND
U3 GND - C22 P2
GND
U5 AGND - C7 P2
GND
U2 GND - C4 P2
GND
GND
C20 P2 - R16 P2
GND
U5 AGND - C7 P2
GND
GND
GND
U5 AGND - C7 P2
U5 AGND - C7 P2
U7 GND - C30 P2
U2 GND - C4 P2
U7 GND - C30 P2
U5 AGND - C7 P2
C20 P2 - R16 P2
U3 GND - C22 P2
C20 P2 - R16 P2
U3 GND - C22 P2
J1 GND__1 - J1 GND
U2 GND - C4 P2
J1 GND__1 - J1 GND
U5 AGND - C7 P2
L3
Inductance
10uH
L1
Inductance
10uH
J2
U1
U2
U8
L2
Inductance
10uH
D3
U6
U10
U3
U5
U7

Refine this doc
Ask about this doc
Project Specification — Programmable Function Generator
Project Overview
  • Status: Draft schematic architecture
  • Device: Programmable function generator PCB.
  • Primary requirement: Generate sine, triangle, and square waveforms from 1 Hz to 1 MHz.
  • Output amplitude target: Adjustable from near 0 V to ±10 V peak (20 Vpp), centered at 0 V.
Intended Use
  • Bench/prototype signal source for general electronics work.
  • Current design assumes high-impedance output loading. It is not yet specified or guaranteed for 20 Vpp into 50 Ω.
What the Device Should Do
  • Set frequency from 1 Hz to 1 MHz.
  • Select sine, triangle, or square output.
  • Adjust square-wave duty cycle under firmware control.
  • Adjust output amplitude up to ±10 V.
  • Provide USB-C power and USB device control/programming.
Main Features
  • USB-C 5 V input and USB 2.0 data connection.
  • STM32 MCU control plane.
  • AD9833 DDS waveform core for sine/triangle generation.
  • Digitally generated square wave for adjustable duty cycle.
  • Low-level waveform mux before high-voltage gain stage.
  • Programmable-gain high-voltage output amplifier.
  • ±15 V analog rails generated from protected USB 5 V.
  • BNC signal output with output protection/protection resistor.
  • SWD debug/programming header.
System Architecture

Diagram


SPI timer PWM SPI USB-C 5 V + USB2 data eFuse / input protection 3.3 V LDO LT3471 +/-15 V analog rails STM32G0B1 MCU AD9833 DDS 25 MHz oscillator adjustable-duty square low-level waveform mux AD5290 programmable gain THS3091 high-slew output amp BNC output
Hardware Subsystems
Power
  • USB-C receptacle configured as a 5 V sink with independent 5.1 kΩ CC pull-downs.
  • MP5016 eFuse/current-limit switch protects the 5 V rail.
  • 3.3 V LDO powers MCU, DDS, DAC/control, mux, and oscillator.
  • LT3471 generates ±15 V analog rails for the high-voltage output amplifier.
Waveform Generation
  • AD9833 DDS provides sine and triangle output from a 25 MHz oscillator.
  • STM32 timer output provides square wave with firmware-adjustable duty cycle.
  • Firmware sets frequency registers and timer parameters.
Analog Output
  • Low-level signals are selected before high-voltage gain.
  • THS3091 current-feedback amplifier provides the final ±10 V-capable output stage on ±15 V rails.
  • AD5290 high-voltage digital potentiometer provides programmable gain control.
USB / Programming
  • USB-C D+/D− route to STM32 USB FS pins.
  • 10-pin Cortex SWD header provides debug/programming access.
Interfaces and Connections

Table


InterfacePurposeNotes
USB-C5 V input and USB controlDefault USB-C sink, USB 2.0 data only
BNCAnalog waveform outputAmplitude calibrated for high-Z load assumption
SWD 10-pinSTM32 debug/programmingSWDIO, SWCLK, NRST, 3V3, GND
SPI busControl DDS, DAC, and digital potentiometerShared SCLK/MOSI with separate chip-selects
Power and Runtime Expectations
  • Input: USB-C 5 V.
  • Target source current: below 1 A typical for high-Z output operation.
  • Output load assumption: high impedance, recommended ≥1 kΩ for the current schematic target.
Power Tree and Power Budget

Table


RailSourceEstimated TypicalEstimated PeakLoads
5V_PROTUSB-C via eFuse150–300 mA<1 A target3.3 V LDO, LT3471
3V3LDO from 5V_PROT~70 mA~150 mAMCU, AD9833, DAC, mux, oscillator, logic
+15V_ALT3471~20–80 mAload-dependentoutput amplifier
-15V_ALT3471~20–80 mAload-dependentoutput amplifier
Manufacturing and Assembly Expectations
  • SMD-first PCB, with through-hole BNC and optional SWD header.
  • High-speed analog layout is critical: short feedback paths, solid ground, local decoupling, and output-stage thermal pad copper.
  • The current design should be reviewed before manufacturing if 50 Ω drive, calibrated amplitude flatness, or low-distortion sine performance is required.
Firmware-Relevant Hardware Requirements
  • USB CDC or custom USB control protocol.
  • SPI control for DDS frequency/waveform and amplitude-control devices.
  • Timer output for adjustable-duty square wave.
  • Calibration table for amplitude vs frequency and output zero trim.
Physical Design Expectations
  • BNC at board edge.
  • USB-C at board edge.
  • Separate noisy switching regulator area from DDS/output analog path.
  • Keep AD9833 clock/output and THS3091 feedback loop short and shielded by ground.
Important Design Decisions
  • Use AD9833 for a compact, practical DDS source; note that waveform purity near 1 MHz is utility-grade, not lab-grade AWG performance.
  • Use MCU-generated square wave for duty control rather than analog triangle thresholding for better duty stability.
  • Use ±15 V analog rails because ±12 V leaves too little swing margin for ±10 V output.
  • Specify high-Z output first; 50 Ω/20 Vpp operation requires a more power-capable output stage and power budget.
Assumptions
  • Output amplitude means ±10 V peak / 20 Vpp centered at 0 V.
  • Output load is high impedance unless revised.
  • No user interface display/knob is included yet; board is controlled over USB/firmware.
  • USB-C is used for power and programming/control.
Change Notes
  • Initial architecture selected and project renamed from placeholder.
  • Project Overview

  • Intended Use

  • What the Device Should Do

  • Main Features

  • System Architecture

  • Hardware Subsystems

  • Power

  • Waveform Generation

  • Analog Output

  • USB / Programming

  • Interfaces and Connections

  • Power and Runtime Expectations

  • Power Tree and Power Budget

  • Manufacturing and Assembly Expectations

  • Firmware-Relevant Hardware Requirements

  • Physical Design Expectations

  • Important Design Decisions

  • Assumptions

  • Change Notes

Documents

  • Project Specification — Programmable Function Generator

  • Design Notes — Function Generator Architecture

  • Firmware Starter — STM32G0B1CBT6 Function Generator

  • Board Bring-Up Plan — Programmable Function Generator

  • PCB Layout Review — Programmable Function Generator

Assets

No assets added.

Programmable Function Generator

Programmable Function Generator thumbnail
Programmable 1 Hz–1 MHz function generator PCB with sine, triangle, and adjustable-duty square outputs, programmable amplitude up to ±10 V using a DDS-based signal path and protected power rails.

Properties

Properties describe core aspects of the project.

Pricing & Availability

Distributor

Qty 1

Arrow

$36.81–$51.23

Digi-Key

$20.00

HQonline

$22.03–$22.05

LCSC

$57.46–$57.88

Mouser

$67.08

TME

$10.80

Verical

$25.68–$47.67

Controls