linux下i2c调试神器i2c-tools安装及使用

i2c-tools介绍
在嵌入式linux开发中,有时候需要确认i2c硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools。

i2c-tools是一个专门调试i2c的开源工具,可获取挂载的设备及设备地址,还可以读写I2C设备寄存器。调试新的设备驱动时,难免要反复修改寄存器,然后看结果现象。传统的做法是修改驱动代码寄存器值->编译->下载->运行->看结果。这一过程比较费时间,而每次需要改的可能只是 1 个 bit,这种情况下 i2c-tools 简直就是神器。

下面我们就对这个工具的安装和使用做个简单介绍。

i2c-tools 官方说明:

https://i2c.wiki.kernel.org/index.php/I2C_Tools

工具源码下载地址:

https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

i2c-tools工具包括:

i2cdetect:用于扫描 i2c 总线上的设备,并显示地址。
i2cset:设置i2c设备某个寄存器的值。
i2cget:读取i2c设备某个寄存器的值。
i2cdump:读取某个i2c设备所有寄存器的值。
i2ctransfer:一次性读写多个字节。

工具命令介绍:
    i2cdetect:检测i2c芯片
    i2cdump:查看寄存器值
    i2cget:获取单个寄存器值(8位寄存器)
    i2cset:设置单个寄存器值(8位寄存器)
    i2ctransfer:一次传输多字节数据(16位寄存器)
参数介绍:
    -y:禁用交互模式。
    -f:强制访问设备。
    -r:写入后立即读回该值。

注:i2c-tools 原理是通过操作  /dev 路径 i2c-× 设备文件完成,因此你的 kernel 必须开启了 CONFIG_I2C_CHARDEV 配置,否者会报找不到节点。  

在设备上也可以通过目标板终端输入:ls /sys/bus/i2c/devices查看i2c设备节点信息。看到的i2c-0,i2c-1,指的是i2c总线节点,i2c从设备都是挂载在总线节点下的。

工具编译
工具源码,使用以下命令进行编译
 

make CC=arm-linux-gnueabihf-gcc USE_STATIC_LIB=1

USE_STATIC_LIB 的意思是使用静态编译。编译完成后,会在tools目录下产生i2cdetect,i2cdump,i2cget,i2cset,i2ctransfer五个产物。将这些可执行文件拷贝到设备上。

不加 USE_STATIC_LIB 编译选项,会使用动态链接的方式编译。编译完成后需要拷贝i2c-tools-4.3/lib 目录下的libi2c.so.0动态库到设备上的/usr/bin 目录下。编译会生成五个工具:i2cdetect、i2cset、i2cget、i2cdump、i2ctransfer,拷贝到开发板中就可以使用。

i2c-tools使用方法
i2cdetect:查询开发板包含的i2c总线和外设,看以下命令:
 

i2cdetect -l

探测开发板包含的i2c总线。

i2cdetect -y -r 0

探测i2c-0总线上挂载的外设,参数-y表示取消交互模式,直接执行命令。

i2cdetect -y -r 1

探测i2c-1总线上挂载的外设,UU表示该设备已经被Linux内核驱动占用,探测程序会略过该设备。下图所示,从设备地址分别是0x0c和0x1a。 UU表示设备地址的从设备被驱动占用,卸载对应的驱动后,UU就会变成数据。-- 表示该地址被检测,但是没有应答。

 i2cset:设置i2c设备单个寄存器的值,看几个命令:

i2cset -y -f 0 0x57 0x00 0x10
i2cset -y -f 0 0x57 0x01 0x11
i2cset -y -f 0 0x57 0x02 0x12
i2cset -y -f 0 0x57 0x03 0x13

下面以i2cset -y -f 0 0x57 0x00 0x10为例进行分析
参数含义:
-y 取消交互模式,直接执行命令
-f 强制访问该设备
0 表示i2c总线编号
0x57 表示i2c设备地址
0x00 表示寄存器地址
0x10 表示待写入的值
i2cget:查看i2c设备单个寄存器的值,看几个命令:
 

i2cget -y -f 0 0x57 0x00

以 i2cget -y -f 0 0x57 0x00为例进行分析,参数含义:
-y 取消交互模式,直接执行命令
-f 强制访问该设备
0 表示i2c总线编号
0x57 表示i2c设备地址
0x00 表示寄存器地址

 i2cdump:查看i2c设备所有寄存器的值,看以下命令:

i2cdump -y -f 1 0x32

参数含义:
-y 取消交互过程,直接执行命令
-f 强制访问该设备
1 表示i2c总线编号
0x32 表示i2c设备地址

其他资源
Linux内核i2c-tools命令

i2c-tools工具的安装和使用简单介绍-电子发烧友网

https://www.cnblogs.com/liuwanpeng/p/7346558.html

Linux下I2C-tools工具使用_i2cdetect_深海带鲤鱼的博客-CSDN博客

嵌入式Linux驱动开发(I2C专题)(四)_嵌入式学习者。的博客-CSDN博客 

摘自:https://blog.csdn.net/yyz_1987/article/details/131953108

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pycharm调试神器有很多个,以下是其中几个常用的: 1. 调试工具栏:Pycharm提供了一个强大的调试工具栏,可以方便地设置断点、单步执行代码、查看变量值等。在调试过程中,你可以通过调试工具栏来控制程序的执行流程,以便进行调试和排错。 2. Watch窗口:在调试过程中,你可以使用Watch窗口来监视变量的值。你可以选择要监视的变量,并在调试过程中实时查看它们的值。这对于理解代码的执行过程和排查问题很有帮助。 3. Evaluate Expression:Pycharm的Evaluate Expression功能允许你在调试过程中执行任意表达式并查看结果。这对于快速验证代码逻辑或查找问题非常有用。 4. Conditional Breakpoints:Pycharm允许你设置条件断点,当满足特定条件时,程序才会在该处中断执行。这对于在特定条件下进行调试非常有帮助。 5. 异常捕获:Pycharm提供了异常捕获功能,允许你在程序抛出异常时中断执行并查看异常信息。这对于调试和修复代码中的错误非常有帮助。 6. 远程调试:Pycharm还支持远程调试,允许你在远程服务器上运行代码并在本地进行调试。这对于处理分布式系统或远程服务器上的问题非常有帮助。 总之,Pycharm提供了很多强大的调试工具和功能,可以帮助开发者更容易地进行调试和排错。无论是通过调试工具栏、Watch窗口、Evaluate Expression还是条件断点,都可以帮助你更好地理解代码的执行过程并找出问题所在。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [墙裂推荐!Pycharm里6大神器插件!](https://blog.csdn.net/cainiao_python/article/details/120806430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值