107 строки
4.7 KiB
ReStructuredText
107 строки
4.7 KiB
ReStructuredText
======================
|
|
Kernel driver w1_therm
|
|
======================
|
|
|
|
Supported chips:
|
|
|
|
* Maxim ds18*20 based temperature sensors.
|
|
* Maxim ds1825 based temperature sensors.
|
|
|
|
Author: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
w1_therm provides basic temperature conversion for ds18*20 devices, and the
|
|
ds28ea00 device.
|
|
|
|
Supported family codes:
|
|
|
|
==================== ====
|
|
W1_THERM_DS18S20 0x10
|
|
W1_THERM_DS1822 0x22
|
|
W1_THERM_DS18B20 0x28
|
|
W1_THERM_DS1825 0x3B
|
|
W1_THERM_DS28EA00 0x42
|
|
==================== ====
|
|
|
|
Support is provided through the sysfs w1_slave file. Each open and
|
|
read sequence will initiate a temperature conversion then provide two
|
|
lines of ASCII output. The first line contains the nine hex bytes
|
|
read along with a calculated crc value and YES or NO if it matched.
|
|
If the crc matched the returned values are retained. The second line
|
|
displays the retained values along with a temperature in millidegrees
|
|
Centigrade after t=.
|
|
|
|
Alternatively, temperature can be read using temperature sysfs, it
|
|
return only temperature in millidegrees Centigrade.
|
|
|
|
A bulk read of all devices on the bus could be done writing 'trigger'
|
|
in the therm_bulk_read sysfs entry at w1_bus_master level. This will
|
|
sent the convert command on all devices on the bus, and if parasite
|
|
powered devices are detected on the bus (and strong pullup is enable
|
|
in the module), it will drive the line high during the longer conversion
|
|
time required by parasited powered device on the line. Reading
|
|
therm_bulk_read will return 0 if no bulk conversion pending,
|
|
-1 if at least one sensor still in conversion, 1 if conversion is complete
|
|
but at least one sensor value has not been read yet. Result temperature is
|
|
then accessed by reading the temperature sysfs entry of each device, which
|
|
may return empty if conversion is still in progress. Note that if a bulk
|
|
read is sent but one sensor is not read immediately, the next access to
|
|
temperature on this device will return the temperature measured at the
|
|
time of issue of the bulk read command (not the current temperature).
|
|
|
|
Writing a value between 9 and 12 to the sysfs w1_slave file will change the
|
|
precision of the sensor for the next readings. This value is in (volatile)
|
|
SRAM, so it is reset when the sensor gets power-cycled.
|
|
|
|
To store the current precision configuration into EEPROM, the value 0
|
|
has to be written to the sysfs w1_slave file. Since the EEPROM has a limited
|
|
amount of writes (>50k), this command should be used wisely.
|
|
|
|
Alternatively, resolution can be set or read (value from 9 to 12) using the
|
|
dedicated resolution sysfs entry on each device. This sysfs entry is not
|
|
present for devices not supporting this feature. Driver will adjust the
|
|
correct conversion time for each device regarding to its resolution setting.
|
|
In particular, strong pullup will be applied if required during the conversion
|
|
duration.
|
|
|
|
The write-only sysfs entry eeprom is an alternative for EEPROM operations:
|
|
* 'save': will save device RAM to EEPROM
|
|
* 'restore': will restore EEPROM data in device RAM.
|
|
|
|
ext_power syfs entry allow tho check the power status of each device.
|
|
* '0': device parasite powered
|
|
* '1': device externally powered
|
|
|
|
sysfs alarms allow read or write TH and TL (Temperature High an Low) alarms.
|
|
Values shall be space separated and in the device range (typical -55 degC
|
|
to 125 degC). Values are integer as they are store in a 8bit register in
|
|
the device. Lowest value is automatically put to TL.Once set, alarms could
|
|
be search at master level.
|
|
|
|
The module parameter strong_pullup can be set to 0 to disable the
|
|
strong pullup, 1 to enable autodetection or 2 to force strong pullup.
|
|
In case of autodetection, the driver will use the "READ POWER SUPPLY"
|
|
command to check if there are pariste powered devices on the bus.
|
|
If so, it will activate the master's strong pullup.
|
|
In case the detection of parasite devices using this command fails
|
|
(seems to be the case with some DS18S20) the strong pullup can
|
|
be force-enabled.
|
|
|
|
If the strong pullup is enabled, the master's strong pullup will be
|
|
driven when the conversion is taking place, provided the master driver
|
|
does support the strong pullup (or it falls back to a pullup
|
|
resistor). The DS18b20 temperature sensor specification lists a
|
|
maximum current draw of 1.5mA and that a 5k pullup resistor is not
|
|
sufficient. The strong pullup is designed to provide the additional
|
|
current required.
|
|
|
|
The DS28EA00 provides an additional two pins for implementing a sequence
|
|
detection algorithm. This feature allows you to determine the physical
|
|
location of the chip in the 1-wire bus without needing pre-existing
|
|
knowledge of the bus ordering. Support is provided through the sysfs
|
|
w1_seq file. The file will contain a single line with an integer value
|
|
representing the device index in the bus starting at 0.
|