P.S. для модераторов: действие происходит на линуксе с использованием i2c-tools.
Заранее извиняюсь за столь неприкрытое извращение, но уж очень хочется попробовать.
Думаю, абсолютно любой школьник знает об использовании чистого i2c в VGA, HDMI, DP и DVI интерфейсах. Можно разрезать провод (или подключить пустой коннектор) и подключиться прямо к видяхе своими i2c-датчиками температуры, мини-LCD-дисплеями, GPIO-расширителями или драйвером сервопривода. http://www.paintyourdragon.com/?p=43
Однако, внутри компьютера есть ещё и SMBus, основанный на i2c. К нему подключены PCIe, датчики, DIMMы (как EEPROM с данными о планке, так и датчики температуры). Иногда ряд контроллеров питания (например, батареи ноутбука) и BMC в серверах.
Но можно ли самому сесть на эту шину со своими i2c-девайсами?
Итак:
Делаем (пример использования)
apt-get install i2c-tools
modprobe i2c-dev
modprobe i2c-i801
modprobe eeprom
decode-dimms
i2cdetect -l
и видим:
i2c-13 i2c card0-DP-6 I2C adapter
i2c-14 smbus SMBus I801 adapter at 0500 SMBus adapter
Делаем i2cdetect -y 13 и i2cdetect -y 14 для показа, что на каком адресе висит.
Соответственно, i2cdetect видит smbus и i2c как разные устройства. Далее я стал гуглить и нашел: http://www.scanti.ru/bulleten.php?v=111&p=14 . Вроде как smbus и i2c - это разные вещи (smbus - это, по большому счету, расширение i2c). Однако далее я многократно натыкался на информацию о том, что можно подключить i2c-slave к smbus-master и наоборот (т.е. полная двухсторонняя совместимость).
Соответственно, используя smbus на DIMM или в других местах (в теории даже с PCIe) можно просто подключить любые i2c-устройства, если есть http://www.chipdip.ru/product/pca9306dctr/ . Но так ли это на самом деле?
В тред приглашается ncrmnt.
Перемещено JB из talks