• Linux I2C tools调试工具


    前言

    使用Linux调试I2C设备的同学应该都听说过I2C tools这个工具吧!今天就给大家详细的介绍一下这个I2C工具,有了它可以让你的调试事半功倍!

    工具官网

    I2C Tools官网
    在这里插入图片描述

    在Linux环境下执行下面的语句就可以安装这个工具了:

    sudo apt-get install i2c-tools
    
    • 1

    安装包的下载:
    在这里插入图片描述

    I2C Tools是干什么的?

    我们通过他的名字就可以看出,他是一个I2C工具,但是这个工具具体能够做哪些事呢?我们该如何使用呢?带着这些问题我们直接开始!

    i2c-tools工具是一个专门用来调试 i2c 的,并且是开源的,你可以使用它来干下面的这些事:
    1、检测有几组i2c总线在系统上。
    2、查看挂载在i2c上面设备寄存器的数值。
    3、可以读取挂载在i2c上面设备寄存器的数值。
    4、可以设置挂载在i2c上面设备寄存器的数值。

    我们针对上面的这四个作用,一个一个的来看一下!

    I2c总线扫描

    通过i2cdetect -l指令可以查看TX1上的I2C总线,从返回的结果来看TX1含有七个I2C总线。

    ubuntu@tegra-ubuntu:/proc/device-tree$ i2cdetect -l
    i2c-0   unknown         Tegra I2C adapter                       N/A
    i2c-1   unknown         Tegra I2C adapter                       N/A
    i2c-2   unknown         Tegra I2C adapter                       N/A
    i2c-3   unknown         Tegra I2C adapter                       N/A
    i2c-4   unknown         Tegra I2C adapter                       N/A
    i2c-5   unknown         Tegra I2C adapter                       N/A
    i2c-6   unknown         Tegra I2C adapter                       N/A
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    I2C设备查询

    若总线上挂载I2C从设备,可通过i2cdetect扫描某个I2C总线上的所有设备。可通过控制台输入i2cdetect -y 2,结果如下所示:

    ubuntu@tegra-ubuntu:/proc/device-tree$ sudo i2cdetect -y 2
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: 50 -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    说明: -y为一个可选参数,如果有-y参数的存在则会有一个用户交互过程,意思是希望用户停止使用该I2C总线。如果写入该参数,则没有这个交互过程,一般该参数在脚本中使用。

    此处I2C总线共挂载两个设备—PCF8574AT24C04,从机地址0x50board configure,从机地址0x57AT24C04

    寄存器内容导出

    通过i2cdump指令可导出I2C设备中的所有寄存器内容,例如输入i2cdump -y 2 0x50,可获得以下内容:

    ubuntu@tegra-ubuntu:/proc/device-tree$ sudo i2cdump -y 2 0x50
    No size specified (using byte-data access)
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 01 00 0d 00 84 08 e8 03 04 4a 00 00 00 00 00 00    ?.?.?????J......
    10: 00 00 35 02 36 39 39 2d 38 32 31 38 30 2d 31 30    ..5?699-82180-10
    20: 30 30 2d 34 31 30 20 4a 2e 30 ff ff ff ff ff ff    00-410 J.0......
    30: ff ff 35 2d 66 4b 04 00 36 2d 66 4b 04 00 00 00    ..5-fK?.6-fK?...
    40: 00 00 00 00 37 2d 66 4b 04 00 30 33 32 33 32 31    ....7-fK?.032321
    50: 36 31 33 30 35 36 35 ff ff ff ff ff ff ff ff ff    6130565.........
    60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    90: ff ff ff ff ff ff 4e 56 43 42 1c 00 4d 31 00 00    ......NVCB?.M1..
    a0: 35 2d 66 4b 04 00 36 2d 66 4b 04 00 37 2d 66 4b    5-fK?.6-fK?.7-fK
    b0: 04 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ?...............
    c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 96    ...............?
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    其中参数说明如下:

    -y      代表取消用户交互过程,直接执行指令;
    2       代表I2C总线编号;
    0x50    代表I2C设备从机地址,此处选择配置芯片的高256字节内容。
    
    • 1
    • 2
    • 3

    寄存器内容写入

    如果向I2C设备中写入某字节,可输入指令

    i2cset -y 2 0x50 0x00 0x13
    
    • 1
    -y      代表曲线用户交互过程,直接执行指令
    2       代表I2C总线编号
    0x50    代表I2C设备地址,此处选择AT24C04的低256字节内容
    0x00    代表存储器地址
    0x13    代表存储器地址中的具体内容
    
    • 1
    • 2
    • 3
    • 4
    • 5
    👇点击下方公众号卡片获取资料👇
  • 相关阅读:
    C++单例模式
    面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧
    仿牌独立站如何通过PayPal.Me亲友付进行收款
    Trie思想及模板
    加密流量研究方向
    C++中使用boost库存取ini结构化文本文件
    技术架构 - 应用数据分离,应用服务集群架构
    JavaSE笔记(八)重制版
    讲解Windows系统中如何使用Python读取图片的元数据【Metadata】
    从TRPO到PPO(理论分析与数学证明)
  • 原文地址:https://blog.csdn.net/qq_45172832/article/details/126768333