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 |
History
set destructor virtual
2012-09-24, by ykuroda [Mon, 24 Sep 2012 21:47:05 +0000] rev 4
set destructor virtual
move read() to protected area. comments add to AD7490.h
2012-09-24, by ykuroda [Mon, 24 Sep 2012 21:33:14 +0000] rev 3
move read() to protected area. comments add to AD7490.h
Comments inserted.
2012-08-29, by ykuroda [Wed, 29 Aug 2012 14:19:06 +0000] rev 2
Comments inserted.
Just refine the code
2012-08-29, by ykuroda [Wed, 29 Aug 2012 14:10:30 +0000] rev 1
Just refine the code
Analog Devices AD7490 16 channels, 1MSPS, 12Bit ADC with SPI interface
2012-08-29, by ykuroda [Wed, 29 Aug 2012 11:01:51 +0000] rev 0
Analog Devices AD7490 16 channels, 1MSPS, 12Bit ADC with SPI interface