关注分享主机优惠活动
国内外VPS云服务器

NVIDIA Jetson I2C 测试

总结:后台开发板有接口。 本文将向您展示如何使用该界面。 同时,设备必须连接到同一地。 例如,在总线上,您从设备地址和寄存器地址开始读取字节长的数据。

0 背景

Jetson 开发板具有 I2C它配备有一个接口。 本文将向您展示如何使用该界面。 以Jetson TX2为例,其他设备的方法类似,但区别主要在于硬件接口。

1 硬件连接

Jetson TX1[ -TX2 开发套件载板规格 可以看到第 5 个引脚代表 SDA 和 SCL 接口,分别,并可以通过杜邦线连接到设备,同时设备必须连接到同一地(例如nano/NX)(对于设备,可以参考相应的载板文档)。

J21管脚定义如下:

或者直接参考:可以参考《移至SDA和SCL管脚的第3、5号管脚》此链接中的 I2C 总线 1"。

2 i2c-tools工具

2.1安装方法

jetpack包含i2c i2c安装了-tools工具,用于查询命令。 如果没有,您可以使用 apt 安装它。

$ sudo apt-获取更新$ sudo apt-]get install -y i2c-tools

i2c-tools 工具包括以下部分

i2cdetect[ k4]- --用于查找所连接设备的地址。

i2cdump----用于读取特定地址处所有寄存器的内容。

i2cset- -[k4 ]----- 将内容写入特定寄存器

i2cget-- ][ k4]- --[k4 ]从特定寄存器读取值

2.2 i2cdetect

i2cdetect命令用于检测。 系统上的 I2C 总线状态

$ sudo i2cdetect -li2c-3 i2c 3190000.i2c I2C 适配器 i2c-1 i2c c240000.i2c I2C 适配器 i2c-8 i2c 31e0000 .i2c I2C 适配器 i2c-6 i2c 31c0000.i2c I2C 适配器 i2c-4 i2c Tegra BPMP I2C 适配器 I2C 适配器 i2c-2i2c 3180000.i2c I2C 适配器 i2c-0 i2c 3160000.i2c I2C 适配器 i2c-7 i2c c250000.i2c I2C 适配器 i2c-5 i2c 31b0000.i2c I2C 适配器

,TX2有9组I2C接口,每组总线都被单独扫描以获取实现信息。

i2cdetect -y -r -a 1

示例:

-y 是忽略的方法问题 -r 为 SMBus 读字节命令 -a 为任意地址,1 表示 TX2 开发板上的 i2c -1

2.3 i2cdump

i2cdump 用于显示设备寄存器的值

i2cdump [-f] [-y] [- r first[k4 ] last] I2CBUS ADDRESS [MODE [BANK [BANKREG]] ]

显示总线 7 上设备 0x50 的所有寄存器的值

 $ i2cdump - y 7 0x50 未指定大小(使用 byte[ k4]数据访问)0 1 2 34 5 6 7 8 9 a b c d e f 0123456789abcdef00:01 00 0d 00 ee 0c e8 03 42 44 00 00 00 00 00 00 ?????.??????BD....10:00 00 00 00 36 39 39 2d 38 33 33 31 30 2d 31 30 ....699-83310-1020: 30 30 2d 42 30 32 20 44 2e 30 00 00 00 00 00 00 00-B02 D.0.. .. ..30: 00 00 a5 04 a8 4b 04 00 a6 04 a8 4b 04 00 00 00 ..???K?.???K?...40: 00 00 00 00 a7 04 a8 4b 04 00 30 33 32 30 32 31 .... ??? K?  .03202150:38 31 36 39 30 39 39 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 ..... . 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... ..90:00 00 00 00 00 00 4e 56 43 42 1c 00 4d 31 00 00 。   ....NVCB?.M1..a0: a5 04 a8 4b 04 00 a6 04 a8 4b 04 00 a7 04 a8 4b ???K???.???K???.???Kb0: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?... ......c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ......d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 。 .....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 b9 .......?

2.4 i2cset

i2cset用于设置设备中单个寄存器的值

i2cset [-f] [-y] [- m 掩码] [ - ]r] I2CBUS 芯片-地址数据-地址 [值] ... [ MODE]

示例:将地址设置为 0x50,并将设备的寄存器设置为 0x20。 值为 0x04。

$ sudo i2cset -f -y 2 0x50 0x20 0x04

2.5 i2cget

i2cget 用于显示设备的单个寄存器值

i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]I2CBUS 是一个整数或 I2C 总线名称 ADDRESS 是一个整数 (0x03 - 0x77) MODE 是以下之一: b(字节,默认) w(字) W (偶数寄存器地址上的字) s (SMBus 模块) i (I2C 模块) c (连续字节) 为 SMBus PEC 添加 p

示例:地址 使用 a 读取设备的 0x20 寄存器值为 0x50。

$ sudo i2cget -y 2 0x50 0x200x30

2.6 i2ctransfer

i2ctransfer 读取和写入使用的设备寄存器值。可在 2 字节寄存器中使用)

sudo i2ctransfer -f -y [总线序列号] w [要写入的数据长度] @ [设备地址] [ [寄存器地址高字节] [寄存器地址低字节] r[要读取的数据长度]。

示例:在1号总线上,从设备地址0x10开始,寄存器地址0x0101,读取16字节长的数据。

$ sudo i2ctransfer -f -y 1 w2@0x10 0x01 0x01 r160x80 0x80 0x00 0x08 0x10 0x1a 0x00 0x00 0x00 0x10 0x27 0x00 0x00 0x40 7 0x0d 

3 个 i2c 代码示例

Linux 的 i2c 库可在 github 上找到。 地址:https://github.com/amaork/libi2c

下载后,可以使用以下方法安装。 创建和使用脚本。

git clone https://github.com/amaork/libi2c.gitcd libi2csudo python setup.py install

测试脚本

 cd 示例python pylibi2c_tools.py -b /dev/i2c-1 -d 0x1b --iaddr 0x0b --data 0x00 

表示将值0x00写入总线顶部地址0x1b处的设备的寄存器0x0b中。 这同样适用于其他用途。 参见代码说明。

参考

Jetson Nano I2C 读写寄存器 Jetson Nano I2C 描述和 Python

未经允许不得转载:主机频道 » NVIDIA Jetson I2C 测试

评论 抢沙发

评论前必须登录!