К однопроводной шине I²C (IIC) можно подключить несколько датчиков TMP117, но их количество ограничено уникальностью I²C-адресов.
1. Адресация TMP117
Даташит TMP117 указывает, что у этого датчика 8 возможных I²C-адресов, которые задаются через вывод ADDR (A0):
ADDR (A0) | I²C Адрес (7-bit) | I²C Адрес (8-bit, запись) |
---|---|---|
Подключен к GND | 0x48 (72) |
0x90 |
Подключен к V+ | 0x49 (73) |
0x92 |
Подключен к SDA | 0x4A (74) |
0x94 |
Подключен к SCL | 0x4B (75) |
0x96 |
Оставлен в воздухе (не подключен) | 0x4C (76) |
0x98 |
(Другие комбинации) | 0x4D –0x4F (77–79) |
0x9A –0x9E |
Таким образом, максимум 8 датчиков TMP117 можно подключить к одной шине I²C, если каждый из них будет иметь уникальный адрес.
2. Практические ограничения
-
Разводка PCB: если датчики расположены близко, можно использовать перемычки или резисторы для настройки ADDR.
-
Паразитная ёмкость: большое количество устройств на одной линии может ухудшить сигнал (рекомендуется использовать буферы, если датчиков много).
-
Драйверы и библиотеки: убедитесь, что ваша программа корректно обрабатывает все адреса.
Вывод
Максимум 8 датчиков TMP117 можно подключить к одной шине I²C, если правильно настроить вывод ADDR для каждого.
Вроде как 7 бит, то это 128 вариантов, но нет, в протоколе I²C используется 7-битная адресация, поэтому максимальное количество уникальных адресов — 128 (от 0x00 до 0x7F). Однако не все из них доступны для датчиков, так как часть зарезервирована под системные команды.
Почему у TMP117 только 8 адресов?
Хотя в I²C теоретически может быть до 127 устройств (7 бит), конкретно TMP117 использует только 8 вариантов адреса, потому что:
-
Адрес датчика фиксируется первыми 4 битами (заводская настройка Texas Instruments).
-
Оставшиеся 3 бита задаются через вывод ADDR (A0).
-
Таким образом, 2^3 = 8 комбинаций.
Разбор адресов TMP117
В даташите указаны 8 возможных адресов (от 0x48
до 0x4F
):
Состояние вывода ADDR (A0) | 7-битный адрес (hex) | 8-битный (для записи) |
---|---|---|
Подключен к GND | 0x48 |
0x90 (запись) |
Подключен к V+ | 0x49 |
0x92 |
Подключен к SDA | 0x4A |
0x94 |
Подключен к SCL | 0x4B |
0x96 |
Не подключен (NC) | 0x4C |
0x98 |
(Другие комбинации*) | 0x4D , 0x4E , 0x4F |
0x9A , 0x9C , 0x9E |
*Некоторые комбинации могут быть недоступны в зависимости от подключения.
Можно ли подключить больше 8 TMP117?
Нет, потому что:
-
Аппаратное ограничение: TMP117 поддерживает только 8 адресов.
-
Логическое ограничение I²C: даже если бы датчик поддерживал больше адресов, на практике >10 устройств на шине могут вызвать проблемы с нагрузкой (ёмкость, сопротивление).
Как подключить больше датчиков?
Если нужно больше 8 датчиков:
-
Использовать несколько шин I²C (например, на разных GPIO у микроконтроллера).
-
Применить мультиплексор I²C (PCA9548, TCA9548A) – позволяет выбрать одну из нескольких шин.
Вывод
-
К одной линии I²C можно подключить до 8 TMP117 (если у каждого уникальный адрес).
-
8-битный адрес в I²C – это миф: реально используется 7 бит (+1 бит на чтение/запись).
-
Больше 8 – только с мультиплексором или отдельными шинами.
ВАЖНО!!! Даже если подключать датчики через мукльтиплексор, то придется организовывать 8 линий на нем, то есть он будет получать условно один входящий сигнал, а дальше работать с 8 реальными линями от него.