Hot answers tagged


I2C specification does not specify any connector, as it is not a specification for an external interface. Many technologies that are based on I2C do specify a connector and pinout for an external interface, for example Access.bus has 4-pin connector. Lego Mindstorms also implements I2C over 6P6C connectors.


See Access.bus, a form of I2C designed for low-speed desktop devices with hot-plug capability. Unfortunately, it was quickly overshadowed by USB, which came out shortly afterward.


No, the capacitors are on the power supply pins, and the capacitors will have no effect on the I2C bus pins. That's exactly how it is supposed to be done.


This is not something you'd typically need to adjust away from defaults. In ordinary open-drain operation rise time would be governed by the pullup resistor chosen and bus capacitance. You basically would not be able to make it "too fast" without requiring excessive drive down current, so really would just need to check that the rise time isn't ...


If minimum values are not given then you should assume that the rise times can be zero. I would use the smallest rise time that my system could produce, which is likely limited by the resistor pullup and wiring capacitance. Likewise, you will usually only see a minimum limit on hold time or clock high time because any value larger than that is guaranteed to ...


For reference Intel recommends a star configuration to limit load capacitance: I2C Routing The I2C signals do not need to be routed as differential pairs, but it is recommended not to separate data and clock lines too much. It is not required to route the bus as a daisy chain, because the stub length is not a problem. The maximum trace length is limited by ...


Instead of discarding the return value from Wire.requestFrom(TEMP_ADDRESS, 12);, test the return value to determine whether or not the Wire.requestFrom worked correctly: byte numBytesReceived = Wire.requestFrom(TEMP_ADDRESS, /* quantity */ 12); if (numBytesReceived == 0) { Serial.print("** error: device not found **"); } else if (...


The SMBus application note says you must erase before writing new values. Example code from the datasheet is posted below. In Application mode only 9 cells are accessible for writing. An attempt to write not accessible EEPROM cell results in no change. Before writing an erasing operation must be done. An erasing operation is just a writing ...


The datasheet page 3 says how the I2C registers should be read and written, and the code does not do as the datasheet says. Some chips do work with the way your code is written, some chips do not even return an acknowledgement to the read sequence if the register write sequence is wrong. Just use HAL_I2C_MEM_READ and HAL_I2C_MEM_WRITE to access the registers....

Only top voted, non community-wiki answers of a minimum length are eligible