Skip to content

UEXT Level Shifted I2C not working #5

@playduck

Description

@playduck

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.

Schematic screenshot of the UEXT connector and level shifters

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions