[PATCH] staging: comedi: das1800: fix analog input number of channels
Hartley Sweeten
HartleyS at visionengravers.com
Thu Apr 7 17:45:38 UTC 2016
On Thursday, April 07, 2016 9:48 AM, Hartley Sweeten wrote:
> On Thursday, April 07, 2016 3:16 AM, Ian Abbott wrote:
>> On 06/04/16 19:06, H Hartley Sweeten wrote:
>>> The "hc" type boards have 64 analog input channels with a 64 entry queue.
>>> All the others have 16 channels and a 256 entry queue.
>>>
>>> Currently the boardinfo 'qram_len' is used to initialize the subdevice
>>> 'n_chan' and 'len_chanlist'. This works for the 64 channel boards but
>>> sets the 'n_chan' wrong for the 16 channel boards.
>>
>> I think the 256 QRAM positions is to allow use with a set of EXP-1800
>> boards, each of which can multiplex one of the single-ended inputs of
>> the DAS-1800 series into 16 channels. According to the user's guide,
>> they can be daisy chained to provide up to 256 channels.
>>
>> Datasheet:
>>
>> http://www.tek.com/sites/tek.com/files/media/media/resources/exp-1800_ds.pdf
>>
>> User's Guide download page (need to fill in contact info!):
>>
>> http://www.tek.com/manual/exp-1800-users-guide-92160b-manual
>>
>>
>> So it's probably best to leave the number of channels alone.
Finally able to get the user's guide to download.
> The EXP-1800 support looks like it will need additional changes to the driver
> in order to work correctly. According to the data sheet:
>
> 1) all board input channels must be configured as single-ended,
> EXP-1800 inputs can be single-ended or differential. Not sure how
> the board needs to be programmed to achieve this.
> 2) only gains of 1 and 50 are selectable on a per-channel basis
> 3) resolution is 12-bit, not clear how this works on a 16-bit board
> 4) max ai speed depends on the EXP-1800 gain not the board
> gain 1 = 312kHz sample rate
> gain 50 = 150kHz sample rate
> 5) gain must be the same on all channels and the boards gain must be 1
>
> Additionally, it's not clear how the channel mapping works for each
> EXP-1800 connected to a board input channel.
The channel mapping is a bit warped as far as comedi is concerned.
Each EXP-1800 is jumper configured for what board input channel will
be used to return the 16 channels on the EXP-1800. The hi bits of the
QRAM are output to the EXP-1800 boards to select the channel as the
MUX4-7 pins on the connector.
Channel mapping looks like this:
On-board channel 0 EXP-1800 logical channels 0 to 15
On-board channel 1 EXP-1800 logical channels 16 to 31
...
On-board channel 15 EXP-1800 logical channels 240 to 255
So it looks like the QRAM 'channel' (i.e. the comedi channel) to physical
channel mapping goes:
channel 0 On-board channel 0 / EXP-1800 logical channel 0
channel 1 On-board channel 1 / EXP-1800 logical channel 16
channel 2 On-board channel 2 / EXP-1800 logical channel 32
channel 3 On-board channel 3 / EXP-1800 logical channel 48
channel 4 On-board channel 4 / EXP-1800 logical channel 64
channel 5 On-board channel 5 / EXP-1800 logical channel 80
channel 6 On-board channel 6 / EXP-1800 logical channel 96
channel 7 On-board channel 7 / EXP-1800 logical channel 112
channel 8 On-board channel 8 / EXP-1800 logical channel 128
channel 9 On-board channel 9 / EXP-1800 logical channel 144
channel 10 On-board channel 10 / EXP-1800 logical channel 160
channel 11 On-board channel 11 / EXP-1800 logical channel 176
channel 12 On-board channel 12 / EXP-1800 logical channel 192
channel 13 On-board channel 13 / EXP-1800 logical channel 208
channel 14 On-board channel 14 / EXP-1800 logical channel 224
channel 15 On-board channel 15 / EXP-1800 logical channel 240
channel 16 On-board channel 0 / EXP-1800 logical channel 1
channel 17 On-board channel 1 / EXP-1800 logical channel 17
...
channel 254 On-board channel 14 / EXP-1800 logical channel 239
channel 255 On-board channel 15 / EXP-1800 logical channel 255
So if no EXP-1800 boards are used the comedi channel matches the
on-board channel. But, if any EXP-1800 boards are used the comedi
channel to physical channel gets all screwy. Just using one EXP-1800
board connected to on-board channel 0 results in this comedi channel
map for the 32 'usable' channels:
channel 0 EXP-1800 logical channel 0
channel 1 On-board channel 1
channel 2 On-board channel 2
channel 3 On-board channel 3
channel 4 On-board channel 4
channel 5 On-board channel 5
channel 6 On-board channel 6
channel 7 On-board channel 7
channel 8 On-board channel 8
channel 9 On-board channel 9
channel 10 On-board channel 10
channel 11 On-board channel 11
channel 12 On-board channel 12
channel 13 On-board channel 13
channel 14 On-board channel 14
channel 15 On-board channel 15
channel 16 EXP-1800 logical channel 1
channel 32 EXP-1800 logical channel 2
channel 48 EXP-1800 logical channel 3
channel 64 EXP-1800 logical channel 4
channel 80 EXP-1800 logical channel 5
channel 96 EXP-1800 logical channel 6
channel 112 EXP-1800 logical channel 7
channel 128 EXP-1800 logical channel 8
channel 144 EXP-1800 logical channel 9
channel 160 EXP-1800 logical channel 10
channel 176 EXP-1800 logical channel 11
channel 192 EXP-1800 logical channel 12
channel 208 EXP-1800 logical channel 13
channel 224 EXP-1800 logical channel 14
channel 240 EXP-1800 logical channel 15
> I think it's better to set the number of channels to 16 and just support
> the on-board analog inputs for now. Once the EXP-1800 support is
> figured out it can be added.
There is also the issue with the gain when using an EXP-1800 board.
For now I think limiting the channels to 16 is the best option.
Also, the driver doesn't state that the EXP-1800 boards are supported.
I'm not sure the author (Frank Mori Hess) actually thought about or
tested it when he originally wrote the driver.
Regards,
Hartley
More information about the devel
mailing list