8 Replies Latest reply on Oct 28, 2015 12:17 AM by BenKissBox

    I2C performances on Galileo

    BenKissBox

      Hello all,

      just to be clear : do not search my question... There is no question, I just want to share the measurements made on a Galileo in order to know what are the exact performances you can expect from the Wire library. Do not forget that Galileo runs on a Linux kernel, your sketch being compiled as a single-thread executable file. The performances you obtain are then significantly different from the ones you will get on a AVR based Arduino.

       

      I have performed the test using a I/O Expander board I designed, equipped with two PCF8574A I/O expander, running on a 100kHz I2C bus. Measurements have been made with a logic analyzer with a 125ns timebase.

       

      Here are the values I found

       

      Time between call to Wire.beginTransmission and effective transmission of address byte on the bus : 70 microseconds

      Time between call to Wire.endTransmission and effective transmission of data bytes (queued by Wire.write) : 115 microseconds for one byte in the queue, 180 microseconds for two bytes in the queue. When more than 2 bytes are transmitted, the delay grows roughly of 6 microseconds for each byte (194 for 4 bytes in the queue)

      Time between call the Wire.endTransmission and return to sketch code : 80 microseconds (this last value gives roughly 150 microseconds as a minimum between last transmitted data byte and the tranmission of the next address byte)

       

      I hope this can help somebody