在TK1上有6条I2C总线可用,这里只具体介绍两条常用的GEN1_I2C和GEN2_I2C:其他的I2C使用方法类似,就不一一赘述。
GEN1_I2C引脚电压1.8V,dev下的设备名是i2c-0(其实GEN1_I2C可用表示两条I2C,这里介绍在J3A1上的);GEN2_I2C引脚电压3.3V,dev下的设备名是i2c-1。下图是GEN1_I2C和GEN2_I2C的对应引脚。
在操作I2C之前要先下载一个测试I2C总线的工具i2c-tools。
$ sudo apt-get update
$ sudo apt-get install -y i2c-tools
使用i2cdetect -l列出当前能够监测到的I2C总线,TK1一共有6条
$ sudo i2cdetect -l
i2c-0 i2c Tegra I2C adapter I2C adapter
i2c-1 i2c Tegra I2C adapter I2C adapter
i2c-2 i2c Tegra I2C adapter I2C adapter
i2c-3 i2c Tegra I2C adapter I2C adapter
i2c-4 i2c Tegra I2C adapter I2C adapter
i2c-5 i2c Tegra I2C adapter I2C adapter
要具体监测某条I2C上的从机设备,需要先知道I2C引脚和设备序号的对应关系,上文提到GEN1_I2C和GEN2_I2C的序号分别是i2c-0和i2c-1。
以MPU6050为例,如果把MPU6050的SDA和SCL分别接到TK1的GEN1_I2C的SDA和SCL上,MPU6050的VCC接到TK1的+5V,MPU6050的GND接到TK1的GND。
用下面命令查看挂载在i2c-0上的设备地址。后面的0表示I2C序号,如果是I2C_0则是0,如果是I2C_1则是1
$ sudo i2cdetect -y -r 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
会看到在0x68的位置出现了MPU6050的地址。
值得一提的是AM2320检测时一次有一次没有(暂时不清楚原因,猜测是复用了其他I2C、有知道的高手请解答一下),多用命令试试。
i2cdetect -y -r 1
我把AM2320和GEN2_I2C连接,因此后面是序号是1
$ sudo i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- 5c -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
注意:这里的地址是从机地址,在一些MPU6050和AM2320的单片机的程序里,定义的地址是这个地址左移一位。这是因为左移一位后的地址才是从机的写地址。
下一节会具体讲如何在程序里操作I2C读写。
参考网址:
https://elinux.org/Jetson/I2C
https://devtalk.nvidia.com/default/topic/770603/embedded-systems/i2c-port-name-and-i2cbus-number/post/4397340/#4397340
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)