Sunday, March 23, 2014

Microcontrollers with fast analog to digital converter

Many (if not most) of microcontrollers have some kind of AD converter inside, but these are usually rather slow - typically less than 80 000 samples per second but sometimes as low as as 25 kilosamples per second. It is good enough for many tasks but if one wants, for example, to look at waveforms then its its ridiculously low. Sampling rate has to be 10, or better yet, 20 times higher than that of explorable waveform if one wants to use A/D converter for something like oscilloscope.

Sample rate is about 12x higher than that of a signal 


Most microcontrollers could be used to make oscilloscope for frequency range of up to several kilohertz! Not very appealing.

For some reason it is rather hard to find data on maximum speeds of built-in A/D converter. In some cases it is not stated even in user manual or data sheet. One has to compute it using, say, fastest recommended A/D clock speed, number of clock cycles needed, sampling time and so on. Number of A/D channels or bits per channel are listed everywhere but not the speed. I have no idea why.


This is (unsorted) list of fastest built-in AD converters i am aware of:

STM32F4xx:

3×12-bit, 2.4 Msps A/D converters: up to 24 channels and 7.2 Msps in triple interleaved mode

PIC32MZxxx:

12-bit ADC module: 28 Msps with six Sample and Hold (S&H) circuits

PIC24FJxxxGC:

12-Bit, up to 50-Channel, High-Speed, Pipelined Analog-to-Digital (A/D) Converter: Conversion rates up to 10 Msps

TMS320F281x:

12-Bit ADC, 16 Channels Fast Conversion Rate: 80 ns/12.5 Msps

dsPIC33FJxxGS:

2  Msps  or 4  Msps, depending on device

These are fastest i am aware of. Most (but not all) ARM controllers have 1 msps A/D converter. PIC24xxx and dsPIC have often 500 ksps or 1.1 msps A/D converters. Typical MSP430 has 200 ksps A/D converter. Typical MC9s08 has 400 ksps.

Now, as one can see, there are quite fast A/D converters inside some microcontrollers but this is actually only part of the story. Modern microcontrollers are very complex devices and take time to master. While sampling can be done with just a microcontroller, this is rarely enough. A/D input range is something like 0...3.3V while most signals in real life are centered around 0V and so must be input to device which accepts negative voltages as well. A/D input impedance is too low for most signal sources. Quite a lot of additional circuitry is needed.