Re: [PATCH] IIO: ADC: New driver for AD7792/AD7793 3 Channel SPI ADC

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

 



On 05/27/11 11:55, Michael Hennerich wrote:
> On 05/27/2011 12:53 PM, Jonathan Cameron wrote:
>> On 05/27/11 11:23, Michael Hennerich wrote:
>>> On 05/27/2011 11:44 AM, Jonathan Cameron wrote:
>>>> ...
>>>>> Hi Jonathan,
>>>>>
>>>>>
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   ls
>>>>> device0:buffer0               power
>>>>> in-in_scale                   range
>>>>> in0-in0_raw                   range_available
>>>>> in1-in1_raw                   sampling_frequency
>>>>> in2-in2_raw                   sampling_frequency_available
>>>>> in3_raw                       subsystem
>>>>> in4_supply_raw                temp0_raw
>>>>> in4_supply_scale              temp_scale
>>>>> in_scale                      trigger
>>>>> name                          uevent
>>>>>
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   cat in_scale
>>>>> 0.000140
>>>>>
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   cat range_available
>>>>> 2500 1250 625 312 156 78 39 19
>>>>>
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   echo 312>   range
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   cat in_scale
>>>>> 0.000010
>>>>>
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   echo 78>   range
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>   cat in_scale
>>>>> 0.000000
>>>>> root:/sys/devices/platform/bfin-spi.0/spi0.18/device0>
>>>>>
>>>>> with these 24-bit converters and input AMPs we are already exhausted
>>>>> the number of available digits we have for scale.
>>>> Time for a new return type and extra logic in the core.
>>>> IIO_VAL_INT_PLUS_NANO
>>>>
>>>> should still fit in a 32 bit long.  Perhaps it's better to make a  bigger jump - or
>>>> this will just bite us again sometime soon.
>>>>
>>>> After nano we will have to start having padding zeros which is going to be a little
>>>> strange - or I guess we don't have to keep val as being int...
>>>>
>>>> IIO_VAL_MICRO_PLUS_PICO maybe?  The maximum option of IIO_VAL_NANO_PLUS_ATTO seems a little
>>>> 'odd'.
>>>>
>>>> The more complex question is going to be writing values that are this small. I think we will
>>>> have to add another callback into the drivers where they can query what format a value should
>>>> be in so the core can provide it.  Make this optional so it doesn't effect the majority
>>>> of drivers where int + micro does the job.
>>>>
>>> IIO_VAL_INT_PLUS_NANO should do the job for now.
>>>
>>>>> What shall we do?
>>>>>
>>>>> Also how would you name AIN1(-) - AIN1(-)?
>>>>>
>>>>> #define AD7793_CH_AIN1P_AIN1M        0 /* AIN1(+) - AIN1(-) */
>>>>> #define AD7793_CH_AIN2P_AIN2M        1 /* AIN2(+) - AIN2(-) */
>>>>> #define AD7793_CH_AIN3P_AIN3M        2 /* AIN3(+) - AIN3(-) */
>>>>> #define AD7793_CH_AIN1M_AIN1M        3 /* AIN1(-) - AIN1(-) */
>>>>>
>>>>> in0-in0_zerooffset_raw ?
>>>> Hmm.. That is awkward.  Given only the channel numbers exist in event codes
>>>> it will also possibly cause us issues at some later date.
>>>> How about having in0-in0_raw then in0-in0_offset + in0-in0_offset_available.
>>>> (actually this would be shared I guess so in-in_offset_available).
>>>> A little clunky, but does fit better within the api.  Is there a real use case
>>>> for buffering where one grabs both offsets in the same scan?
>>> As far as I understand things - We do zero and full scale calibration,
>>> The results read from the other channels should have the offset eliminated.
>>> I agree the offset read from  AIN1(-) - AIN1(-) should be the same for all channels.
>>> So in-in_offset sounds good to me - why _available?
>> Because there are two options possible.  One when we are doing signed output
>> and one for differential but with only positive values possible.
> Sorry I can't follow here. These 3 differential channels pairs always deliver signed values.
> Why would a differential channel only deliver positive values?
> If the voltage on AINx(+) is lower then the voltage on AINx(-) the result is negative.
So what is AIN1(-) - AIN1(-) ?

I thought that was unipolar differential.
--
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