-
Notifications
You must be signed in to change notification settings - Fork 1
UEXT Level Shifted I2C not working #5
Description
I've been unable to get I2C working via the built-in level shifters.
When routing the I2C to pins without the level-shifters everything works (verified on HW with a logic analyzer).
However routing and measuring them via the dedicated UEXT_{SCL,SDA} pins (pictured) fails and results in completely mangled signals.
I'm creating the open-drain I2C signals via inferred TOBUFs and IOBUFs.
I've tried enabling PULLUPs in the ccf and external pullups (via an Analog Discovery).
On other UEXT_ pins I haven't been able to get any output (with or without pullups).
I'm using a Rev A board.
The TXB0108PWR datasheet Section 7.3.5 states, that
If pullup or pulldown resistors are connected externally to the data I/Os, their values must be kept higher than 50 kΩ to ensure that they do not contend with the output drivers of the TXB0108. For the same reason, the TXB0108 should not be used in applications such as I2C or 1-Wire where an open-drain driver is connected on the bidirectional data I/O. For these applications, use a device from the TI TXS01xx series of level translators.
The resistors R26 and R27 are only 2.2kΩ.
I'm not sure if I'm doing something wrong or if the hardware for I2C is wrong.
Has anyone gotten I2C working at the UEXT port?
I'm using this I2C Master Core by Scott Larson with minor fixes, such that it compiles with GHDL (namely replacing case construct in line 88 with an if/elsif/else tree).