Я хочу сделать один «универсальный» или «многопротокольный» блок ввода-вывода и в настоящее время думаю об использовании транслятора уровня 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) может не иметь подтягивающих свойств.
Когда сигнал с открытым стоком неактивен без подтягивающего резистора, вход B является плавающим. Это недопустимое состояние; входной сигнал может восприниматься как низкий, высокий или колебательный, и вы можете получить сквозные токи (см. FAQ TI ).
Кроме того, I²C является двунаправленной шиной, и бывают случаи, когда невозможно определить направление (когда не активны ни один или несколько драйверов). Таким образом, невозможно использовать переключатель уровня с управлением по направлению, такой как 74LVC1T45 для I²C; для этого требуется пассивный переключатель, такой как LSF0101 (или обычный MOSFET).
Если вы хотите иметь возможность переключаться между UART и I²C, вам нужны переключатели уровней обоих типов и дополнительные переключатели для их надлежащего подключения.
кл.
криптон