We have purchased PCA9306 for i2c level shifting, and also used basic mosfet level shifting. In our application it does not work, and we don't understand why. I wonder if you can guide us a bit, into understand why PCA9306 is re-acting this way, and if there is possibly a newer/better chip that you would recommend.
The MCU is 3.3v, and the i2c EEPROM needs to work with 5v. We are trying to use the level shifter to convert from 3.3v on MCU side to 5v on the EEPROM side. Our cables are about 3 meters, and their line capacitance are about 100pF. The MCU is atsam3x8e. We cannot change the EEPROM nor the MCU, but we are open otherwise.
1. We need to be able to use i2c for this system. Both MCU, and EEPROM side boards can be modified at this point. However, the EEPROM side should be kept as cheap as possible as it is a consumable.
2. In a secondary situation separate from the first one, we need to be able to make this work with legacy boards on the EEPROM side. They do not have any pull-up resistor on that side, while there is a 3m cable.
What works: When we use a diode-based design, which basically works at 3.3v on one side, and about 4v on the other side, we can make it work. I do not understand why a reasonably standard level shifter, though, doesn't work properly. We have also tried different pull-up values in a range of 1k-10k, and for the sake of testing, we are trying speeds as low as 10kHz, so that a fast pull-up is not required, however, our minimum requirements after we fix this problem would be the standard 100kHz speed.




