You are here

Problem with one ADC SAR for multi-channel analog inputs | Cypress Semiconductor

Problem with one ADC SAR for multi-channel analog inputs

Summary: 5 Replies, Latest post by hli on 05 Jun 2012 04:07 AM PDT
Verified Answers: 1
Last post
Log in to post new comments.
qingshanshan's picture
24 posts


Software package: PSoC Creator 2.0

Hardware: CYBC55 Board

Schamatic design:  a single ADC SAR component + an analog multiplexer component + multi-analog Pins.

The voltage value acquired from the ADC SAR is correct (Acquired voltage value = real world analog input voltage) when this design works on single analog input.  However, the voltage values acquired from the ADC SAR are wrong (Acquired voltage values != real world analog input voltages) when work on multi-channel inputs.

Could you please advise me how to sort out this problem.

Many thanks


user_1377889's picture
9256 posts

There are some pitfalls possible.

one usual is:

After switching the input-mux you'll have to discart one measurement when running in countinuos mode.

best would be to upload your project here to let us have a look at and see if everything is o.k

To do so:

Build -> Clean Project

File -> Create workspace bundle(minimal)

and then upload the resulting zip-archive here.



kiku's picture
Cypress Employee
64 posts



Don't use "Continuous" mode of conversion when you are muxing the input of ADC. Use "Multi-Sample" mode of conversion if resolution <= 16 bits or "Multi-Sample Turbo" if resolution > 16 bits.



user_1377889's picture
9256 posts

Kiku, there are no modes (except free-runnung and triggered) for the SAR-ADC. because it doesn't use a filter.

I'm still awaiting the project uploaded here to have a look at.


To do something right is one way, do perform something wrong, there are several ways ;-)


dasg's picture
Cypress Employee
730 posts

Hi qingshanshan,


Are you using Triggered or free running mode?

If you are using multiple channels, then you need to use triggered mode.


The problem you will face if you use free running mode is after reading a converted value, a stray conversion would have started before  and issuing a StopConvert( ) API. This will result in cross talk between two channels and hence result in corrupted values.

Using trigger mode on the other hand will allow only one conversion upon request, thereby avoiding cross talk between two channels.

user_78878863's picture
2551 posts

There is an FAQ about that:

Log in to post new comments.