I2C: устройства 3,3 В и 5 В без смещения уровня на шине 3,3 В?

12

действительно ли мне нужен переключатель уровня, если я использую устройства с питанием 5 В на шине I2C с подтягиванием до 3,3 В? В моем понимании, устройства будут только тянуть линии (SDA, SCL) на низком уровне (на землю) и никогда не будут подавать свое напряжение питания на шину. Поэтому я не вижу причины для сдвига уровня, если все устройства обнаруживают напряжение от подтягиваний (3,3 В) как логически высокое. Это должно быть в случае устройств, использующих 5 В в качестве источника питания.

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

Jannis
источник
2
Итак, подведем итог: - При использовании устройств с напряжением 5 В в качестве Vdd на шине I2C с подтягиванием до 3,3 В ни один чип не подвергается опасности. Он может работать или не работать, в зависимости от допусков, конструкции внутреннего чипа,
Яннис
2
Правильно - нет опасности повреждения, просто нет гарантии правильной работы.
Адам Лоуренс

Ответы:

15

Согласно версии 4 спецификацииI2C ,

«Из-за разнообразия различных технологических устройств (CMOS, NMOS, биполярные), которые могут быть подключены к шине I2C, уровни логических« 0 »(НИЗКИЙ) и« 1 »(ВЫСОКИЙ) не являются фиксированными и зависят от соответствующий уровень VDD. Входные опорные уровни установлены как 30% и 70% от VDD; VIL равен 0,3VDD, а VIH равен 0,7VDD. См. диаграмму синхронизации на рисунке 38. Некоторые входные уровни устаревшего устройства были зафиксированы при VIL = 1,5 В и VIH = 3,0 В, но все новые устройства требуют этой спецификации 30% / 70%. См. Электрические характеристики в разделе 6 ". (страница 9)

Более подробно в спецификации вы увидите, что это является минимальным логическим высоким напряжением:0.7×VDD

выдержка из спецификации NXP I2C ред.  4

Для вашей системы 5V:

0.7×5V=3.5V

0.3×5V=1.5V

На мой взгляд, напряжение 3,3 В выглядит незначительным, особенно если любое из ваших 5-вольтовых устройств использует «новый» стандарт для логики ВЫСОКИЙ.0.7×VDD

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

Адам Лоуренс
источник
Спасибо за уборку стевенвх. Я торопился вчера.
Адам Лоуренс
11

Неправильный ответ Cees, в частности, «всегда» и «любой». Для ввода / вывода микроконтроллера может потребоваться минимум 0,6 Vdd для высокого уровня, для других - минимум 0,7 Vdd, и, как Madmanguruman указывает, что это стандарт для I2C. 0,7 Vdd - это 3,5 В при напряжении 5 В, поэтому 3,3 В уже слишком мало.

Но это еще хуже. Регуляторы напряжения часто имеют допуск 5% на их номинальное выходное напряжение, поэтому в худшем случае 5 В может составлять 5,25 В, а затем 0,7 Вдд становится 3,675 В. Минимальный вход для высокого уровня. Если 3,3 В имеет отрицательный допуск 5%, тогда 3,3 В становится 3,135 В. Таким образом, с учетом допусков входной сигнал может быть на половину вольта слишком низким или 15%.

Так,

Поэтому я не вижу причины для сдвига уровня, если все устройства обнаруживают напряжение от подтягиваний (3,3 В) как логически высокое. Это должно быть в случае устройств, использующих 5 В в качестве источника питания.

это несвоевременное заключение. Всегда проверяйте таблицы данных и делайте расчет.

stevenvh
источник
-1

Я чувствую, что другие ответы на самом деле не отвечали на вопрос Янниса. Он спросил об использовании 5В устройств на шине 3,3В (предположительно 3,3В MCU). Я согласен, что с подтягиванием, связанным с 3,3 В, будет все в порядке, например, безопасным для ведущего устройства, поскольку выводы SDA / SCL будут только опускаться, как он упомянул. Имейте в виду, что ведомые устройства и ведущий должны будут иметь общую точку соприкосновения (эквипотенциалы Vss-контактов), чтобы защитить MCU от перенапряжения, но, вероятно, это все равно будет иметь место. Так что метод Янниса должен работать без сдвига уровня.

DavidW_10MI
источник
2
Добро пожаловать !! Я заметил, что вы новый участник, поэтому вы, возможно, не поняли, что предоставляете ответ на вопрос, которому более шести лет. Система постоянно поднимает старые вопросы, так что они пересматриваются, вы должны помнить об этом.
Эдгар Браун