IC(Inter-Integrated Circuit,集成电路总线)由飞利浦公司在1980年代提出,此接口使用两根信号线实现一主多从的通信,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
Rockchip I2C 控制器支持下列功能︰
# cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins | grep i2c
pin 23 (gpio0-23): fec80000.i2c (GPIO UNCLAIMED) function i2c6 group i2c6m0-xfer
pin 24 (gpio0-24): fec80000.i2c (GPIO UNCLAIMED) function i2c6 group i2c6m0-xfer
pin 25 (gpio0-25): fd880000.i2c (GPIO UNCLAIMED) function i2c0 group i2c0m2-xfer
pin 26 (gpio0-26): fd880000.i2c (GPIO UNCLAIMED) function i2c0 group i2c0m2-xfer
pin 28 (gpio0-28): fea90000.i2c (GPIO UNCLAIMED) function i2c1 group i2c1m2-xfer
pin 29 (gpio0-29): fea90000.i2c (GPIO UNCLAIMED) function i2c1 group i2c1m2-xfer
pin 32 (gpio1-0): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m4-xfer
pin 33 (gpio1-1): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m4-xfer
pin 34 (gpio1-2): feac0000.i2c (GPIO UNCLAIMED) function i2c4 group i2c4m3-xfer
pin 35 (gpio1-3): feac0000.i2c (GPIO UNCLAIMED) function i2c4 group i2c4m3-xfer
pin 48 (gpio1-16): feab0000.i2c (GPIO UNCLAIMED) function i2c3 group i2c3m0-xfer
pin 49 (gpio1-17): feab0000.i2c (GPIO UNCLAIMED) function i2c3 group i2c3m0-xfer
pin 56 (gpio1-24): fec90000.i2c (GPIO UNCLAIMED) function i2c7 group i2c7m0-xfer
pin 57 (gpio1-25): fec90000.i2c (GPIO UNCLAIMED) function i2c7 group i2c7m0-xfer
# ls /dev/i2c-*
/dev/i2c-0 /dev/i2c-10 /dev/i2c-2 /dev/i2c-4 /dev/i2c-7
/dev/i2c-1 /dev/i2c-11 /dev/i2c-3 /dev/i2c-6 /dev/i2c-9
# 列出所有可用 I2C 总线
# i2cdetect -l
i2c-0 i2c rk3x-i2c I2C adapter
i2c-1 i2c rk3x-i2c I2C adapter
i2c-2 i2c rk3x-i2c I2C adapter
i2c-3 i2c rk3x-i2c I2C adapter
i2c-4 i2c rk3x-i2c I2C adapter
i2c-6 i2c rk3x-i2c I2C adapter
i2c-7 i2c rk3x-i2c I2C adapter
i2c-9 i2c DP-AUX I2C adapter
i2c-10 i2c ddc I2C adapter
i2c-11 i2c fde50000.dp I2C adapter
# 扫描指定总线(例如总线 6)
# sudo i2cdetect -y 6
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- UU -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
# i2cdump -f -y 6 0x5d
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 22 04 ef 00 00 00 00 00 00 00 00 03 00 00 00 00 "??........?....
90: 00 00 00 00 00 ff 89 00 00 00 00 00 00 00 00 00 ......?.........
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 .............?..
b0: 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 ............?...
c0: 00 00 00 00 00 00 00 00 ff 00 00 00 00 00 00 b0 ...............?
d0: 40 e0 53 44 40 e0 52 04 40 e0 53 04 40 e0 53 04 @?SD@?R?@?S?@?S?
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
# i2cget -f -y 6 0x5d 0xD0
0x40
# sudo i2cset -f -y 6 0x5d 0x00 0x55