Потому что продвигающие эфимерную концепцию десктопа негодяи включили в неё активное препятствование его самостоятельной настройке конечным пользователем установкой от технических(отсутствие интерфейсов и даташитов в свободном доступе) до юридических(прямой запрет в лицензии) ограничений.
А что будет, если ты подключишь девайс с таким же адресом, как девайс на мат.плате? Ну и там вроде ещё какие-то ограничения были. I2C - не USB, с которым может справится даже человек с одним полушарием.
Потому что это всего лишь теоретическая шина, а не электрическая реализация.
Электрические реализации всего что выведено - стандартизированы, и втыкая туда устройство, ты знаешь и уверен, что на 9-м пине материнской платы +5В, и 9-й пин твоего девайса - тоже VCC. У i2c нет разъема. А тем кому нужно управление - могут использовать rs232, db25 или как его там, или накрайняк usb-i2c
1. Предлагаешь занимать PCIe слот ради того, чтобы подцепить десяток термометров?
Я еще ничего не предлагал. Я ответил на вопрос, почему не выводят. Выводят. Возможно, есть даже материнские платы, где SMBus на отдельный header выведена. У меня таких не наблюдалось, но все возможно.
Потому что это дело намного хуже стандартизировано чем остальные привычные «потребительские» интерфейсы. А кому действительно надо - тот может всегда купить себе любую копеечную ардуину и получить хоть i2c, хоть spi, хоть простой gpio. И работать с ним более менее безопасно через USB интерфейс (или usb->uart конвертер)
Гребенка на материнской плате для подключения кнопки включения, ресета и индикаторов hdd и прочего - тоже не стандартизирована. Но это никому не мешает
Шина SMBus (подмножество I2C) выведена в PCIe, выведена на DIMM (интерфейс SPD). Шину не предлагают для общего использования всеми, она системе нужна, поэтому ничего странного, что не выводят отдельно. Но для мониторинга системного блока датчиками ты вполне можешь шиной воспользоваться. Ей же пользуется видеокарта для того, чтобы можно было прочитать температуру GPU через lm-sensors. Можно сделать плату-пустышку в PCIe только с четырьмя контактами (питание и i2с), а можно и проводочки воткнуть; ты можешь сделать плату-пустышку DIMM с четырьмя контактами и даже подпаяться к идентификационной EEPROM модуля памяти. Но это все на свой страх и риск.
И вполне могли бы и одну из шин не задействовать для системных нужд, а вывести на гребенку для пользователя.
А так иногда и случается. Вот в документе выше говорится о том, что такое делают, но я таких плат никогда не встречал. Вдруг у тебя есть?
To connect some of your own devices to the SMBus, you need to find a good place to get four lines: Ground, +5V, SMBus Clock, SMBus Data. Some motherboards offer direct access to the SMBus through 4 regular pins. This was seen on various Asus and Abit boards, and could be found on other brands too. This is by far the easiest way, so look for these pins first.
Гребенка на материнской плате для подключения кнопки включения, ресета и индикаторов hdd и прочего - тоже не стандартизирована. Но это никому не мешает
Неправильным подключением в этой гребенке, ты ничего не спалишь, даже если воткнешь ресет вместо светодиода. Те гребенки где есть силовое питание - стандартизированы ключом (отсутствием пина). Плюс ко всему, i2c может использовать разные уровни, 3.3\5, как прикажешь разграничивать ? Или хернем пятью вольтами на 3.3в микроконтроллер ?
Конечно, реализовать электрический разъем можно. Но зачем? Это же не порт, а шина, при чем весьма специфичная.
Простейший вариант был бы i2c ацп + мультиплексор. Если бы на материнке был бы i2c
АЦП-то тебе на кой? Аналоговые датчики - говно, нуждаются в юстировке зависящей от длины\сечения провода итд.
Самый простой для тебя способ - ардуйня (там и АЦП относительно неплохой) + датчики типа ds18b20 + UART’ом ардуйни в rs232, а на компе уже чо-то типа screen /dev/ttyS0 9600. ЕМНИП на самую нищуковскую Mini, ты можешь повесить десяток градусников. Питалово оттуда же.
какой-то шанс есть конечно, но когда уже всё нагрелось так что дымится на это лучше не расчитывать. А так у CPU, GPU есть встроенные схемы охлаждения, у БП есть схема отключения от перегрузки.
На I2C тоже ничего не спалишь, даже если всё замкнешь. На разъём нужно вывести три сигнала - земля, SDA и SCL. Последние два на хосте подтянуты к питанию через резисторы по 2к, и управляются открытым коллектором (т.е. по сути ключом на землю).
Случайным образом глянул и на Gigabyte. Сразу же запеленговал платы, на которых тоже SMBus выводят на разъемы. Не могу сказать за все платы. Подробнее надо смотреть не на разъемы на плате, а в инструкции, где распиновка всех гребёнок указана. В общем можно говорить, что i2c выводят отдельно, но не всегда.
Ну так можно и тут как-то так сделать. Сделали же гребенку с ключем для подключения USB разъемов.
Ее сделали не для того, а для вывода косичками на переднюю панель весьма жестко стандартизированного электрически разъема через который можно подключить 99.99% имеющейся на планете периферии. Ради полутора калек никто не будет стандартизировать разъем, впаивать его, разводить на плате, и тд.
без проблем это делается. В тех же 3д принтерах, где важна точность температуры в 1-2 градуса на сопле, прекрасно используются аналоговые датчики
Да. Кстати почитай почему именно термисторы.
в PCI, RS-485, CAN, и прочего - вполне прекрасо используются разъемы.
И да и нет. PCI и RS-485 - да, прекрасно, потому что они предназначены для подключения внешних устройств, т.е. периферии, если по-простому, то разъемы там by design. CAN разъема не имеет, если ты за OBD2 - то тут как раз зоопарк разъемов. i2c в свою очередь - это шина, прежде всего предназначенная для внутреннего использования, даже без вывода пинов. Ты ж не удивляешься, почему например DMI на платах не разведен ?)
вообще я хотел бы чтобы lm-sensors их видел. А для этого придется писать еще драйвера если через com порт
Тогда тебе проще будет поискать usb-i2c адаптер, а драйвер тебе так или иначе придется писать, потому что в отличие от стандарта USB, i2c не имеет классов устройств, и тебе надо будет пнуть, что вот эта штука на i2c-0 с адресом 0F - термодатчик, к нему надо обращаться вот-так-то, после чего он вернет пак байтов, где третий байт будет температурой снизу вверх (ты ж помнишь что у тебя термистор, да?). Тут тоже не все так просто.