i2c 3.3v to 5v level translation.

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

formatting link

ADT7461

formatting link

PCA9517

formatting link

Reply to
amnw14545
Loading thread data ...

Didn't they publish an I2C level translator in Elektor (european electronics magazine) some time ago?

--DF

Reply to
Deefoo

The artticle is here:

formatting link

success Richard

Reply to
RickB

Not a very answer perhaps, but somewhere on the Philips semiconductor pages IIRC, in relation with I2C, a super-simple *single FET* solution is offered to do *bidirectional* 3.3 - 5V translation. I remember using it in several designs with total succes.

--
 - René
Reply to
René

Something like the one in figure 3 on this page?

formatting link

--DF

Reply to
Deefoo

See Philips AN97055 Bi-directional level shifter for I²C-bus and other systems.

formatting link

Gerhard van den Berg

Reply to
Gerhard

Before selecting a Philips I2C chip, be sure you can get one, and that you use the package you can actually get. Sadly, the majority of them appear to be unobtanium.

It is worth considering if a bus buffer is actually needed. If you have true I2C chips on 5V (eg PCF8574) then the input levels are schmitt trigger cmos levels. You will need to shift the 3V3 level up to

5V.

If however you are using SMBUS chips (eg ADT7461, Silabs 8051), then the input thresholds are basically TTL absolute voltages. You will not need to level shift at all.

A new bus buffer/level shifter chip is IES501 see

formatting link

------------------------------------

formatting link

Reply to
crun

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.