USB Sensor Node

Created a project doc

PCB Layout Review — Programmable Function Generator

View Document

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...
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Ω
C23
Capacitance
4.7uF
C28
Capacitance
330nF
R6
Resistance
2kΩ
C30
Capacitance
100nF
R28
Resistance
49.9Ω
C24
Capacitance
4.7uF
R35
Resistance
4.7kΩ
R34
Resistance
4.7kΩ
C25
Capacitance
1uF
R7
Resistance
10kΩ
R21
Resistance
10kΩ
C7
Capacitance
100nF
C37
Capacitance
6.8uF
R17
Resistance
100Ω
R23
Resistance
10kΩ
R4
Resistance
22Ω
C10
Capacitance
10nF
C15
Capacitance
100nF
C9
Capacitance
100nF
R9
Resistance
10kΩ
R24
Resistance
2.32kΩ
R2
Resistance
5.1kΩ
R33
Resistance
150kΩ
R1
Resistance
5.1kΩ
C6
Capacitance
10uF
C8
Capacitance
10uF
R12
Resistance
100kΩ
R13
Resistance
100kΩ
C29
Capacitance
330nF
C14
Capacitance
100nF
C2
Capacitance
10uF
R16
Resistance
10kΩ
R31
Resistance
4.99kΩ
R29
Resistance
1MΩ
C33
Capacitance
100nF
R32
Resistance
10kΩ
R3
Resistance
22Ω
R25
Resistance
1kΩ
R26
Resistance
866Ω
C4
Capacitance
1uF
C34
Capacitance
100nF
R11
Resistance
10kΩ
R5
Resistance
300kΩ
C32
Capacitance
100nF
C31
Capacitance
100nF
C1
Capacitance
1uF
C12
Capacitance
4.7uF
R27
Resistance
95.3Ω
R8
Resistance
10kΩ
R15
Resistance
45.3kΩ
R30
Resistance
69.8kΩ
C16
Capacitance
100nF
C35
Capacitance
100nF
R22
Resistance
10kΩ
R14
Resistance
100kΩ
C26
Capacitance
47pF
C18
Capacitance
150nF
C5
Capacitance
1uF
C20
Capacitance
1nF
R20
Resistance
10kΩ
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
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
D2
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
Board Bring-Up Plan — Programmable Function Generator
Prerequisites
  • Equipment: current-limited USB-C 5 V supply, DMM, oscilloscope ≥100 MHz, ST-LINK/SWD programmer, optional frequency counter.
  • Start with no external load on BNC output.
  • Treat the BNC output as user-accessible analog I/O; verify offset and amplitude before connecting other equipment.
1. Visual Inspection
  • Check USB-C J1, BNC J2, SWD J3 orientation and solder joints.
  • Verify polarized/thermal-pad IC orientation: U1 MP5016, U3 LT3471, U4 STM32, U8 THS3091, U10 ADA4898.
  • Inspect LT3471 switch-node areas around L1/L2/L3, D1/D2, C25 for shorts.
2. Power Rail Verification

Table


RailSourceExpectedFirst Power Current LimitMeasure AtPass Criteria
VBUS_RAWUSB-C J15 V100 mA first testJ1 VBUS / U1 VCC4.75–5.25 V
5V_PROTU1 MP50165 V protected100 mA first testU1 SOURCE / C2within 100 mV of VBUS_RAW, no thermal rise
3V3U2 LDO3.3 V150 mAU2 VO / C63.2–3.4 V
+15V_AU3 LT3471+15 V nominal300 mA after shorts checkedC23 / U8 VS++14.25 to +15.75 V
-15V_AU3 LT3471-15 V nominal300 mA after shorts checkedC24 / U8 VS--14.25 to -15.75 V
Procedure:
  1. With power off, measure resistance from 5V_PROT, 3V3, +15V_A, and -15V_A to GND.
  2. Apply USB-C 5 V with 100 mA current limit. Confirm VBUS_RAW and 5V_PROT.
  3. Raise current limit to 500 mA and confirm 3V3, +15V_A, and -15V_A.
  4. Check LT3471 ripple on +15V_A and -15V_A before enabling waveform output.
3. Critical Signal Verification

Table


SignalNetExpectedTest
DDS clockDDS_MCLK_25MHZ25 MHz CMOSProbe X1 OUT / U5 MCLK
ResetNRSTHigh after RC delayProbe U4 PF2-NRST
SPI clockSPI1_SCKBursts during configurationProbe PA5
DDS rawDDS_RAW~0.6 Vpp AD9833 outputProbe U5 VOUT
BNC outputBNC_OUTCentered near 0 V after calibrationProbe J2 signal
4. Programming and Debug

Table


InterfaceConnectorSignalsTool
SWDJ3SWDIO, SWCLK_BOOT0, NRST, 3V3, GNDST-LINK / STM32CubeProgrammer
USB deviceJ1USB_DM, USB_DPUSB CDC firmware after flashing
Procedure:
  1. Connect ST-LINK to J3.
  2. Verify target voltage 3.3 V and read STM32 device ID.
  3. Flash firmware starter image.
  4. Confirm USB enumeration if USB CDC is enabled.
5. Functional Validation

Table


TestSetupExpected
1 kHz sineSine mode, mid amplitude, BNC unloadedStable sine, centered after zero trim
1 MHz sineSine mode, high amplitude, BNC unloadedWaveform present; purity limited by AD9833/sample density
TriangleTriangle mode at 1 kHz and 100 kHzTriangle-like output; verify slew/linearity
Square dutySquare mode, 10%, 50%, 90% dutyDuty changes at BNC output
Amplitude controlSweep AD5290 codeMonotonic amplitude change
Offset trimSweep DAC zero codeOutput DC offset shifts predictably
Known Limits to Validate
  • Current schematic is calibrated for high-impedance loads, not 20 Vpp into 50 Ω.
  • AD9833 waveform quality near 1 MHz is utility-grade; verify if low THD/SFDR is required.
  • LT3471 ±15 V regulator stability and ripple must be checked on the actual PCB layout.
Pass/Fail Summary

Table


SectionResultNotes
Visual inspection[ ] Pass / [ ] Fail
Power rails[ ] Pass / [ ] Fail
Programming[ ] Pass / [ ] Fail
Waveform output[ ] Pass / [ ] Fail
Amplitude/duty control[ ] Pass / [ ] Fail
  • Prerequisites

  • 1. Visual Inspection

  • 2. Power Rail Verification

  • 3. Critical Signal Verification

  • 4. Programming and Debug

  • 5. Functional Validation

  • Known Limits to Validate

  • Pass/Fail Summary

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