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

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
    spi.format(16,0);
    spi.frequency(1000000);

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

    // start ad conversion with sequential mode
    ad1.sequential();
    ad2.sequential();

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

        myled = 1;
        ad1.read(&ad_data[ 0]);  // save the first ADC data to buffer
        ad2.read(&ad_data[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]);
        puts("");
        
        wait(1);
    }
}

API

AD7490
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

Files at this revision

API Documentation at this revision

Comitter:
ykuroda
Date:
Mon Sep 24 21:47:05 2012 +0000
Parent:
3:b7e72acaade2
Commit message:
set destructor virtual

Changed in this revision

AD7490.cpp Show annotated file Show diff for this revision Revisions of this file
AD7490.h Show annotated file Show diff for this revision Revisions of this file
diff -r b7e72acaade2 -r f059fdd25051 AD7490.cpp
--- a/AD7490.cpp	Mon Sep 24 21:33:14 2012 +0000
+++ b/AD7490.cpp	Mon Sep 24 21:47:05 2012 +0000
@@ -35,10 +35,6 @@
     }
 }
 
-AD7490::~AD7490()
-{
-}
-
 unsigned short
 AD7490::convert(int ch)
 {
diff -r b7e72acaade2 -r f059fdd25051 AD7490.h
--- a/AD7490.h	Mon Sep 24 21:33:14 2012 +0000
+++ b/AD7490.h	Mon Sep 24 21:47:05 2012 +0000
@@ -30,7 +30,8 @@
     
   public:
     AD7490(SPI _spi, PinName _cs);
-    ~AD7490();
+    virtual ~AD7490(){};
+
     unsigned short convert(int ch=0);       // one shot conversion at channel [ch]
     void convert(short data[]);             // convert all (16) channels with one short conv.