I want to do one 'universal' or 'multiprotocol'-capable IO block and currently thinking of using 74LVC1T45 level translator to do the communication between two different voltage leveled systems.
I would want to be able to support UART, I2C and any other custom serial that works in a similar manner. So the B side can be push-pull, open drain, with and without pull-ups/-downs...
The hard part to grasp is how to accommodate a certain open-drain use-case where the interface-d system (B) might NOT have their pull-up mounted... What should I add/consider when doing the circuit...
How I imagine it, is that for such open-drain use case:
B to A:
A (receiver) side has to have pull-up(s) enabled. The B side doesn't have a pull-up (for whatever reason).
When B transmits LOW, the A side is also pulled low. When B wants to transmit High - meaning that B is a float (even though the currently non-existent-pullup should otherwise pull the line high), the 74LVC has no way to pull the A line high ? Basically, when floating B doesn't go over a threshold of VCCI× 0.65 (so for 1.8V Vih>1.17V), I cannot assume that when B is a float, the A can go to High ?
1) Does, in that case, the B really is isolated from port A ? and I need to add my own pull-up for the B side ? (as I understand, from A to B direction and open-drain use-case I could get away with the no pull-up on the B side, as when A is high, the B is also pulled high).
or how could I understand it better ? (I have only found a IBIS model(s) for that part, but no idea how to use that).
Circuit as requested:
simulate this circuit – Schematic created using CircuitLab
2) Aha also, remembered: In case of bidirectional serial - in that case I2C, the datasheet mentioned that 'the designer must bear in mind that the bus won't get contention when DIR is flipped". So does this mean that in order to change the DIR, I must first remove either VCCA or VCCB (thus 'disable' the device), change the DIR, enable VCCa or VCCB again, and only then start sending/receiving ?
Assumptions are:
Main MCU is @1.8VccA and the expected maximum interface line is @5VccB
The expected load on the output line B, when trying to pull High, can be max 1k. (I've read the 74LVC to be specced with 2k load - that's actually good enough for me).
With Output as an open-drain transmitter, the transmitter (B) might not have their pull-up implemented.