Uso de 74LVC1T45 en caja de drenaje abierto

Quiero hacer un bloque de E / S con capacidad 'universal' o 'multiprotocolo' y actualmente estoy pensando en usar el traductor de nivel 74LVC1T45 para hacer la comunicación entre dos sistemas de nivel de voltaje diferentes.

Me gustaría poder admitir UART, I2C y cualquier otra serie personalizada que funcione de manera similar. Entonces, el lado B puede ser push-pull, drenaje abierto, con y sin pull-ups/-downs...

La parte difícil de entender es cómo acomodar un cierto caso de uso de drenaje abierto donde el sistema interface-d (B) podría NO tener su pull-up montado... ¿Qué debo agregar/considerar al hacer el circuito ...

Cómo lo imagino, es que para tal caso de uso de drenaje abierto:

B a A:

Un lado (receptor) debe tener activados los pull-up. El lado B no tiene pull-up ( por la razón que sea ).

Cuando B transmite BAJO, el lado A también baja. Cuando B quiere transmitir High, lo que significa que B es un flotador (aunque el pullup actualmente inexistente debería elevar la línea), ¿ el 74LVC no tiene forma de elevar la línea A? Básicamente, cuando B flotante no supera el umbral de VCCI × 0,65 (por lo tanto, para 1,8 V Vih> 1,17 V), no puedo suponer que cuando B es flotante, A puede ir a High.

1) ¿En ese caso, el B realmente está aislado del puerto A? y necesito agregar mi propio pull-up para el lado B? (según tengo entendido, de la dirección A a la B y el caso de uso de drenaje abierto, podría salirme con la mía sin tirar hacia arriba en el lado B, ya que cuando A está alto, el B también está alto).

o ¿cómo podría entenderlo mejor? (Solo he encontrado un modelo IBIS para esa parte, pero no tengo idea de cómo usarlo).

Circuito según lo solicitado:

esquemático

simular este circuito : esquema creado con CircuitLab

2) Aha también, recordó: en el caso de la serie bidireccional , en ese caso I2C, la hoja de datos menciona que "el diseñador debe tener en cuenta que el bus no tendrá contención cuando se invierte DIR". Entonces, ¿esto significa que en orden para cambiar el DIR, primero debo eliminar VCCA o VCCB (por lo tanto, 'deshabilitar' el dispositivo), cambiar el DIR, habilitar VCCa o VCCB nuevamente, y solo luego comenzar a enviar/recibir?

Las suposiciones son:

  • MCU principal es @1.8VccA y la línea de interfaz máxima esperada es @5VccB

  • La carga esperada en la línea de salida B, cuando se intenta tirar de Alto, puede ser de un máximo de 1k. (He leído que el 74LVC debe especificarse con una carga de 2k; en realidad, eso es lo suficientemente bueno para mí).

  • Con Output como un transmisor de drenaje abierto, es posible que el transmisor (B) no tenga implementado su pull-up.

Cree un esquema para el circuito específico sobre el que está preguntando.
@CL. agregó el esquema: el integrado no era perfecto, por lo que faltan algunos de los objetos de 'bloque' o están un poco dispuestos, pero en el MCU GPIO de la izquierda también debería mostrarse un pull-up /-down interno.

Respuestas (1)

Cuando una señal de drenaje abierto está inactiva sin una resistencia pull-up, entonces la entrada B está flotando. Este es un estado inválido; la entrada puede leerse como baja, alta u oscilante, y es posible que obtenga corrientes de disparo (consulte las Preguntas frecuentes de TI ).

Además, I²C es un bus bidireccional, y hay momentos en los que no es posible determinar una dirección (cuando no hay o hay varios controladores activos). Por lo tanto, no es posible utilizar un cambiador de nivel controlado por dirección como el 74LVC1T45 para I²C; esto requiere un interruptor pasivo como el LSF0101 (o un MOSFET simple).

Si desea poder cambiar entre UART e I²C, necesita ambos tipos de cambiadores de nivel e interruptores adicionales para conectarlos adecuadamente.