I2C

这篇文档介绍如何在Ubuntu下使用I2C。

连线

I2C A
Sensor SCL <-> I2C_SCK_A (PIN 22)
Sensor SDA <-> I2C_SDA_A (PIN 23)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电
I2C B
Sensor SCL <-> I2C_SCK_B (PIN 25)
Sensor SDA <-> I2C_SDA_B (PIN 26)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电

I2C A
Sensor SCL <-> I2C_SCK_A (PIN 22)
Sensor SDA <-> I2C_SDA_A (PIN 23)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电
I2C B
Sensor SCL <-> I2C_SCK_B (PIN 25)
Sensor SDA <-> I2C_SDA_B (PIN 26)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电

I2C 3
Sensor SCL <-> I2C0_SCK (PIN 22)
Sensor SDA <-> I2C0_SDA (PIN 23)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电
I2C 4
Sensor SCL <-> I2C1_SCK (PIN 25)
Sensor SDA <-> I2C1_SDA (PIN 26)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电

I2C A
Sensor SCL <-> I2CA_SCK (PIN 25)
Sensor SDA <-> I2CA_SDA (PIN 26)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电
I2C F
Sensor SCL <-> I2CF_SCK (PIN 22)
Sensor SDA <-> I2CF_SDA (PIN 23)
Sensor GND <-> GND
Sensor VCC <-> 5V or 3.3V //取决于传感器供电

检测设备

检索设备在I2C A:

1
2
3
4
5
6
7
8
9
10
$ sudo i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C B:

1
2
3
4
5
6
7
8
9
10
11
$ sudo i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C A:

1
2
3
4
5
6
7
8
9
10
$ sudo i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C B:

1
2
3
4
5
6
7
8
9
10
11
$ sudo i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C 3:

1
2
3
4
5
6
7
8
9
10
$ sudo i2cdetect -y -r 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C 4:

1
2
3
4
5
6
7
8
9
10
$ sudo i2cdetect -y -r 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- 0e --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: UU -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C A:

1
2
3
4
5
6
7
8
9
10
$ sudo i2cdetect -r -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

检索设备在I2C F:

1
2
3
4
5
6
7
8
9
10
$ sudo i2cdetect -r -y 5
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

如果连线正确并且所接传感器是正常的那么你会看到所接设备的地址,如:0x1d,0x18 and 0x51

从设备读取寄存器值

从挂载在I2C A上设备地址为0x1d的设备读取寄存器0x0d的值。

1
2
$ sudo i2cget -f -y 1 0x1d 0x0d
0x2a

更多用法请参考I2C工具帮助信息。