josiah47 -
the speed is about 1250rpm max, so the would be about 7500 adc reads per second, 360 x 1250 / 60 seconds. I would get so many sample ex. 5 x 360, verify each sample if needed, and then return that data back to the PC to display the results, I don't know if it could do this real time?
The STM32F is capable of a maximum of 1 million samples/ADC (and it has two ADC's, so theoretically twice that). BUT the normal libmaple analogRead deliberately throttles the ADC back to about 150K samples/second.
The reason it is so much slower than the theoretical maximum is little to do with the rate at which it can convert the analogue value. The issue is the time it takes to sample and hold the analogue input voltage. If you are using a piece of electronics with a relatively high output impedance, that means that it would take a long time (relatively) to charge up the sample and hold electronics inside the Maple's STM32F103. So libmaple takes the safe approach of allowing a reasonable amount of time (about 6uSecs) to sample the signal. Hence you don't need to have a very deep understanding of electronics in order to get reasonable results 'out of the packet'. Trying to sample at 1million samples/second, without sorting out the electrical impedance will make things much worse (I'll skip that for now).
7500 samples/second is so slow that this isn't a problem for Maple (it can go 20x faster than that 'out of the packet'). It is so far within the capability of Maple, that IMHO trying to use DMA is probably pointless complexity. As you say, take a few samples, and do a bit of 'box-car integration' or filtering to reduce the noise. KISS.
I think all the processing and control can be done on Maple.
As evidence, here is a balancing robot built with an Arduino: http://hacknmod.com/hack/make-a-mini-segway-using-the-arduino/
An Arduino can do less than 10,000 samples/second, about 15x slower than a Maple with standard libmaple.
To put this in context, something in free fall will travel, from rest about 2.2x10^-10 metres in the time it takes to do an analogRead on a Maple.
This http://hypertextbook.com/facts/1999/BrianLey.shtml
says a human hair has a diameter in the range 17 to 181x10^-6 metres
so an object would move, about 10^-5 of the diameter of a fine human hair in the time it takes Maple to do an analogRead (and this is a much worse case than balancing, where a component of gravity is 'absorbed' by the lever), so the rate of sampling is not the issue.
The issue is the bandwidth of the sensor system, and the amount of noise in it.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1221664564/15
talks about that Arduino example, and it samples at 250Hz. Sampling a signal at a much higher rate than its bandwidth isn't going to improve the signal, though it might let you remove noise.
The hardest part might be pumping the data up the wire to a host PC over USB. USB is only polled by the host, at best, every millisecond, so you might find USB much more of a disruption to the program than all the analogRead and calculations.
(full disclosure: I am not a member of LeafLabs staff)