Минимальная тактовая частота и надежность I2C

Существует ли минимальная тактовая частота, указанная I2C? Я знаю, что наиболее широко используемая тактовая частота составляет 100 кГц, и есть «быстрый» режим 400 кГц, поддерживаемый некоторыми устройствами, и еще более быстрый режим, поддерживаемый другими устройствами (я думаю, 1 МГц?). Поскольку сигнал SCK генерируется мастером, я предполагаю, что можно работать на гораздо более низкой скорости, чем любой из них - существует ли на практике нижняя граница? В какой степени ведомые устройства заботятся о тактовой частоте (например, для них характерны короткие тайм-ауты)? Причина, по которой я спрашиваю, заключается в том, что мне интересно, можно ли запустить I2C на более длинном расстоянии (например, 20 футов) для надежного программирования I2C EEPROM в настройке производственного тестера. Я предполагаю, что он не будет надежно работать на таком расстоянии при стандартных скоростях передачи данных.

Режим Hi-Speed ​​позволяет использовать тактовую частоту 3,4 МГц при макс. Емкость шины 100 пФ.

Ответы (3)

Нет, минимальной частоты нет, минимальная тактовая частота равна 0 или DC. См. спецификацию , стр. 48.

Но вам придется обратить внимание на время подъема и спада. Это максимум 1000 нс и 300 нс соответственно. А более длинный кабель с некоторой емкостью будет влиять на фронты независимо от частоты.

Именно эта емкость вместе с подтягивающими сопротивлениями будет определять время нарастания. Время спада не является проблемой, потому что полевой транзистор, который переводит линию в низкий уровень, имеет очень низкое сопротивление, и тогда постоянная времени спада также будет очень низкой. Итак, у нас осталось время нарастания. Чтобы получить время нарастания 1000 нс на кабеле 200 пФ, ваши подтягивающие резисторы не должны быть больше 2,2 кОм. (время нарастания до 90 % конечного значения.)

введите описание изображения здесь

На графике показано максимальное сопротивление подтягивания (в Ом) в зависимости от емкости кабеля (в пФ) для получения фронтов нарастания 1000 нс. Обратите внимание, что устройства I2C не должны потреблять более 3 мА, поэтому при 3,3 В емкость шины не должна превышать примерно 395 пФ, в противном случае сопротивление подтяжки должно быть меньше 1100 Ом и допускать более чем 3 мА. Это зеленоватые пунктирные линии. Для работы с напряжением 5 В допустимая емкость составляет даже 260 пФ для значения подтяжки 1667 Ом (фиолетовые пунктирные линии).

Кто сказал, что I2C-устройство может потреблять максимум 3 мА? Мои устройства I2C имеют VOL = 0,4 В для IOL = 20 мА. Это означает, что он может потреблять гораздо больше тока, поэтому подтягивающие резисторы могут быть меньше. Это приводит к тому, что можно обрабатывать большую емкость. @stevenvh
Примером являются ведомые устройства Arduino. Они могут проседать до 10мА до VOL = 0,4-0,5В. Это означает, что они могут управлять гораздо более загруженными автобусами.
Большинство устройств I2C действительно могут потреблять только 3 мА, но в настоящее время существует гораздо больше устройств с большими возможностями приема. Везучий!

Я запускал I2C на частоте около 100 Гц без проблем. Как сказал @stevenvh, просто беспокойтесь о максимальной скорости и емкости линии.

У меня одношаговый i2c. Это не гарантирует, что каждое устройство, которое вы найдете, будет сделано таким образом, но технически ничто не мешает ему работать «вплоть до постоянного тока».

Вы должны быть в состоянии решить проблемы длины линии с тщательным выбором драйверов и согласованием импеданса.

Другой вариант, предполагающий, что долгосрочная работа является частью установки, а не продукта, может состоять в том, чтобы использовать что-то, что хорошо справляется с расстоянием, такое как RS422 (или, практически говоря, даже RS232), для связи с микроконтроллером, размещенным в разъеме тестового жгута. который затем будет говорить i2c на довольно коротком расстоянии от цели.

Или вы, вероятно, могли бы сделать это без интеллекта, используя небольшую плату, которая соединяла протокол дифференциальной сигнализации с приемниками триггера Шмидта с сигнализацией i2c на цели и обратно.

Ваши прогоны, вероятно, недостаточно длинные, чтобы время распространения сигнала (отсутствие проблем с установлением) потребовало бы особенно медленных тактовых частот, чтобы избежать разворота шины, пока старые данные все еще находятся в полете.

Конечно, вы захотите выполнить повторную проверку данных, которые вы только что запрограммировали.

Просто для сравнения, мониторы IIRC VGA имеют считывание идентификатора i2c (или похожее на i2c), которое, вероятно, все еще работает, если вы добавите 6-футовый удлинительный кабель к стандартному 3- или 4-футовому кабелю.