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

这篇具有很好参考价值的文章主要介绍了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就会变成数据。-- 表示该地址被检测,但是没有应答。

i2c调试助手,linux应用开发,嵌入式linux之iMX6ULL趣玩笔记,linux,i2c-tools,嵌入式

 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 表示寄存器地址

i2c调试助手,linux应用开发,嵌入式linux之iMX6ULL趣玩笔记,linux,i2c-tools,嵌入式

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

i2cdump -y -f 1 0x32

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

i2c调试助手,linux应用开发,嵌入式linux之iMX6ULL趣玩笔记,linux,i2c-tools,嵌入式

其他资源

Linux内核i2c-tools命令

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

https://www.cnblogs.com/ITY996/p/16894380.html

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

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

嵌入式Linux驱动开发(I2C专题)(四)_嵌入式学习者。的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-858534.html

到了这里,关于linux下i2c调试神器i2c-tools安装及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Linux下i2c-tool工具(i2cdetect/i2cget/i2cset/i2ctransfer)及memtool32工具直接操作寄存器的使用

    1. 首先本人是直接下载的i2c-tool和memtool32工具到开发板内直接使用: 2. i2cdetect命令:该命令是用于扫描板卡内i2c总线上的设备 输入./i2cdetect,会出现i2cdetect指令的语法操作说明 参数说明:         参数y:关闭交互模式,使用该参数时,不会提示警告信息。         参

    2024年04月27日
    浏览(39)
  • Linux在应用层上使用I2C

    通常情况下i2c读写一般是在kernel中使用,但是在应用层上一样可以使用。在应用上可以通过读写/dev/i2c-x这个节点从而控制i2c接口进行读写数据。 通常一个SOC有多个I2C控制器,假设有这个SOC有3个控制器,我们会在/dev目录下看到i2c-0、i2c-1、i2c-2,计数从0开始。 1.首先使用的时

    2024年02月02日
    浏览(46)
  • alsa音频pcm设备之i2c调试

    i2cdetect 列举 I2C bus i2cdetect -l ls /dev/i2c* 列出I2C bus i2c-7 上面连接的所有设备,并得到i2c设备地址 i2cdetect -y 7 发现i2c设备的位置显示为UU或表示设备地址的数值,UU表示设备在driver中被使用. I2cdump i2c设备大量register的值 i2cdump -y 7 0x40 I2cset设置i2c设备某个register的值 i2cset -y 7 0x40 0x0

    2024年02月08日
    浏览(36)
  • I2C知识大全系列四 —— I2C驱动之Linux下的I2C

    Linux 系统定义了 I2C 驱动体系结构。在 Linux 系统中, I2C 驱动由三部分组成,即 I2C 核心 、 I2C 总线驱动 和 I2C 设备驱动 。这三部分相互协作,形成了非常通用、可适应性很强的 I2C 框架。 I2C核心 I2C 核心提供了 I2C 总线驱动 和 设备驱动 的 注册 、 注销方法 , I2C 通信方法

    2024年02月07日
    浏览(56)
  • Linux Kernel 4.19+内核使用GPIO模拟I2C的方法

    1.修改内核配置文件,使内核支持GPIO模拟I2C 2.对应的dts里面增加GPIO模拟I2C的设备树 编译后烧写,会发现/dev下多了一个i2c总线,多出来的那个就是了。

    2024年02月16日
    浏览(45)
  • 【开源】调试利器:高速USB转UART、SPI、I2C、JTAG

    在前面的文章 动态库封装实例 中使用了一个CH347高速USB转UART、SPI、I2C、JTAG桥接模块,已经开源👉 GitHub仓库。 CH347 High Speed USB Bridge 是基于沁恒CH347芯片设计的一款调试利器,支持高速USB,可以实现USB to UART,USB to SPI,USB to I2C,USB JTAG,USB to GPIO。 概况 Type-C接口,USB2.0,支持

    2024年02月03日
    浏览(46)
  • Linux I2C 驱动实验

    目录 一、Linux I2C 驱动简介 1、I2C 总线驱动 2、I2C 设备驱动 1、 i2c_client 结构体 2、 i2c_driver 结构体 二、硬件分析 三、设备树编写 1、pinctrl_i2c1 2、在 i2c1 节点追加 ap3216c 子节点 3、验证 四、 代码编写 1、makefile 2、ap3216c.h  3、ap3216c.c ①、头文件 ②、驱动出入口  ③、 i2c驱动

    2024年02月08日
    浏览(52)
  • Linux驱动开发(I2C系统的重要结构体)

    本篇文章来讲解I2C系统的重要结构体,了解这些结构体对于编写I2C驱动来说是至关重要的,所以要想编写好一个I2C驱动程序那么就必须先了解这些结构体。 这里使用百问网的一张图片来讲解: 一个芯片中可以有多个I2C控制器,并且一个I2C控制器可以控制多个设备。那么在对

    2024年02月07日
    浏览(47)
  • Linux驱动开发之i2c框架讲解到例程

            本篇章在rk3399平台上,基于设备树的i2c驱动开发。i2c直接使用硬件i2c总线,体系结构分为3部分:I2C 核心、I2C 总线驱动和I2C 设备驱动。 I2C 核心 (i2c-core.c)提供了I2C 总线驱动和设备驱动的注册、注销方法等。我们主要了解Linux中i2c的基本框架,分为 i2c主机驱动开发

    2024年02月02日
    浏览(40)
  • Linux I2C驱动分析2 - 通过设备树添加设备

    一. I2C通过设备树添加设备         通过设备可以向I2C总线添加I2C设备,设备树举例如下:         设备树中在I2C总线下添加了一个oled0.98设备,oled在I2C总线中的地址为0x3c。可以在/sys/bus/platform下看到这个设备。 二. I2C驱动代码 三. I2C应用代码         以上的代码功能是首

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包