2025-12-30 12:45 AM
We are using STM32U5G9's I2C with a diff-I2C to single ended I2C converter IC PCA9616. PCA9616 is used to program the STM32 MCU over I2C1 by converting diff-I2C to single ended I2C.
However, while probing the I2C1 of the STM32U5G9, we are seeing negative overshoot and level shifting on it. It seems like MCU is taking control of the I2C while in the slave mode. See I2C_SCL_waveform1.png
Also, we have tried disabling I2C1 of the MCU (by configuring it as a GPIO input only), by doing this we are able to mitigate the negative overshoot problem. I think the problem is with MCU, looks like it is taking control even if it is a SLAVE. See I2C_SCL_waveform2.jpg
Kindly let us know the exact reason and how to mitigate this issue.
2025-12-30 7:14 AM
Yeah looks like something is wrong.
The MCU can't drive signals below 0 V, something else happening there. Because of that, I doubt it's an STM32 issue.
300 mV is roughly the threshold of the protection diodes. Perhaps ground bounce is happening or some current is being conducted via another source. How is the scope ground hooked up? How are the two grounds connected?
2025-12-30 11:28 AM
It is very suspicious that the base level of the SCL signal is about 400 mV ! It looks like a short circuit between two outputs or something similar. Disconnect all slave devices and see what the signal looks like.
2026-01-01 9:48 AM
If the plots are from the differential side of the PCA9616, then in think that this is normal, the I2C Slave will drive the SCL line low for some time, this is called clock streching and is a standard I2C function.
You see the different level on the differenatial line because both PCA9616 are driving the Line for this period. I don't see any negative values, so there are non problems with protection diodes or similare.