核心驅動 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