mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-10-18 11:09:32 +00:00
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1253 7894878c-1315-0410-8ee3-d5d059ff63e0
128 lines
5.1 KiB
Plaintext
128 lines
5.1 KiB
Plaintext
Kernel driver `pcf8591.o'
|
|
========================
|
|
|
|
Status: Status: Complete; Beta.
|
|
|
|
Supported chips:
|
|
* Philips PCF8591
|
|
Prefix: `pcf8591'
|
|
Addresses scanned: I2C 0x48 - 0x4f (inclusive)
|
|
Datasheet: Publicly available at the Philips Semiconductor website
|
|
http://semiconductors.philips.com/
|
|
|
|
Author: Aurelien Jarno <aurelien@aurel32.net>
|
|
valuable contributions by Jan M. Sendler <sendler@sendler.de>
|
|
|
|
Module Parameters
|
|
-----------------
|
|
|
|
* force: short array (min = 1, max = 48)
|
|
List of adapter,address pairs to boldly assume to be present
|
|
* force_pcf8591: short array (min = 1, max = 48)
|
|
List of adapter,address pairs which are unquestionably assumed to
|
|
contain a `pcf8591' chip
|
|
* ignore: short array (min = 1, max = 48)
|
|
List of adapter,address pairs not to scan
|
|
* ignore_range: short array (min = 1, max = 48)
|
|
List of adapter,start-addr,end-addr triples not to scan
|
|
* probe: short array (min = 1, max = 48)
|
|
List of adapter,address pairs to scan additionally
|
|
* probe_range: short array (min = 1, max = 48)
|
|
List of adapter,start-addr,end-addr triples to scan additionally
|
|
|
|
|
|
Description
|
|
-----------
|
|
The PCF8591 is an 8-bit A/D and D/A converter (4 analog input and one
|
|
analog ouput) for the I2C bus produced by Philips Semiconductors. It
|
|
is designed to provide a byte I2C interface to up to 4 separate devices.
|
|
|
|
The PCF8591 has 4 analog inputs programmable as single-ended or
|
|
differential inputs :
|
|
- mode 0 : four single ended inputs
|
|
Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3
|
|
|
|
- mode 1 : three differential inputs
|
|
Pins AIN3 is the common negative differential input
|
|
Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2
|
|
|
|
- mode 2 : single ended and differential mixed
|
|
Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1
|
|
Pins AIN2 is the positive differential input for channel 3
|
|
Pins AIN3 is the negative differential input for channel 3
|
|
|
|
- mode 3 : four differential inputs
|
|
Pins AIN0 is the positive differential input for channel 0
|
|
Pins AIN1 is the negative differential input for channel 0
|
|
Pins AIN2 is the positive differential input for channel 1
|
|
Pins AIN3 is the negative differential input for channel 1
|
|
|
|
For more informations see the datasheet.
|
|
|
|
|
|
Accessing PCF8591 via /proc interface
|
|
-------------------------------------
|
|
|
|
! Be careful !
|
|
The PCF8591 is plainly impossible to detect ! Stupid chip.
|
|
So every chip with adress in the interval [48..4f] are
|
|
detected as PCF8591. If you have other chips in this address
|
|
range, the workaround is to load this module after the one
|
|
for your others chips.
|
|
|
|
On detection (i.e. insmod, modprobe et al.), directories are being
|
|
created for each detected PCF8591:
|
|
|
|
/proc/sys/dev/sensors/pcf8591-<0>-<1>/
|
|
where <0> is the bus the chip was detected on (e. g. i2c-0)
|
|
and <1> the chip address ([48..4f]): ./pcf8591-i2c-0-48/
|
|
|
|
Inside these directories, there are five files each:
|
|
ain_conf, ch0, ch1, ch2, ch3, aout_enable, aout.
|
|
|
|
The ain_conf file is rw. Reading gives you the current analog inputs
|
|
configuration, and writing configure the analog inputs. It must be
|
|
a number between 0 and 3., other values are ignored. For the different
|
|
modes, see above in the description.
|
|
|
|
The ch0, ch1, ch2 and ch3 files are ro. Reading gives the value
|
|
of the corresponding channel. Depending on the current analog inputs
|
|
configuration, channel ch2 and/or ch3 may are not used by the chip
|
|
and so read as 0. Values range are from 0 to 255 for single
|
|
ended inputs and -128 to +127 for differential inputs (8-bit ADC).
|
|
|
|
The aout_enable is rw. Reading gives "0" for analog output enabled and
|
|
"1" for analog output disabled. Writing accepts "0" and "1" accordingly.
|
|
|
|
The aout is rw. Writing a number between 0 and 255 (8-bit DAC), send
|
|
the value to the digital-to-analog converter. Note that a voltage will
|
|
only appears on AOUT pin if aout_enable equals 1. Reading return the last
|
|
value written.
|
|
|
|
On module initialization the chip is configured as followed :
|
|
- four single ended differential inputs
|
|
- analog output set to 0 and enabled
|
|
|
|
|
|
Chip Features
|
|
-------------
|
|
|
|
Chip `pcf8591'
|
|
LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE
|
|
ain_conf NONE NONE RW 0
|
|
ch0 NONE NONE R 0
|
|
ch1 NONE NONE R 0
|
|
ch2 NONE NONE R 0
|
|
ch3 NONE NONE R 0
|
|
aout_enable NONE NONE RW 0
|
|
aout NONE NONE RW 0
|
|
|
|
LABEL FEATURE SYMBOL SYSCTL FILE:OFFSET
|
|
ain_conf SENSORS_PCF8591_AIN_CONF ain_conf:1
|
|
ch0 SENSORS_PCF8591_CH0 ain_ch0:1
|
|
ch1 SENSORS_PCF8591_CH1 ain_ch1:1
|
|
ch2 SENSORS_PCF8591_CH2 ain_ch2:1
|
|
ch3 SENSORS_PCF8591_CH3 ain_ch3:1
|
|
aout_enable SENSORS_PCF8591_AOUT_ENABLE aout_enable:1
|
|
aout SENSORS_PCF8591_AOUT aout:1
|