123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- ======================
- Kernel driver w1_therm
- ======================
- Supported chips:
- * Maxim ds18*20 based temperature sensors.
- * Maxim ds1825 based temperature sensors.
- * GXCAS GX20MH01 temperature sensor.
- * Maxim MAX31850 thermoelement interface.
- Author: Evgeniy Polyakov <[email protected]>
- Description
- -----------
- w1_therm provides basic temperature conversion for ds18*20, ds28ea00, GX20MH01
- and MAX31850 devices.
- 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 entry ``w1_slave``. 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
- returns only the temperature in millidegrees Centigrade.
- A bulk read of all devices on the bus could be done writing ``trigger``
- to ``therm_bulk_read`` entry at w1_bus_master level. This will
- send the convert command to all devices on the bus, and if parasite
- powered devices are detected on the bus (and strong pullup is enabled
- 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`` 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).
- A strong pullup will be applied during the conversion if required.
- ``conv_time`` is used to get current conversion time (read), and
- adjust it (write). A temperature conversion time depends on the device type and
- it's current resolution. Default conversion time is set by the driver according
- to the device datasheet. A conversion time for many original device clones
- deviate from datasheet specs. There are three options: 1) manually set the
- correct conversion time by writing a value in milliseconds to ``conv_time``; 2)
- auto measure and set a conversion time by writing ``1`` to
- ``conv_time``; 3) use ``features`` to enable poll for conversion
- completion. Options 2, 3 can't be used in parasite power mode. To get back to
- the default conversion time write ``0`` to ``conv_time``.
- Writing a resolution value (in bits) to ``w1_slave`` will change the
- precision of the sensor for the next readings. Allowed resolutions are defined by
- the sensor. Resolution is reset when the sensor gets power-cycled.
- To store the current resolution in EEPROM, write ``0`` to ``w1_slave``.
- Since the EEPROM has a limited amount of writes (>50k), this command should be
- used wisely.
- Alternatively, resolution can be read or written using the dedicated
- ``resolution`` entry on each device, if supported by the sensor.
- Some non-genuine DS18B20 chips are fixed in 12-bit mode only, so the actual
- resolution is read back from the chip and verified.
- Note: Changing the resolution reverts the conversion time to default.
- The write-only sysfs entry ``eeprom_cmd`` is an alternative for EEPROM operations.
- Write ``save`` to save device RAM to EEPROM. Write ``restore`` to restore EEPROM
- data in device RAM.
- ``ext_power`` entry allows checking the power state of each device. Reads
- ``0`` if the device is parasite powered, ``1`` if the device is 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``. The file will contain a single line with an integer value
- representing the device index in the bus starting at 0.
- ``features`` sysfs entry controls optional driver settings per device.
- Insufficient power in parasite mode, line noise and insufficient conversion
- time may lead to conversion failure. Original DS18B20 and some clones allow for
- detection of invalid conversion. Write bit mask ``1`` to ``features`` to enable
- checking the conversion success. If byte 6 of scratchpad memory is 0xC after
- conversion and temperature reads 85.00 (powerup value) or 127.94 (insufficient
- power), the driver returns a conversion error. Bit mask ``2`` enables poll for
- conversion completion (normal power only) by generating read cycles on the bus
- after conversion starts. In parasite power mode this feature is not available.
- Feature bit masks may be combined (OR). More details in
- Documentation/ABI/testing/sysfs-driver-w1_therm
- GX20MH01 device shares family number 0x28 with DS18*20. The device is generally
- compatible with DS18B20. Added are lowest 2\ :sup:`-5`, 2\ :sup:`-6` temperature
- bits in Config register; R2 bit in Config register enabling 13 and 14 bit
- resolutions. The device is powered up in 14-bit resolution mode. The conversion
- times specified in the datasheet are too low and have to be increased. The
- device supports driver features ``1`` and ``2``.
- MAX31850 device shares family number 0x3B with DS1825. The device is generally
- compatible with DS1825. The higher 4 bits of Config register read all 1,
- indicating 15, but the device is always operating in 14-bit resolution mode.
|