RK3568驱动指南|第十五篇 I2C-第180章 I2C Tools工具讲解

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】258811263(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十五篇 I2C_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第180章 I2C Tools工具讲解

I2C Tools是一套用于访问和调试I2C设备的命令行工具集合。可以帮助开发人员和系统管理员轻松地与I2C设备进行交互,在本章中将分别对I2C Tools工具的下载和安装以及I2C Tools工具的使用进行讲解。

180.1 I2C Tools工具的下载和安装

注:如果使用的是迅为提供的镜像默认已经安装了I2C Tools工具,可以跳过本小节。

I2C Tools工具官网地址如下所示:

I2C Tools - Linux i2c Wiki

在官网中提供了两种源码下载方法,为了方便起见迅为已经将下载好的源码压缩包放在了“iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\110_I2CTools”如下图所示:

然后将该源码包拷贝到虚拟机ubuntu上并解压,解压完成如下图所示: 

然后进入i2c-tools-4.3目录使用以下命令进行编译安装(这里的编译器路径要以实际情况为准)

make CC=/home/topeet/Linux/linux_sdk/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \

AR=/home/topeet/Linux/linux_sdk/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar \

USE_STATIC_LIB=1

编译完成会在tools目录下生成对应的可执行文件,具体如下图所示: 

只需要将上述可执行文件拷贝到开发板上就可以使用了。

如果使用的是buildroot系统,只需要在make menuconfig 图形界面中勾选I2C Tools工具重新编译即可,默认已经勾选了,如下图所示:

而如果使用的是ubuntu或者Debian系统只需要使用命令“sudo apt install i2c-tools”进行安装即可。

至此,关于每个系统的I2C Tools工具的安装就讲解完成了,在下个小节中将会对每个I2C Tools工具的使用进行讲解。

180.2 I2C Tools工具的使用

180.2.1 i2cdetect

i2cdetect 可以用来检测和探测 I2C 总线上连接的设备。具体用法如下:

(1) i2cdetect -V: 输出版本信息

(2)i2cdetect -l: 列出所有的I2C总线

(3)i2cdetect -F 查询总线上设备支持的功能集,例如 i2cdetect -F 1 将列出总线 1 上设备支持的功能。 (4)i2cdetect -a 扫描总线上0x00到0xFF范围内的所有I2C设备地址。例如: i2cdetect -a -y 1将扫描I2C1总线上全部的I2C设备地址,如下图所示:

这里的0x38就是FT5X06触摸芯片的I2C设备地址。

180.2.2 i2cdump

i2cdump可以读取设备上所有寄存器的值,具体用法如下:

(1) i2cdump -V查看版本号:

(2)读取设备寄存器:使用 i2cdump -f -a 1 0x38 命令可以读取I2C设备地址为0x38的所有寄存器值(从0x00到0xFF)。-f 选项用于强制使用设备地址,而 -a 选项则是用于读取整个地址范围。

(3)指定寄存器范围读取,使用 i2cdump -f -r 0x80-0xff 1 0x38 命令可以只读取I2C设备地址为0x38的0x80到0xff范围内的寄存器值。-r 选项用于指定要读取的寄存器地址范围。

180.2.3 i2cset

i2cset 命令用于向I2C设备的特定寄存器写入数据。它的用法如下:

i2cset -f -r 1 0x38 0x80 0x11

这条命令的意思是:

(1)强制使用I2C总线1上的设备地址0x38

(2)向该设备的寄存器地址0x80写入值 0x11

写入完成后,该命令会返回一个确认信息,表示写入是否成功。如果写入失败,则会返回一个错误信息。如下图所示:

180.2.4 i2cget

i2cget 命令用于从 I2C 设备的指定寄存器中读取数据它的用法如下:

i2cget -f 1 0x38 0x80

这条命令的意思是:

(1)强制使用 I2C 总线 1 上的设备地址 0x38

(2)从该设备的寄存器地址 0x80 读取数据

该命令会返回寄存器 0x80 的值。读取成功后,会显示类似 0x11 的十六进制值。如果读取失败,则会返回一个错误信息。

180.2.5 i2ctransfer

i2ctransfer是一个更加强大和灵活的 I2C 操作工具,与之前介绍的 i2cset 和 i2cget 命令相比,它可以在单个命令中完成读写操作。具体用法如下所示:

写操作

i2ctransfer 1 w2@0x38 0x80 0x22

(1)1 表示操作的 I2C 总线编号为 1

(2)w2 表示写入 2 个字节的数据

(3)@0x38 表示设备地址为 0x38

(4)0x80 表示要写入的寄存器地址为 0x80

(5)0x22 表示要写入寄存器的值为 0x22

读操作

i2ctransfer 1 w1@0x38 0x80 r1

(1)1 表示操作的 I2C 总线编号为 1

(2)w1 表示写入 1 个字节的数据

(3)@0x38 表示设备地址为 0x38

(4)0x80 表示要写入的寄存器地址为 0x80

(5)r1 表示读取 1 个字节的数据

  • 38
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值