内核驱动 lm90¶
支持的芯片
National Semiconductor LM84
前缀: ‘lm84’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 National Semiconductor 网站上公开获取
National Semiconductor LM90
前缀: ‘lm90’
扫描地址: I2C 0x4c
数据手册: 可在 National Semiconductor 网站上公开获取
National Semiconductor LM89
前缀: ‘lm89’ (无自动检测)
扫描地址: I2C 0x4c 和 0x4d
数据手册: 可在 National Semiconductor 网站上公开获取
National Semiconductor LM99
前缀: ‘lm99’
扫描地址: I2C 0x4c 和 0x4d
数据手册: 可在 National Semiconductor 网站上公开获取
National Semiconductor LM86
前缀: ‘lm86’
扫描地址: I2C 0x4c
数据手册: 可在 National Semiconductor 网站上公开获取
Analog Devices ADM1020
前缀: ‘adm1020’
扫描地址: I2C 0x4c - 0x4e
数据手册: 可在 Analog Devices 网站上公开获取
Analog Devices ADM1021
前缀: ‘adm1021’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Analog Devices 网站上公开获取
Analog Devices ADM1021A/ADM1023
前缀: ‘adm1023’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Analog Devices 网站上公开获取
Analog Devices ADM1032
前缀: ‘adm1032’
扫描地址: I2C 0x4c 和 0x4d
数据手册: 可在 ON Semiconductor 网站上公开获取
Analog Devices ADT7461
前缀: ‘adt7461’
扫描地址: I2C 0x4c 和 0x4d
数据手册: 可在 ON Semiconductor 网站上公开获取
Analog Devices ADT7461A
前缀: ‘adt7461a’
扫描地址: I2C 0x4c 和 0x4d
数据手册: 可在 ON Semiconductor 网站上公开获取
Analog Devices ADT7481
前缀: ‘adt7481’
扫描地址: I2C 0x4b 和 0x4c
数据手册: 可在 ON Semiconductor 网站上公开获取
Analog Devices ADT7482
前缀: ‘adt7482’
扫描地址: I2C 0x4c
数据手册: 可在 ON Semiconductor 网站上公开获取
Analog Devices ADT7483A
前缀: ‘adt7483a’
扫描地址: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e
数据手册: 可在 ON Semiconductor 网站上公开获取
ON Semiconductor NCT1008
前缀: ‘nct1008’
扫描地址: I2C 0x4c 和 0x4d
数据手册: 可在 ON Semiconductor 网站上公开获取
ON Semiconductor NCT210
前缀: ‘adm1021’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 ON Semiconductor 网站上公开获取
ON Semiconductor NCT214
前缀: ‘nct214’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 ON Semiconductor 网站上公开获取
ON Semiconductor NCT218
前缀: ‘nct218’
扫描地址: I2C 0x4c - 0x4d
数据手册: 可在 ON Semiconductor 网站上公开获取
ON Semiconductor NCT72
前缀: ‘nct72’
扫描地址: I2C 0x4c - 0x4d
数据手册: 可在 ON Semiconductor 网站上公开获取
Maxim MAX1617
前缀: ‘max1617’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX1617A
前缀: ‘max1617a’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6642
前缀: ‘max6642’
扫描地址: I2C 0x48-0x4f
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6646
前缀: ‘max6646’
扫描地址: I2C 0x4d
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6647
前缀: ‘max6646’
扫描地址: I2C 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6648
前缀: ‘max6648’
扫描地址: I2C 0x4c
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6649
前缀: ‘max6646’
扫描地址: I2C 0x4c
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6654
前缀: ‘max6654’
扫描地址: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6657
前缀: ‘max6657’
扫描地址: I2C 0x4c
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6658
前缀: ‘max6657’
扫描地址: I2C 0x4c
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6659
前缀: ‘max6659’
扫描地址: I2C 0x4c, 0x4d, 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6680
前缀: ‘max6680’
扫描地址: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6681
前缀: ‘max6680’
扫描地址: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6692
前缀: ‘max6648’
扫描地址: I2C 0x4c
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6695
前缀: ‘max6695’
扫描地址: I2C 0x18
数据手册: 可在 Maxim 网站上公开获取
Maxim MAX6696
前缀: ‘max6695’
扫描地址: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册: 可在 Maxim 网站上公开获取
Winbond/Nuvoton W83L771W/G
前缀: ‘w83l771’
扫描地址: I2C 0x4c
数据手册: 不再可用
Winbond/Nuvoton W83L771AWG/ASG
前缀: ‘w83l771’
扫描地址: I2C 0x4c
数据手册: 不公开提供,可从 Nuvoton 请求
Nuvoton NCT7716
前缀: ‘nct7716’
扫描地址: I2C 0x48, 0x49
数据手册: 不公开提供,可从 Nuvoton 请求
Nuvoton NCT7717
前缀: ‘nct7717’
扫描地址: I2C 0x48
数据手册: 可在 Nuvoton 网站上公开获取
Nuvoton NCT7718
前缀: ‘nct7718’
扫描地址: I2C 0x4c
数据手册: 可在 Nuvoton 网站上公开获取
Philips/NXP SA56004X
前缀: ‘sa56004’
扫描地址: I2C 0x48 到 0x4F
数据手册: 可在 NXP 网站上公开获取
GMT G781
前缀: ‘g781’
扫描地址: I2C 0x4c, 0x4d
数据手册: 无法从 GMT 公开获取
Texas Instruments TMP451
前缀: ‘tmp451’
扫描地址: I2C 0x4c
数据手册: 可在 TI 网站上公开获取
Texas Instruments TMP461
前缀: ‘tmp461’
扫描地址: I2C 0x48 到 0x4F
数据手册: 可在 TI 网站上公开获取
Philips NE1617, NE1617A
前缀: ‘max1617’ (可能被检测为 max1617)
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Philips 网站上公开获取
Philips NE1618
前缀: ‘ne1618’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Philips 网站上公开获取
Genesys Logic GL523SM
前缀: ‘gl523sm’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册
TI THMC10
前缀: ‘thmc10’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 TI 网站上公开获取
Onsemi MC1066
前缀: ‘mc1066’
扫描地址: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册: 可在 Onsemi 网站上公开获取
作者: Jean Delvare <jdelvare@suse.de>
描述¶
LM90 是一款数字温度传感器。它感应自身温度以及最多一个外部二极管的温度。它与许多其他设备兼容,其中许多设备都受到此驱动程序的支持。
此驱动程序支持的芯片系列源自 MAX1617。该芯片以及各种兼容芯片支持具有 8 位精度的本地和远程温度传感器。后来的芯片提供了更高的精度和其他附加功能,例如迟滞和温度偏移寄存器。
请注意,没有简单的方法可以区分 MAX6657、MAX6658 和 MAX6659 变体。只有当芯片位于地址 0x4d 或 0x4e 时,或者如果芯片类型被显式选择为 max6659 时,此驱动程序才支持 MAX6659 的额外功能。MAX6680 和 MAX6681 仅在引脚排列上有所不同,因此它们显然不能(并且不需要)被区分。
该系列的不同芯片组并非完全相同,尽管非常相似。作为参考,以下是一个非详尽的特定功能列表
- LM84
8 位传感器分辨率
- ADM1020, ADM1021, GL523SM, MAX1617, NE1617, NE1617A, THMC10
8 位传感器分辨率
低温限制
- NCT210, NE1618
远程温度传感器的 11 位传感器分辨率
低温限制
- ADM1021A, ADM1023
远程温度传感器的温度偏移寄存器
远程温度传感器的 11 位分辨率
低温限制
- LM90
远程温度传感器的 11 位分辨率
远程温度传感器的温度偏移寄存器
低和临界温度限制
可配置的转换率
0xBF 处的过滤器和警报配置寄存器。
ALERT 由超过临界限制的温度触发。
- LM86 和 LM89
与 LM90 相同
更好的外部通道精度
- LM99
与 LM89 相同
外部温度向下偏移 16 度
- ADM1032
0x22 处的连续警报寄存器。
转换平均。
高达 64 次转换/秒。
ALERT 由开放式远程传感器触发。
SMBus PEC 支持 Write Byte 和 Receive Byte 事务。
- ADT7461, ADT7461A, NCT1008
扩展的温度范围 (破坏兼容性)
远程温度的较低分辨率
SMBus PEC 支持 Write Byte 和 Receive Byte 事务。
10 位温度分辨率
- ADT7481, ADT7482, ADT7483
温度偏移寄存器
SMBus PEC 支持
外部传感器的 10 位温度分辨率
两个远程传感器
可选地址 (ADT7483)
- MAX6642
无临界限制寄存器
转换率不可配置
更好的本地分辨率 (10 位)
10 位外部传感器分辨率
- MAX6646, MAX6647, MAX6649
更好的本地分辨率
扩展范围的无符号外部温度
- MAX6648, MAX6692
更好的本地分辨率
无符号温度
- MAX6654, MAX6690
更好的本地分辨率
可选地址
远程传感器类型选择
扩展温度范围
只有当转换率 <= 1 Hz 时,才能使用扩展分辨率
- MAX6657 和 MAX6658
更好的本地分辨率
远程传感器类型选择
- MAX6659
更好的本地分辨率
可选地址
第二个临界温度限制
远程传感器类型选择
- MAX6680 和 MAX6681
可选地址
远程传感器类型选择
- MAX6695 和 MAX6696
更好的本地分辨率
可选地址 (max6696)
第二个临界温度限制
两个远程传感器
- W83L771W/G
G 变体无铅,其他方面与 W 类似。
0xBF 处的过滤器和警报配置寄存器
移动平均 (取决于转换率)
- W83L771AWG/ASG
W83L771W/G 的后续产品,具有相同的功能。
AWG 和 ASG 变体仅在封装格式上有所不同。
0xE3 处的二极管理想因子配置 (远程传感器)
- NCT7716
8 位传感器分辨率
可选地址
可配置的转换率
- NCT7717
8 位传感器分辨率
可配置的转换率
- NCT7718
远程温度传感器的温度偏移寄存器
远程温度传感器的 11 位分辨率
低温限制
可配置的转换率
- SA56004X
更好的本地分辨率
所有温度值均以摄氏度给出。本地温度的分辨率为 1.0 度,远程温度的分辨率为 0.125 度,MAX6654、MAX6657、MAX6658 和 MAX6659 除外,它们的两种温度的分辨率均为 0.125 度。
每个传感器都有其自己的高和低限制,以及一个临界限制。此外,临界值有一个共同的相对迟滞值。为了使用户空间应用程序更轻松,导出了两个绝对值,每个通道一个,但这些值当然是链接的。只能从用户空间设置本地迟滞,并且相同的增量适用于远程迟滞。
lm90 驱动程序更新值的频率不会超过使用 update_interval 属性配置的频率;更频繁地读取它们不会造成任何危害,但会返回“旧”值。
SMBus 警报支持¶
此驱动程序对 SMBus 警报提供基本支持。当收到警报时,将读取状态寄存器并记录错误的温度通道。
Analog Devices 芯片(ADM1032、ADT7461 和 ADT7461A)和 ON Semiconductor 芯片(NCT1008)没有正确实现 SMBus 警报协议,因此需要格外小心:收到警报时禁用 ALERT 输出,并且仅在警报消失时重新启用。否则,只要警报处于活动状态,芯片就会阻止来自总线上其他芯片的警报。
PEC 支持¶
ADM1032 是该系列中唯一支持 PEC 的芯片。但是,它并非支持所有事务的 PEC,因此必须小心。
当读取寄存器值时,PEC 字节由 ADM1032 芯片计算和发送。但是,在组合事务(SMBus Read Byte)的情况下,ADM1032 仅计算消息后半部分的 CRC 值,而不是整个消息的 CRC 值,因为它认为消息的前半部分属于不同的事务。结果,CRC 值与 SMBus 主设备期望的值不同,并且所有读取均失败。
因此,只有当总线支持 SMBus Send Byte 和 Receive Byte 事务类型时,lm90 驱动程序才会为 ADM1032 启用 PEC。这些事务将用于读取寄存器值,而不是 SMBus Read Byte,并且 PEC 将正常工作。
此外,ADM1032 不支持带 PEC 的 SMBus Send Byte。相反,它会尝试将 PEC 值写入寄存器(因为带 PEC 的 SMBus Send Byte 事务类似于不带 PEC 的 Write Byte 事务),这不是我们想要的。因此,在 lm90 驱动程序中,PEC 在 SMBus Send Byte 事务中被显式禁用。
在正常情况下,字节数据事务上的 PEC 表示带宽使用量显着增加(写入时 +33%,读取时 +25%)。由于需要使用两个 SMBus 事务进行读取,因此该开销跃升至 +50%。更糟糕的是,两个事务通常意味着等待事务完成的时间加倍,从而有效地使寄存器缓存刷新时间加倍。我想可靠性是有代价的,但这次代价太高了。
因此,由于并非每个人都可能喜欢速度下降,因此默认情况下禁用 PEC,并且可以通过 sysfs 启用它。只需将 1 写入“pec”文件,PEC 就会启用。将 0 写入该文件以再次禁用 PEC。