Использование 74LVC1T45 в корпусе с открытым стоком

Я хочу сделать один «универсальный» или «многопротокольный» блок ввода-вывода и в настоящее время думаю об использовании транслятора уровня 74LVC1T45 для связи между двумя системами с разными уровнями напряжения.

Я хотел бы иметь возможность поддерживать UART, I2C и любой другой пользовательский последовательный порт, который работает аналогичным образом. Таким образом, сторона B может быть двухтактной, с открытым сливом, с подтяжками и без них...

Трудная часть для понимания заключается в том, как приспособить определенный вариант использования с открытым стоком, когда система interface-d (B) может НЕ иметь своего подтягивающего устройства... Что я должен добавить/ учитывать при создании схемы...

Как я себе это представляю, для такого варианта использования с открытым стоком:

от Б до А:

На стороне (приемнике) должны быть включены подтяжки. Сторона B не имеет подтягиваний ( по какой-то причине ).

Когда B передает НИЗКИЙ уровень, сторона А также получает низкий уровень. Когда B хочет передать High - это означает, что B является плавающим (даже несмотря на то, что в настоящее время несуществующее подтягивание должно в противном случае подтягивать линию к высокому уровню), 74LVC не имеет возможности подтягивать линию A к высокому уровню? По сути, когда плавающий B не превышает пороговое значение VCCI × 0,65 (то есть для 1,8 В Vih> 1,17 В), я не могу предположить, что, когда B является плавающим, A может перейти в состояние High ?

1) Действительно ли в этом случае порт B изолирован от порта A? и мне нужно добавить свои собственные подтягивания для стороны B? (насколько я понимаю, из направления A в B и варианта использования с открытым стоком я мог бы обойтись без подтягивания на стороне B, поскольку, когда A высокий, B также подтягивается вверх).

или как я мог понять это лучше? (Я нашел только модель(и) IBIS для этой части, но понятия не имею, как ее использовать).

Схема по запросу:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

2) Ага, также вспомнил: в случае двунаправленного последовательного порта - в этом случае I2C, в техническом описании упоминается, что «разработчик должен иметь в виду, что шина не будет конфликтовать при переключении DIR». Значит ли это, что для того, чтобы изменить DIR, я должен сначала удалить либо VCCA, либо VCCB (таким образом, «отключить» устройство), изменить DIR, снова включить VCCa или VCCB, и только затем начать отправку/получение?

Предположения:

  • Основной MCU — 1,8 ВccA, а ожидаемая максимальная линия интерфейса — 5 ВccB.

  • Ожидаемая нагрузка на выходную линию B при попытке тянуть High может быть не более 1k. (Я читал, что 74LVC рассчитан на нагрузку 2k — этого мне вполне достаточно).

  • Если Output используется как передатчик с открытым стоком, передатчик (B) может не иметь подтягивающих свойств.

Пожалуйста, создайте схему для конкретной цепи, о которой вы спрашиваете.
@КЛ. добавил схему - встроенная не была идеальной, поэтому некоторые из «блочных» объектов отсутствуют или немного расположены, но на левом MCU GPIO также должно быть показано внутреннее подтягивание вверх / вниз.

Ответы (1)

Когда сигнал с открытым стоком неактивен без подтягивающего резистора, вход B является плавающим. Это недопустимое состояние; входной сигнал может восприниматься как низкий, высокий или колебательный, и вы можете получить сквозные токи (см. FAQ TI ).

Кроме того, I²C является двунаправленной шиной, и бывают случаи, когда невозможно определить направление (когда не активны ни один или несколько драйверов). Таким образом, невозможно использовать переключатель уровня с управлением по направлению, такой как 74LVC1T45 для I²C; для этого требуется пассивный переключатель, такой как LSF0101 (или обычный MOSFET).

Если вы хотите иметь возможность переключаться между UART и I²C, вам нужны переключатели уровней обоих типов и дополнительные переключатели для их надлежащего подключения.