STM32F7 USB-ADC Multiplexer Board

Purpose

This board provides ten isolated, differential analog acquisition channels, multiplexed into a single 12-bit ADC on an STM32F7 microcontroller. The host communicates with the board over USB. Channel selection is handled autonomously by the firmware using an I2C-controlled analog multiplexer, so the host receives a sequenced stream of converted values without managing the mux directly. Primary use case: slow multi-point temperature or voltage monitoring in industrial environments with significant common-mode noise on the sensor lines.


External Interfaces

Interface Connector Protocol Direction
Host communication USB-C USB 2.0 FS bidirectional
Power input USB-C 5 V / 500 mA max in
Analog inputs 10 × 2-pin terminal differential, ±10 V max in

Functional Blocks

1. USB Interface

2. Power Supply

3. Analog Frontend (×10, identical instances)

Each channel consists of:

  1. EMC filter — common-mode choke + differential RC filter at board entry
  2. Low-pass filter — single-pole passive, sets anti-alias corner frequency
  3. Diff-to-single converter — discrete or IC-based; converts differential signal to single-ended 0–1.7 V range for ADC input

4. Analog Multiplexer

5. Microcontroller — STM32F7


Power Architecture

USB 5V ──► 3V3 LDO ──► MCU VDD, I2C Mux, USB EMC filter
       └──► 1V7 LDO ──► MCU VDDA (ADC reference domain)

Estimated current budget:


Signal Chain

Differential input
  → EMC filter (CM rejection at board entry)
  → Low-pass filter (anti-alias, sets BW)
  → Diff-to-single converter (level shift to 0–1.7 V)
  → I2C Analog Mux (channel selected via I2C from STM32)
  → STM32F7 ADC (12-bit, single-ended)
  → USB (host reads converted values)

Known Constraints


Open Questions