← AXO-010

Circuit review & bench-test guide

AXO-010 — Dual waveform DAC (MCP4725 I2C + MCP4822 SPI) PMOD module

Design-stage — board not yet fabricated

Document purpose#

Component-level explanation and bench-test plan for axo-010-dac, from generate_design.py, the module README.md, and the MCP4725 and MCP4822 datasheets. Never fabricated; values are verification targets.

1. What the board does#

Puts both DAC archetypes on one board: an I2C 12-bit MCP4725 and an SPI dual 12-bit MCP4822 (internal 2.048 V reference, 1×/2× gain). It teaches the DDS/ waveform-generation lesson and contrasts I2C vs SPI on the same job. Outputs go to a header; the PMOD map is hybrid — SPI on pins 1/2/4/7, I2C on 9/10.

PMOD J1  ~CS/MOSI/SCK/~LDAC (1/2/4/7) ─> U2 MCP4822 (SPI)
         SCL/SDA (9/10, JP1/JP2 pull-ups) ─> U1 MCP4725 (I2C)
U1 VOUT, U2 VOUTA/VOUTB ─> 100R ─> J2 output header

2. Safety and scope boundaries#

4. Interfaces#

5. Component-by-component review#

6. Datasheet summary#

7. Expected values before bench testing#

8. Manual review checklist#

9. Ordered bench-test procedure#

A. Unpowered: verify the split PMOD map, ~LDAC pull-down, output series R's, pull-ups; no rail short.

B. Power, idle: 3.3 V. Bus idle-high; both outputs near 0 V.

C. I2C DAC: scan → ACK 0x60. Fast-write 0x0800; measure VOUT ≈ 1.65 V. Sweep 0x000→0xFFF; confirm 0 V→~3.3 V linear ramp (ratiometric to VDD).

D. SPI DAC: write ch A gain-1× code 0x800; measure VOUTA ≈ 1.024 V. Write ch B; confirm independent VOUTB. Try gain-2× and confirm the ~3.3 V clip.

E. ~LDAC sync: hold ~LDAC high, write A and B different codes, confirm outputs unchanged; pulse ~LDAC low, confirm both update together.

F. Waveform: stream a sine table to either DAC; scope the output; confirm DDS-style waveform (MCP4822 audio-rate; note settling limits).

10. Troubleshooting map#

11. Bench record template#

Board: axo-010  I2C ACK: 0x____  VOUT@0x800: __ V
MCP4822 A@0x800(1x): __ V   B independent: [ ]  2x clip observed: [ ]
~LDAC sync update works: [ ]   Sine output clean: [ ]
Notes:

12. Review conclusion#

Two DAC philosophies on one board: ratiometric-to-VDD (MCP4725, so keep VDD clean) vs internal-reference (MCP4822, cleaner but clips at this supply on 2× gain). The ~LDAC pull-down is a deliberate default so naive hosts still see output. Verify each bus independently, then the ~LDAC sync behavior.