EmbeddedRelated.com
Forums

ARM with 12-bit ADC

Started by ravi February 22, 2008
Hi All,

We have a project using 12-bit ADC. Any one has idea on chip vendors who
manufacture 12-bit 8 channel ADC. I found one from ST (STM32), but these are
based on Cortex M3 and and getting them to India is also difficult. We tried
to get them, but we couldn't. We are looking for ARM7/ARM9 based
controllers.

Any kind of info we help us a lot.
Regards
ravi

An Engineer's Guide to the LPC2100 Series

Analog Devices offers some ARM7TDMI-based controllers with 12-bit ADC
and up to 16 channels.

Have a look at this site:

http://www.analog.com/static/imported-files/data_sheets/ADuC7019_20_21_22_24_25_26_27_28_29.pdf
Hi,

You can check ADUC7026BSTZ62 from Analog Devices.

Refards,

FIRAT KOCAK
> Analog Devices offers some ARM7TDMI-based controllers with 12-bit ADC

they call them "Analog Microcontroller". Very nice chips, we use them
here too. The support from analog for non commercial users like
universities is like nonexistent :-( Not one email we asked something
was answered. And the documentation is very small and partwise not
really exact written. But with enough trial&error we got it.
Crossworks supports them fine. Now we got it with yagarto too (not
me, but a coworker;-).

Martin
Ravi,

There are many ways to convert analogue data with 12-bit resolution
depending on the application.

1. You can use any ARM7/9 controller that has a 12-bit A/D converter
(as some members suggested)
2. You can use an external 12-bit A/D converter connected to a SPI port
if adding extra components is not a problem (TI, AD, Maxim have 12-bit ADC
with SPI)
3. You can use ARM7/9 controllers that have 8 or 10-bit A/D converters
and oversampling if the resulting sampling rate is not too low for your
application.

Oversampling represents the process of acquiring data faster followed by
averaging the samples. Usually, the oversampling factor N is a power of 2
(e.g. 4:1, 16:1, etc) because the averaging can be done by summing N samples
and shifting to right the result to divide. ADD and SHIFT are very simple
and fast, so the overhead added by oversampling is minimal.

For example, in your case, using NXP LPC213x (10-bit A/D converter with 400
KHz sampling rate) and oversampling 4:1 you can obtain 12-bit samples at 100
KHz sampling rate for one channel. Make sure you use the "burst" mode for
the A/D converter or use a timer as a trigger if you want to control the
sampling process programmatically.

Another important thing is the data representation - using fixed point
fractional representation (i.e. numbers between 0 and 1 only) can greatly
simplify the oversampling and implementing various digital signal processing
algorithms. Not to mention that the LPC213x ADC will produce numbers in this
representation (i.e. a binary fraction representing the voltage on analog
input pin).

In practice 400 KHz might be a little bit difficult to achieve because:

* The maximum sampling rate depends on the number of signals
(channels) you need to acquire. If you need 8 signals then your maximum
sampling frequency would be 400 KHz / 8 = 50 KHz
* LPC213x ADC does not buffer the samples in any way - it has no FIFO
and there is no DMA to help you store the samples. As consequence, you will
have to do this in the ADC interrupt service routine. At 400 KHz the
interval between interrupts is 2.5 us - very short. Depending on the code
you write to handle the ADC interrupts you may not be able to get better
than 200 KHz (5 us).

In conclusion, if sampling frequency is low, higher resolutions can be
achieved through oversampling. I would recommend you this method if you
don't need sampling frequencies higher than 10.20 KHz and you need all the
channels.

Good luck!

Stefan
> Analog Devices offers some ARM7TDMI-based controllers with 12-bit ADC and up to 16 channels.
>
>Have a look at this site:
>
> http://www.analog.com/static/imported-files/data_sheets/ADuC7019_20_21_22_24_25_26_27_28_29.pdf

These parts are pretty light on RAM - the biggest ones have only 8K. Not exactly the same as the more general purpose NXP and Atmel parts. Nice ADCs though.

AW
> 3. You can use ARM7/9 controllers that have 8 or 10-bit A/D converters
> and oversampling if the resulting sampling rate is not too low for your
> application.
>
> Oversampling represents the process of acquiring data faster followed by
> averaging the samples. Usually, the oversampling factor N is a power of 2
> (e.g. 4:1, 16:1, etc) because the averaging can be done by summing N
> samples
> and shifting to right the result to divide. ADD and SHIFT are very simple
> and fast, so the overhead added by oversampling is minimal.
>

Dear Stefan,
Thanks a lot for the good explanation of over sampling.
Warm Regards,

Mukund Deshmukh,
Beta Computronics Pvt Ltd.
10/1 IT Park, Parsodi,
Nagpur -440022 India.
Web site - http://betacomp.com
I need to achieve 400Khz sampling (one channel) with an LPC2138. I can
do pooling and any sort of tricks, but I need the time between samples
to do some processing.
Can it be done? 5us per sample as proposed is too much for my
application. Any recommendations?
Anyone knows if I can operate the two ADC interlevaded or in parallel
to achieve 800KHz sampling?
> > 3. You can use ARM7/9 controllers that have 8 or 10-bit A/D converters
> > and oversampling if the resulting sampling rate is not too low for your
> > application.
> Thanks a lot for the good explanation of over sampling.

... but unfortunately that is only half the truth.
Yes, you get more resolution with oversampling, but
No, you don't get more accuracy.

And the last one is most of the time that what you really will need.
It may be, that you get more accuracy, too - from art to part, when
the real given accuracy of the ADC is much lower than 1 LSB, but not
in general. Neverstheless for a one time hobby project this may be
OK.

Martin
--- In l..., "Victor Suarez"
wrote:
>
> I need to achieve 400Khz sampling (one channel) with an LPC2138. I can
> do pooling and any sort of tricks, but I need the time between samples
> to do some processing.
> Can it be done? 5us per sample as proposed is too much for my
> application. Any recommendations?
> Anyone knows if I can operate the two ADC interlevaded or in parallel
> to achieve 800KHz sampling?
>

How many gadgets do you intend to build? If chip cost is not an issue,
why not use a 12 bit A/D with parallel interface and couple it to a 500
MHz Blackfin processor with a DMA channel?

With this approach you can meet the sampling requirements and still
have a lot of compute cycles for processing.

A/D: http://www.analog.com/en/prod/0,,AD7854,00.html
Blackfin: http://www.analog.com/processors/blackfin/

Oh, and the Blackfin has DSP capability if you want to manipulate the
incoming A/D samples.

You MIGHT be able to use an SPI interface as well. I didn't check for
A/D's with fast SPI.

Richard