I2C: Inter-Integrated Circuit
This document is not yet written.
dtparam=i2c_arm_baudrate=400000
99-i2c.rules
/etc/udev/rules.d
SUBSYSTEM=="i2c-dev", MODE="0666"
I2C Primer​
TWI is the same thing.
SMBus is a stricter subset used in PCs: Power management, fan control, sensing battery level, and so forth.
Multi-master serial bus: one or more mastercontroller devices, one or more slaveperipheral devices.
7-bit address space (112 node limit), 16 reserved addresses (10bit address space (1008 node limit) exist too)
arbitrary bus speeds (0hz to 5Mhz), common speeds: 10Kbps, 100Kbps, 400Kbps.
Practical distances of a few meters.
Bi-directional, open drain bus. - requires external pull-up resistors.
Two wires, SCL (clock) and SDA (data)
Controller always controls SCL. Start Condition - SDA falls while SCL is high. Stop Condition - SDA rises while SCL is high. Between Start and Stop, the bus is Busy. SDA Bits are sampled when SCL is high.
First 9 bits are peripheral address + R/W bit + ACK bit. Next 9 bits are data + ACK bit. Repeat until STOP condition.
I2C Lab​
Resources​
https://github.com/fivdi/i2c-bus/blob/master/doc/raspberry-pi-i2c.md