DDR4 and DDR5 parameter table reader

Still trying to understand why this is not working. I have an adafruit breakout board that uses the same circuit, and it works fine.

From the app note describing this technique, as well as sparkfun and adafruit schematic, everything looks fine. Drain pin is to the higher voltage side, source is to the lower voltage side. Gate at low voltage. (Note that our ddr5 schematic is 5v left, 3.3v right, while the app note is opposite).

Test 1

Rev 0 used 2n7002 fets and 2K pull-up resistors. The pin wasn’t pulled far enough to ground when 0, so I2C didn’t work. I fixed this by replacing the 3.3v side 2K resistors with 10K, removing the 5v 2K resistors and using the onboard 10K pull-up instead. DDR5 SPD chip worked fine at 400khz after mods.

Test 2

Rev 1 used Diodes INC brand BSS138 (same part number as SF, adafruit, etc) with 10K resistors on high and low sides.

Board 1: Just powered with no DIMM and I2C unconnected. SDA sit at 3.9V, SCL 4.3V. Pulled low, SDA is 0.4V and SCL is 0.9V. Some of this is due to voltage divider formed by the Bus Pirate series protection resistors, but that doesn’t account for such high (and different) values.

Board 2: Powered with no connection: SDA 4.9V, SCL 4.6V. Pulled to ground both read 0.3V. 4.9/0.3V is similar to the adafruit soil moisture sensor which has the same circuit. I can work with the DDR5 udimm if the I2C speed is <100kHz, so much slower than rev0.

Something is wrong with board 1. Something seems to be wrong with board 2 SCL. Parts look correct and soldered well. Resistors are all the right value and 1%.


I triple verified the pinout of the parts we used on paper printouts.

Next steps

Is it possible there is so much variation between individual FETs? Have I missed something completely obvious?

I guess the next step is to rework all the parts and made sure no connections are bad.

I switched to a dedicated level shifting chip to remove any chance for this weirdness. However, the Qwiic/Stemma QT adapter is intended to work with boards with the same setup, so if we’re having problems here it will be an issue there as well. The Stemma I2C board I have works fine, and I have a few more StemmaQT boards on the way to test further on Tuesday.

Mystery remains unsolved.

1 Like