I had developed code that samples ADC data using timer trigger and the DMA controller writing data to a buffer. This all works great with one exception; I will get incorrect data (0x0FF or 0x300). I setup the trigger to sample every 8ms in the pulse sample mode. I would have never noticed the issue except we should never get this value with the input we are supplying. When it fails it is always the same data pattern (0x0FF or 0x300). I also tried 8bit conversion but the data is 0x3F or 0xC0.
I am using MODOSC at 5MHz and the ADC10SHT_2 and ADC10DIV_0. I have also checked for other errors (ADC10TOVIFG and ADC10OVIFG) but this never occurs. The failure rate is only ~8 in a 24 hour period but this data is used for ECG and is unacceptable.
Any input would be appreciated.
So you're getting a value of 1/4 Vref or 3/4 Vref once in a while. That's strange.It's possible that the input data is just that way sometimes (spikes). The ADC10/12 takes 'snapshots' from the input signal. And if there are spikes, chances are that it will capture at the moment of a spike. However, scanning a 3h log of independently sampled analog data (digital scope stream) for a single short anomaly is next to impossible.It's also possible that you have a problem in your code (but unlikely, considering the failure rate of 1:1.350.000)Of course there is always a chance for a yet undetected silcon bug too.
Since it is always the same pattern, the pragmatic approach would be to just look for this pattern and repeat the conversion. I guess anything else is beyond this forum and requires one of the TI engineers to look at it.
_____________________________________Before posting bug reports or ask for help, do at least quick scan over this article. It applies to any kind of problem reporting. On any forum. And/or look here.If you cannot discuss your problem in the public, feel free to start a private conversation: click on my name and then 'start conversation'. But please do so only if you really cannot do it in a public thread, as I usually read all threads. And I prefer to answer where others can profit from it (or contribute to it) too.
I have done some testing with the ADC10 conversion and have determined the problem occurs when the input voltage results in the boundary between 0x200 and 0x1FF. I setup a test with the input voltage of 1.25v (our VREF is 2.5v). I did back-to-back reads and I got a 25% failure rate when reading the value from ADC10MEM0. The value would be 0x300 or 0x0FF. If I added a delay (1ms) between reads the failure rate drop way down (was more like the previous errors I was getting before). I raised or lowered the input voltage and the data conversion was never in error of the expected value. So at this point I am concluding the issue is in doing a conversion where the transition results in a value between the lower and upper (data bit 9) sections.
Richard Bissenhave determined the problem occurs when the input voltage results in the boundary between 0x200 and 0x1FF.
The first will happen if the conversion frequency is too low, the second if it is too fast.In the second case, it might be necessary to enable the reference output adn externally buffer the reference voltage with a 100nF ceramic/10µF tantalum capacitor. Maybe it also helps to enable the reference buffer etc. In the first case, the solution is obvious.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.