Answers.Body: <p>LEGO doesn't really follow I2C standards, so "close enough" is a good description.</p>
  
  <p>The EV3 hardware developer kit (available for download at <a href="http://mindstorms.lego.com" rel="nofollow noreferrer">http://mindstorms.lego.com</a>) has this to say:</p>
  
  <blockquote>
    <h3>4.1 I2C communication</h3>
    
    <p>The EV3 platform supports the same level of I2C communication as MINDSTORMS NXT. This means that
    system support a maximum of 9600 bit/s and maximum 32 bytes communication buffers. All I2C
    communication is running within software drivers. External devices are required to include pull-up
    resistors on both pin 5 and 6 on 82K ohm. If multiple sensors are used on the same bus the total
    impedance needs to be adjusted accordingly.</p>
  </blockquote>
  
  <p>Most off-the-shelf I2C devices use 10k pullup resistors (although it looks like it might be 4.7k in your case). These must be removed and replaced with 82k resistors to be compatible with MINDSTORMS.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-14T18:24:40.557Z
Answers.Text: David, thanks for the information.  Yes, I did desolder the 4.7k pullups for the MKR1000 and tried 82k (as well as other values).  It's still not pulling logic low down anywhere close to 0 V.  My guess is that the non-Uno boards also are not true I2C either and are loading the EV3 SDA line too much.
Answers.UserDisplayName: A Brown
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-14T22:17:10.067Z
Answers.Text: What are you using for ground? On NXT, both pin 2 and pin 3 on the input ports are ground, but on EV3, only pin 3 is ground.
Answers.UserDisplayName: David Lechner
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-15T01:25:59.450Z
Answers.Text: I'm using Pin 3 as ground.
Answers.UserDisplayName: A Brown
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-15T17:29:51.860Z
Answers.Text: The MKR1000 has internal programmable pull-up/pull-down resistors. Are these disabled?
Answers.UserDisplayName: David Lechner
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-14T17:53:48.443Z
Answers.LastActivityDate: 2017-08-14T17:53:48.443Z
Answers.UserDisplayName: David Lechner
Body: <p>I'm having difficulties with communication between the EV3 and Arduino boards.  Does anyone know if the EV3 is really I2C compatible, or is it just close enough?  </p>
  
  <p>Background: I can get the EV3 to send and receive I2C with an Arduino Uno, but not with MKR1000 or Adafruit Huzzah boards.  This is both with and without pull-up resisters, and also trying different values of pull-up resistors.  When I scope the SDA line, it look reasonable when communicating with the Uno.  When communicating with the MKR1000, the low logic level only reaches 1.6 V (with the 4.7k resistors desoldered from MKR1000 board, but looks worse with the pull-ups).  With the Huzzah board, the SDA line looks great for about 4-5 bits, but then also raises the logic low level to about 2 V.  The clock line looks clean no matter what it is connected to.  </p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-10-23T20:56:01.677Z
Comments.Text: The same problem with connecting ev3 to rpi via i2c. A. Brown did you solve the problem?
Comments.UserDisplayName: Томшин Павел Валерьевич
Tags: <ev3><mindstorms><electronics>
Title: LEGO EV3 I2C Compatibility
UserDisplayName: A Brown
ThreadText: # LEGO EV3 I2C Compatibility
  
  (Asked by: username_0 on 2017-08-14)
  
  I'm having difficulties with communication between the EV3 and Arduino boards. Does anyone know if the EV3 is really I2C compatible, or is it just close enough?
  
  Background: I can get the EV3 to send and receive I2C with an Arduino Uno, but not with MKR1000 or Adafruit Huzzah boards. This is both with and without pull-up resisters, and also trying different values of pull-up resistors. When I scope the SDA line, it look reasonable when communicating with the Uno. When communicating with the MKR1000, the low logic level only reaches 1.6 V (with the 4.7k resistors desoldered from MKR1000 board, but looks worse with the pull-ups). With the Huzzah board, the SDA line looks great for about 4-5 bits, but then also raises the logic low level to about 2 V. The clock line looks clean no matter what it is connected to.
  
  **Tags:** ev3, mindstorms, electronics
  
  > **Comments:**
  > **username_1**: The same problem with connecting ev3 to rpi via i2c. A. username_0 did you solve the problem?  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2017-08-14. Score: 4
  
  LEGO doesn't really follow I2C standards, so "close enough" is a good description.
  
  The EV3 hardware developer kit (available for download at <http://mindstorms.lego.com>) has this to say:
  
  > ### 4.1 I2C communication
  >
  > The EV3 platform supports the same level of I2C communication as MINDSTORMS NXT. This means that
  > system support a maximum of 9600 bit/s and maximum 32 bytes communication buffers. All I2C
  > communication is running within software drivers. External devices are required to include pull-up
  > resistors on both pin 5 and 6 on 82K ohm. If multiple sensors are used on the same bus the total
  > impedance needs to be adjusted accordingly.
  
  Most off-the-shelf I2C devices use 10k pullup resistors (although it looks like it might be 4.7k in your case). These must be removed and replaced with 82k resistors to be compatible with MINDSTORMS.
  
  > **Comments:**
  > **username_0**: username_2, thanks for the information.  Yes, I did desolder the 4.7k pullups for the MKR1000 and tried 82k (as well as other values).  It's still not pulling logic low down anywhere close to 0 V.  My guess is that the non-Uno boards also are not true I2C either and are loading the EV3 SDA line too much.  
  > **username_2**: What are you using for ground? On NXT, both pin 2 and pin 3 on the input ports are ground, but on EV3, only pin 3 is ground.  
  > **username_0**: I'm using Pin 3 as ground.  
  > **username_2**: The MKR1000 has internal programmable pull-up/pull-down resistors. Are these disabled?  
  
  ---
  
  