Electronic – I2C Overshoot with Teensy 4.1 and TCA9406 Level Shifter

i2cteensy

I'm trying to communicate between several MCUs with I2C using a Teensy as the master and a TCA9406DCTR as a level shifter. I'm currently testing the I2C signals from the Teensy without any other MCUs connected.

I seem to be getting quite a lot of overshoot on both the clock and signal lines on the Teensy, over 500mV which concerns me that it may damage it and comms is unstable.
3.3V I2C Clock

The 5V side of the TCA9406DCTR is even worse, about 1.8V overshoot and -1V undershoot.
5V I2C Clock

My current thinking is that I probably need to revise my PCB layout a bit and make sure the traces between the Teensy and the TCA9406DCTR are as short as possible although they aren't that long (approx. 120mm). Possibly I need to find a better alternative to the TCA9406DCTR.

What can I do to reduce the overshoot and make a more stable I2C signal?

EDIT:

The issue is there with no other MCUs connected.

Here is the schematic in question:

Teensy I2C

The layout of the PCB in that area:

Teensy PCB

I2C Clock signal directly from a stand-alone Teensy as measured using the same method as before just to confirm that the scope ground should be adequate (I'm just using the spring clip on the probe directly to ground on the Teensy board):

I2C Teensy signal

Best Answer

The level translator chip might be more complex than what you would expect from a simple I2C level translator. It has internal push stage for rise time acceleration and can work up to 2 Mbps opendrain signals and 24 Mbps pushpull signals. So if you have no load connected, also the rising edge is accelerated to look like square wave when there is no load. The chip also has internal 10k pull-ups to respective supply which is very light load.

So with incorrect probing techniques and incorrectly compensated probes, the insides of the level translator chip explains the overshooting and undershooting that you see on the scope. You did use the ground spring, also make sure the probes are at 10x setting, and that the probe compensation is properly adjusted.

I also recommend to switch to more normal level translator chip than TCA9406.

Definitely put separate I2C pull-up resistors, as you can just leave them out if you don't need them.