Analog Devices 16 channels, 1MSPS, 12bit ADC with SPI interface


Table of Contents

  1. API

Analog Devices' AD7490 A/D converter chip is a great choice to increase ADC channels to mbed. I wrote a C++ class library, which allows multiple chips on the same SPI serial bus line.

main.cpp - usage of sequential mode (use 2 ADCs)

#include "mbed.h"
#include "AD7490.h"

DigitalOut myled(LED1);
SPI spi(p11,p12,p13);

int main() {

    // set up SPI interface. 
    // should be set before call AD7490 constructer

    // construct AD7490 instances
    AD7490 ad1(spi, p9);
    AD7490 ad2(spi, p10);

    // start ad conversion with sequential mode

    while(1) {
        short ad_data[32];      // user buffer area

        myled = 1;[ 0]);  // save the first ADC data to buffer[16]);  // save the second ADC data to buffer
        myled = 0;

        for(int i=0; i<32; i++)
            printf("ch[%2d]: %d\n", i, ad_data[i]);


AD7490(SPI _spi, PinName _cs)Constructor. needs SPI instance and the Chip select pin
unsigned short convert(int ch=0)Single channel (one shot) conversion.
void convert(short data[]);All channels conversion with multiple 'one shot conversion'
unsigned short sequential(int ch=15);Start sequential mode, from channel 0 to 'ch'. ch=15 is default
void read(short buffer[]);Read data channel [0] to [ch], and copy them to user buffer area