Using a dual ADC raspberry extension for 20Msps+ DAQ

What does it look like?


What is it supposed to do?

The aim of this module is to achieve 10Msps, ideally 20Msps, at 9bits or more. Inspired from the Bomanz project as well, which tried several high-speed ADCs setup for Raspberry Pi.

How does it work: block diagram

Block schema

  • Raw Signal->ITF-12_RPIn->ADC->Buffer->Pi->Signal Digitalized
  • ITF-4_RawSig->ITF-12_RPIn
  • ITF-11_OffSig->ITF-12_RPIn
  • ITF-3_ENV->ITF-12_RPIn

About the module


  • High speed, 9 bit ADCs!


  • SMDs is tough to assemble?

Constraint and limits

  • Still being debugged


Let's start with the end: it works!

Testing the module with the signal emulator module, which yields a signal at 1.9MHz, it well seen at 1.9MHz, with a sampling speed equal to two times this freq, ie 24Msps ! See the details below:

Problem and solution

Problem was that the Pi0 or PiW, with the current kernel module, can't run faster than around 10 to 12 Msps. Clock can be faster, but the memcpy limits the transfer to memory. Soooo.. what can we do? As a reminder, I wanted at least a 10Msps 10bit ADC.

Solution Why not interleaving two ADCs, with clocks in opposite phase? Hum that means 2 times 10 bits, and I had only 18 pins left once the Ultrasound SDK board connected. That means.. quite obviously, 2 times 9 bits.

So now I can run at twice the speed of the transfer, so a bit over 20Msps, over this time 9 bits. Or by oversampling, that could be 10Msps at 10 bits. With more flexibility !


At least for the moment, now I need to order the PCBs and some components.

-> BOM is around 30$ components, 5$ OSHPark PCB.. that's quite neat.

Raw signal acquisition and enveloppe with this ADC pHAT

With the enveloppe

With the raw signal

First acquisitions:

See the jupyter notebook:

Issues: bugs in connected ADC pins + no offset really

WHat does v2 look like ?

and the corresponding schematics (PDF).

What does v0 look like ?

Top in 3D

Bottom in 3D



  • Getting a board an soldering some ADCs
  • Understand GPIO mem mapping
  • Get raw data with offset vref/2
  • Tests with a single ADC at 11Msps


  • @ivan for his help on altium

results matching ""

    No results matching ""