内核驱动 w1_ds28e17

支持的芯片

  • Maxim DS28E17 1-Wire 转 I2C 主机桥

支持的系列代码

W1_FAMILY_DS28E17

0x19

作者:Jan Kandziora <jjj@gmx.de>

描述

DS28E17 是一种 One-Wire 从设备,作为 I2C 总线主设备运行。

该驱动程序为检测到的任何 DS28E17 设备创建一个新的 I2C 总线。I2C 总线会随着 DS28E17 设备的出现和消失而出现和消失。连接到 DS28E17 的 I2C 从设备可以被内核或用户空间工具访问,就好像它们连接到“原生”I2C 总线主设备一样。

可以使用如下 udev 规则

SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{name}=="w1-19-*", \
        SYMLINK+="i2c-$attr{name}"

根据 DS28E17 芯片的唯一 ID 创建稳定的 /dev/i2c- 条目。

驱动参数为

speed

这设置了 DS28E17 连接后立即配置的默认 I2C 速度。DS28E17 的上电默认值为 400kBaud,但芯片可能在不断电的情况下在 One-Wire 总线上出现和消失,一旦“w1_ds28e17”驱动程序检测到 One-Wire 总线上有新连接或重新连接的 DS28E17 设备,它将重新应用此设置。

有效值为 100、400、900 [kBaud]。任何其他值表示在检测时保留当前 DS28E17 设置不变。默认值为 100。

stretch

这设置了新连接的 DS28E17 设备使用的默认 stretch 值。它是用于计算 I2C 传输忙等待时间的乘数。这是为了解决 I2C 从设备大量使用 I2C 时钟延长功能,导致所需的超时时间无法正确预先计算的问题。由于 w1_ds28e17 驱动程序在预计算的等待时间后循环检查 DS28E17 的忙碌标志,因此几乎不需要调整此设置。

保持为 1,除非您在内核日志中看到 ETIMEDOUT 错误和“w1_slave_driver 19-00000002dbd8: busy timeout”信息。

有效值为 1 到 9。默认值为 1。

驱动程序为每个设备创建 sysfs 文件 /sys/bus/w1/devices/19-<id>/speed 和 /sys/bus/w1/devices/19-<id>/stretch,其中预加载了驱动参数中的默认设置。这些文件可以随时更改。此外,还会为 I2C 总线主设备的 sysfs 结构创建一个目录 /sys/bus/w1/devices/19-<id>/i2c-<nnn>。

更多信息请参见:https://github.com/ianka/w1_ds28e17