Re: ADC setting for differential and single-ended channels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Otavio Salvador,

> On Thu, Jul 18, 2013 at 12:31 AM, Marek Vasut <marex@xxxxxxx> wrote:
> > Dear Otavio Salvador,
> > 
> >> On Wed, Jul 17, 2013 at 4:12 PM, Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
> >> > Otavio Salvador <otavio@xxxxxxxxxxxxxxxx> wrote:
> >> >>Hello,
> >> >>
> >> >>Mario and I are working at TI ADS124x driver and this chip can be used
> >> >>in two ways:
> >> >>
> >> >>In case of ADS1247:
> >> >> - 2 differential channels
> >> >> - 3 single-ended channels
> >> >>
> >> >>In the first case it take two inputs and the chip returns the
> >> >>difference between them; in the second case it does the same but you
> >> >>must choose one channel to be the negative reference for all the other
> >> >>inputs. This is how we understood the datasheet however the
> >> >>single-ended use is quite confusing on it so we might be wrong.
> >> >>
> >> >>So we'd like to know the best way to handle those cases in the driver.
> >> >>
> >> >>One alternative we discussed is to use two attributes in the dts as:
> >> >> ...
> >> >> #channels = <2>;
> >> >> channels = <0 3
> >> >> 
> >> >>                    1 2>;
> >> >>
> >> >>So it'd take two channels. One composed by input 0 and input 3 and
> >> >>another composed by input 1 and input 2.
> >> >>
> >> >>On the another case, we'd use:
> >> >>  ...
> >> >>  #channels = <3>
> >> >>  channels = <0 3
> >> >>  
> >> >>                     1 3
> >> >>                     2 3>;
> >> >>
> >> >>So it'd take three channels and all them comparing to input 3.
> >> >>
> >> >>Are we in the right route? Any hints how to better solve this?
> >> >>
> >> > Another option is to leave it entirely up to user space.  See max1363
> >> > driver where both single ended and differential channels are supported
> >> > at the same time with care taken in buffered mode.
> >> > 
> >> > Not sure if that works for your case?
> >> 
> >> I think it is nicer to have it set in the dt; we need the dt anyway so
> >> it seems logical to get it setting  the right channel.
> > 
> > Can you please elaborate why is it logical?
> > 
> > I took a brief look over the datasheet [1], here are the facts I see
> > (correct me if I'm wrong). I first looked at Figure 51. :
> > 
> > - ADS1246 has two input channels
> > - ADS1247 has four input channels
> > - ADS1428 has eight input channels
> > 
> > - Each one of the 2/4/8 input channels can be connected to either P(+) or
> > N(-) of the amplifier (figure 53) for the ADC.
> > 
> > - Apparently, according to Figure 51. , it is possible to have only one P
> > and one N channel enabled at time (and therefore sample only one pair of
> > channels with the ADC) since the P and N rails are shared by all the
> > inputs and there's only one ADC block.
> > 
> > Therefore, the userland would have to export sysfs file for each of the
> > channels where one would write if the channel is possitive(+) /
> > negative(-) / not_connected(NC) and then trigger the start of sampling.
> > 
> > What do you think?
> 
> This does not make them act as differential  against each other.
> 
> We can have several combinations as:
> 
> 0 - P / 1 - N (differential)
> 0 - P / 1 - P / 2 - P / 3 - N (all differential to 3)
> and so on.
> 
> So how userland would tell which would be the differential to use?
> 
> Our board has:
> 
> 0 against 1
> 2 against 3
> 
> but it is a design choice.
> 
> Am I missing something?

echo 'P' > /sys/.../chan_mux_0
echo 'P' > /sys/.../chan_mux_2
echo 'N' > /sys/.../chan_mux_1
echo 'N' > /sys/.../chan_mux_3

Like this for example ;-) And this could be nicely implemented via IIO, but I 
believe there might even already be an IIO API for this stuff.

Best regards,
Marek Vasut
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux