Существует ли минимальная тактовая частота, указанная I2C? Я знаю, что наиболее широко используемая тактовая частота составляет 100 кГц, и некоторые устройства поддерживают «быстрый» режим 400 кГц, а другие устройства поддерживают более быстрый, но все же режим (я думаю, 1 МГц?). Так как сигнал SCK генерируется мастером, я предполагаю, что можно работать на гораздо более медленной скорости, чем любой из них - есть ли на практике нижняя граница? В какой степени подчиненные устройства заботятся о тактовой частоте (например, обычно они имеют короткие тайм-ауты)? Причина, по которой я спрашиваю, заключается в том, что мне интересно, может ли I2C работать на более длинном расстоянии (например, 20 футов), чтобы надежно программировать EEPROM I2C в настройках тестера. Я предполагаю, что это не будет надежно работать на этом расстоянии при стандартных скоростях передачи данных.
источник
Ответы:
Нет, минимальная частота отсутствует, минимальная тактовая частота равна 0 или постоянному току. См. Спецификацию , стр. 48.
Но вам придется обратить внимание на времена взлета и падения. Это 1000 нс и 300 нс максимум, соответственно. И более длинный кабель с некоторой емкостью будет влиять на края, независимо от частоты.
Именно эта емкость вместе с подтягивающими сопротивлениями будет определять время нарастания. Время спада не является проблемой, потому что полевой транзистор, который тянет линию вниз, имеет очень низкое сопротивление, и тогда постоянная времени спада также будет очень низкой. Итак, у нас осталось время нарастания. Чтобы выдержать время нарастания 1000 нс на кабеле 200 пФ, нагрузочные резисторы не должны превышать 2,2 кОм. (время нарастания до 90% от конечного значения.)
График показывает максимальное сопротивление подтягиванию (в Ом) в зависимости от емкости кабеля (в пФ), чтобы получить нарастающие фронты 1000 нс. Обратите внимание, что устройства I2C не должны поглощать более 3 мА, поэтому при 3,3 В емкость шины не должна превышать примерно 395 пФ, в противном случае сопротивление подтягиванию должно быть меньше 1100 Ом, а также должно быть больше чем 3 мА. Это зеленоватые пунктирные линии. Для работы 5 В допустимая емкость составляет даже 260 пФ, для значения подтягивания 1667 Ом (фиолетовые пунктирные линии).
источник
Я запустил I2C на частоте 100 Гц без проблем. Как сказал @stevenvh, просто беспокойтесь о максимальной скорости и емкости линии.
источник
Вы должны быть в состоянии решить проблемы с длиной линии с помощью тщательного выбора драйверов и согласования импедансов.
Другой вариант, предполагая, что длительный период является частью настройки, а не продукта, может заключаться в использовании чего-то, что хорошо справляется с расстоянием, такого как RS422 (или, фактически, даже RS232), для связи с микроконтроллером, размещенным в разъеме тестового жгута, который затем говорил бы i2c на довольно коротком расстоянии до цели.
Или вы могли бы сделать это, вероятно, без интеллекта, используя небольшую плату, которая соединяла протокол дифференциальной сигнализации с триггерными приемниками Шмидта от и до сигнализации i2c на цели.
Вероятно, ваши прогоны недостаточно длинные, чтобы время распространения сигнала (при отсутствии проблем с установлением) потребовало бы особенно медленных тактовых частот, чтобы избежать переворачивания шины, пока старые данные еще находятся в полете.
Конечно, вы захотите выполнить проверку с обратной записью данных, которые вы только что запрограммировали.
Для сравнения, VRC-мониторы IIRC имеют i2c (или i2c-подобный) идентификатор ID, который, вероятно, все еще работает, если вы добавите удлинительный кабель длиной 6 футов к стандартному кабелю длиной 3 или 4 фута.
источник