I2C Spikes on all ESP32

ESP32 I2C Bus is not clean but creates spikes on SDA @ standard speed (100kHz), lasting 1us, valid bits last 20us. Happens every few bytes. If possible I would upload a screenshot from my oscilloscope, but I will try to describe as best as I can:

  • Tested on
    ** Wireless Stick Lite
    ** WiFi Lora V2

  • Conditions
    ** Speed: Standard, 100kHz
    ** Wifi off
    ** Lora off

  • No effect on spikes:
    ** Pullup altered from 1-10kOhm
    ** Wire altered from 8cm to 50cm

  • Selected pins do have an effect on the spikes
    ** SDA 21, SCL 22: Spike reaches 1.9V
    ** SDA 4, SCL 15: Spike reaches 2.8V (!)

This seems to cause reliability issues with sensor readings. Anyone can confirm?

Normaly I2C-Bus is High and will be active go to LOW by the master or the slave.

Hi Ernst,
What you write is correct - both master and slave can pull the I2C Bus low. So technically it may be the slave that causes the spikes, but as I tried two different sensors (SHT35 temperature sensor and VL53 ToF sensor), I am inclined to blame the ESP32.
Anyway, A high signal on SDA, that is significantly shorter than the SCK cycle (i.e. 1/10 of SCK) is not a valid I2C Signal - at least to my understanding.
By the way, an I2C Hub like the TCA9548a does not solve the Problem, as it is oblivious of the I2C signal logic and only acts like an analogue multiplexer.

Here are the pics:
1.) I2C Bus with Spikes:


2.) Details: