blob: e76a7892f68ed5e15b52eff2f76981c3c3d63bfc [file] [log] [blame]
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +00001Kernel driver pcf8591
2=====================
3
4Supported chips:
Jean Delvareafc31872009-09-15 17:18:14 +02005 * Philips/NXP PCF8591
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +00006 Prefix: 'pcf8591'
7 Addresses scanned: I2C 0x48 - 0x4f
Jean Delvareafc31872009-09-15 17:18:14 +02008 Datasheet: Publicly available at the NXP website
9 http://www.nxp.com/pip/PCF8591_6.html
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000010
11Authors:
12 Aurelien Jarno <aurelien@aurel32.net>
13 valuable contributions by Jan M. Sendler <sendler@sendler.de>,
14 Jean Delvare <khali@linux-fr.org>
15
16
17Description
18-----------
Jean Delvareafc31872009-09-15 17:18:14 +020019
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000020The PCF8591 is an 8-bit A/D and D/A converter (4 analog inputs and one
Jean Delvareafc31872009-09-15 17:18:14 +020021analog output) for the I2C bus produced by Philips Semiconductors (now NXP).
22It is designed to provide a byte I2C interface to up to 4 separate devices.
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000023
24The PCF8591 has 4 analog inputs programmable as single-ended or
25differential inputs :
26- mode 0 : four single ended inputs
27 Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3
28
29- mode 1 : three differential inputs
30 Pins AIN3 is the common negative differential input
31 Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2
32
33- mode 2 : single ended and differential mixed
34 Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1
35 Pins AIN2 is the positive differential input for channel 3
36 Pins AIN3 is the negative differential input for channel 3
37
38- mode 3 : two differential inputs
39 Pins AIN0 is the positive differential input for channel 0
40 Pins AIN1 is the negative differential input for channel 0
41 Pins AIN2 is the positive differential input for channel 1
42 Pins AIN3 is the negative differential input for channel 1
43
44See the datasheet for details.
45
46Module parameters
47-----------------
48
49* input_mode int
50
51 Analog input mode:
52 0 = four single ended inputs
53 1 = three differential inputs
54 2 = single ended and differential mixed
55 3 = two differential inputs
56
57
58Accessing PCF8591 via /sys interface
59-------------------------------------
60
61! Be careful !
Jean Delvareafc31872009-09-15 17:18:14 +020062The PCF8591 is plainly impossible to detect! Stupid chip.
63So every chip with address in the interval [0x48..0x4f] is
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000064detected as PCF8591. If you have other chips in this address
65range, the workaround is to load this module after the one
66for your others chips.
67
68On detection (i.e. insmod, modprobe et al.), directories are being
69created for each detected PCF8591:
70
Jean Delvareafc31872009-09-15 17:18:14 +020071/sys/bus/i2c/devices/<0>-<1>/
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000072where <0> is the bus the chip was detected on (e. g. i2c-0)
73and <1> the chip address ([48..4f])
74
75Inside these directories, there are such files:
Jean Delvareafc31872009-09-15 17:18:14 +020076in0_input, in1_input, in2_input, in3_input, out0_enable, out0_output, name
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000077
78Name contains chip name.
79
Jean Delvareafc31872009-09-15 17:18:14 +020080The in0_input, in1_input, in2_input and in3_input files are RO. Reading gives
81the value of the corresponding channel. Depending on the current analog inputs
82configuration, files in2_input and in3_input may not exist. Values range
83from 0 to 255 for single ended inputs and -128 to +127 for differential inputs
84(8-bit ADC).
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000085
86The out0_enable file is RW. Reading gives "1" for analog output enabled and
87"0" for analog output disabled. Writing accepts "0" and "1" accordingly.
88
89The out0_output file is RW. Writing a number between 0 and 255 (8-bit DAC), send
90the value to the digital-to-analog converter. Note that a voltage will
91only appears on AOUT pin if aout0_enable equals 1. Reading returns the last
92value written.