Hello,
Please have patience, this could take some time to explain...
I'm working on a project that requires bidirectional level translation from 3.3v to 5v.
The i2c is hosted by an Arcom VIPER SBC. This provides 1k pull-ups to
3.3v on both SCL and SDA.I've got hold of level translator board, containing an ST2378E which is used to bridge between 3.3 and 5v. This board was designed by a local electronics company (I realise that without the circuit diagram for the board and a detailed list of components, answering questions about it could be a little difficult. However, if someone wants to have a look at it if they think they know what the problem might be, then email me and I'll send you the info).
The board also contains an ADT7461 temperature sensor which is attached to the 3.3v bus.
I can access the ADT7461 without any problems at all, for both reading and writing.
Problems occur when accessing a 5v device - everything looks great if I access a device for writing only, and send only EVEN values to that device.
If I send ODD values by either reading the device or by sending ODD data, I start to have problems. The problems are apparent for two different 5v devices from different manufacturers.
This appears to be due to receiving no ACK at the host controller - it seems that the ST2378E is having trouble translating a pull-down to zero on the 5v side, to a pull-down to zero on the 3.3v side.
In fact, the waveform for the pull-down on the 5v side (it drops to about 0.6v) appears to mirror the pull-down on the 3.3v side (it drops to only around 2.7v).
The problem occurs with / without 10k pull-up resistors on the 5v side; also there are no further pull-up resistors on the 3.3v side.
So I'm looking at replacing the ST2378E with a PCA9517...
My question is, has anybody ever experienced anything like this before, and is the PCA9517 more suited to the job of translating i2c than the ST2378E?
Thanks
ST2378E
ADT7461
PCA9517