Problems with the I2C Grove Interface



  • Hello dear M5Stack Team,

    I come from Germany and unfortunately my English is not perfect.
    I hope you can understand me.

    I think the 5MStack product line is really good. It's all in a nice case and the products are well made.
    Now I unfortunately noticed a few things which are not so beautiful, but maybe I didn't see it correctly.

    It's about the I2C Grove interface. I think there are some hardware design bugs.
    Unfortunately I can't see the I2C Grove interface in the schematics of the M5Stack.
    Therefore I assume that SCL and SDA from the Grove interface are directly connected to the ESP32. (without logic)

    Now to the problems:

    1. A level shifter is missing in the M5Stack.
      If I look at the schematics of the sensors (e.g. the ENV unit) I can see that the pull-up resistors in the sensor modules are connected to 5V (VCC).
      Bild Text
      Bild Text
      This means that 5V is connected to the inputs of the ESP32. The ESP32 only supports voltages up to 3.6V. The 5V voltage could demage the I2C inputs of the M5Stack.
      With a level shifter in the M5Stack this problem could be solved.

    2. The pull-up resistors are built into the sensors.
      Unfortunately the pull-up resistors are built into the sensors. This is very unfortunate because if I use the Unit Hub to use several sensors then I have several pull-up resistors parallel to my I2C bus.
      Bild Text
      The total resistance of the pullup is getting smaller and smaller due to this.
      So maybe bigger circuits can't work anymore because the pullup resistance is too small.

    Why is the pull-up resistor not installed centrally in the M5Stack?

    I hope you don't misunderstand me. I love the M5Stack, but I noticed these problems.

    Greetings from Germany

    Staind



  • Yes it is unfortunate that there's just not enough information on these boards, they seem to be spending lots of effort generating different modules but not so much effort in support documentation which is a shame because it's a great product.



  • @staind87 said in Problems with the I2C Grove Interface:

    Hello dear M5Stack Team,

    I come from Germany and unfortunately my English is not perfect.
    I hope you can understand me.

    I think the 5MStack product line is really good. It's all in a nice case and the products are well made.
    Now I unfortunately noticed a few things which are not so beautiful, but maybe I didn't see it correctly.

    It's about the I2C Grove interface. I think there are some hardware design bugs.
    Unfortunately I can't see the I2C Grove interface in the schematics of the M5Stack.
    Therefore I assume that SCL and SDA from the Grove interface are directly connected to the ESP32. (without logic)

    Now to the problems:

    1. A level shifter is missing in the M5Stack.
      If I look at the schematics of the sensors (e.g. the ENV unit) I can see that the pull-up resistors in the sensor modules are connected to 5V (VCC).
      Bild Text
      Bild Text
      This means that 5V is connected to the inputs of the ESP32. The ESP32 only supports voltages up to 3.6V. The 5V voltage could demage the I2C inputs of the M5Stack.
      With a level shifter in the M5Stack this problem could be solved.

    2. The pull-up resistors are built into the sensors.
      Unfortunately the pull-up resistors are built into the sensors. This is very unfortunate because if I use the Unit Hub to use several sensors then I have several pull-up resistors parallel to my I2C bus.
      Bild Text
      The total resistance of the pullup is getting smaller and smaller due to this.
      So maybe bigger circuits can't work anymore because the pullup resistance is too small.

    Why is the pull-up resistor not installed centrally in the M5Stack?

    I hope you don't misunderstand me. I love the M5Stack, but I noticed these problems.

    Greetings from Germany

    Staind

    I recently have problems with using both ENV unit and TOF unit on a I2C hub on M5StickC. Using just 1 one of them at one time works. I wonder if this is related to what you discovered?

    Also, would using a PaHub solve the problem?



  • Hello, Did you end up finding a solution ? This is my issue and I think it may be related :

    Hello, I am trying to integrate a RTC module (DS3231). It works fine as long as I don't use the M5Stack library. As soon as I combine M5.begin() with Wire.begin() there seems to be a conflict. Scanning I2C reveals 2 devices :

    0x57 - M5 LCD ?
    0x68 - RTC Module DS3231

    Any clue as to what is going wrong ? What PINS are used by the LCD ? I suppose 21 (SDA) and 18 (SCL) ?

    Kind Regards,

    Tony