i2c-tools基本用法

一. 前言

        前面调试一个I2C设备,用到了i2c-tools,觉得是一个调试I2C不错的工具,本文对i2c-tools的基本用法做一些介绍。i2c-tools是一些控制2C接口工具的集合,其中包括i2cdetect,i2cdump,i2cget,i2cset和i2ctransfer,其中i2cdetect是用来探测I2C总线上有哪些从设备的,i2cdump是用来输出某个从设备的各个数据地址的内容的,i2cget是用来获取某个从设备的某个数据地址的内容的,i2cset则是用来设置某个从设备的某个数据地址的内容的,i2ctransfer则兼具读和写的功能。本文主要介绍i2cdetect,i2cget,i2cset和i2cdump的功能和使用方法。本文使用的I2C外设是AT24C02。

二. 命令的使用方法

1. i2cdetect

        i2cdetect的帮助信息如下:

Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
       i2cdetect -F I2CBUS
       i2cdetect -l
  I2CBUS is an integer or an I2C bus name
  If provided, FIRST and LAST limit the probing range.

        i2cdetect是用来探测I2C总线上有哪些从设备的。探测的原理:根据I2C协议,当主设备发送从设备的地址(由从设备的A0,A1和A2决定)后,从设备需要回一个ACK,此时,主设备就知道了该地址的从设备存在,所以,I2C主设备依次发送从设备地址为0x03 - 0x77的地址数据,

root@OpenWrt:/# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 
2. i2cset

        i2cset命令的帮助信息如下:

root@OpenWrt:/# i2cset --help
Error: Unsupported option "--help"!
Usage: i2cset [-f] [-y] [-m MASK] [-r] [-a] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    c (byte, no value)
    b (byte data, default)
    w (word data)
    i (I2C block data)
    s (SMBus block data)
    Append p for SMBus PEC

        i2cset命令用于设置I2C设备的某个地址的值,这里以在AT24C02的0x04地址写入0x89为例,命令如下:

root@OpenWrt:/# i2cset -y 0 0x50 0x04 0x89
3. i2cget

        i2cget命令的帮助信息如下:

Usage: i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    b (read byte data, default)
    w (read word data)
    c (write byte/read byte)
    Append p for SMBus PEC

        i2cget命令用于读取I2C设备的某个地址的值,以读取AT24C02的0x04地址为例,之前用i2cset设置了0x89。

root@OpenWrt:/# i2cget -y 0 0x50 0x04
0x89
4. i2cdump

        i2cdump命令的帮助信息如下:

Usage: i2cdump [-f] [-y] [-r first-last] [-a] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    b (byte, default)
    w (word)
    W (word on even register addresses)
    s (SMBus block)
    i (I2C block)
    c (consecutive byte)
    Append p for SMBus PEC

        i2cdump命令用于输出I2C设备的各个地址的值,在之前我在AT24C02的0x04地址上写入了0x89值,i2cdump命令输出如下:

root@OpenWrt:/# i2cdump -y 0 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: ff ff ff ff 89 ff ff ff ff ff ff ff ff ff ff ff    ....?...........
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
                       ......

        可以看到通过i2cdump,0x04地址的值为0x89。

三. 总结

        本文讲解了Linux下i2c-tools工具的使用方法,i2cdetect用于检测I2C总线的上有哪些I2C从设备,i2cset用于设置I2C总线上某个设备的地址的值,i2cget用于获取I2C总线上某个设备的地址的值,i2cdump用于批量输出I2C总线上某个设备的地址的值。熟悉使用这几个工具,对I2C设备的调试非常有帮助。

相关推荐

  1. i2c-tools基本

    2024-03-24 03:56:01       43 阅读
  2. C++常见STL容器基本

    2024-03-24 03:56:01       62 阅读
  3. C++ Lists(链表)基本

    2024-03-24 03:56:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 03:56:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 03:56:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 03:56:01       87 阅读
  4. Python语言-面向对象

    2024-03-24 03:56:01       96 阅读

热门阅读

  1. 【C++之string类】

    2024-03-24 03:56:01       33 阅读
  2. 《原型模式(极简c++)》

    2024-03-24 03:56:01       57 阅读
  3. os.path模块(二)

    2024-03-24 03:56:01       40 阅读
  4. Go语言介绍

    2024-03-24 03:56:01       50 阅读
  5. 如何快速上手vue?

    2024-03-24 03:56:01       45 阅读
  6. vivado 布线、路线_设计

    2024-03-24 03:56:01       49 阅读
  7. 素数问题 python

    2024-03-24 03:56:01       38 阅读