首页 > 系统相关 >ARM - Linux内核i2c-tools命令

ARM - Linux内核i2c-tools命令

时间:2024-12-13 14:42:16浏览次数:6  
标签:00 -- root Linux alip i2c tools linaro

转自 https://zhuanlan.zhihu.com/p/509163257

一、i2cdetect

1、命令

root@linaro-alip:/# i2cdetect
Error: No i2c-bus specified!
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.

2、用法

## 列出i2c总线
root@linaro-alip:/# i2cdetect -l
i2c-0   i2c             rk3x-i2c                                I2C adapter
i2c-1   i2c             rk3x-i2c                                I2C adapter
i2c-9   i2c             DesignWare HDMI                         I2C adapter
## 列出某个i2c总线上的i2c设备
root@linaro-alip:/# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: UU UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@linaro-alip:/# 

二、i2cdump

1、命令

root@linaro-alip:~# i2cdump
Error: No i2c-bus specified!
Usage: i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77)
  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

2、用法

## 显示I2C 0号总线上0x1b设备的寄存器值。MODE为byte,可省略。
root@linaro-alip:~# i2cdump -f -y 0 0x1b b
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 12 50 08 21 01 13 01 00 00 00 00 01 01 00 00 00    ?P?!???....??...
10: 80 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
20: 01 17 00 6f ff 00 00 00 10 00 ff 0f ff 02 19 0f    ??.o....?..?.???
30: 00 00 19 07 00 00 02 03 00 00 09 00 00 00 00 0a    ..??..??..?....?
40: 00 0c 00 0c 00 07 00 01 00 0c 00 00 00 5f 00 03    .?.?.?.?.?..._.?
50: 06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 cf 03 00 28 00 0c 1c 80 19 00 34 12 00 71 00    .??.(.????.4?.q.
80: 10 50 1f ac 00 40 10 01 40 00 08 00 09 09 00 00    ?P??.@??@.?.??..
90: 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    U...............
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

三、i2cget

1、命令

root@linaro-alip:~# i2cget
Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77)
  MODE is one of:
    b (read byte data, default)
    w (read word data)
    c (write byte/read byte)
    Append p for SMBus PEC

2、用法

## 显示I2C 0号总线上0x1b设备0x0和0x1寄存器地址,按字节读取
root@linaro-alip:~# i2cget -f -y 0 0x1b 0x0
0x12
root@linaro-alip:~# i2cget -f -y 0 0x1b 0x1
0x50
## 按字读取
root@linaro-alip:~# i2cget -f -y 0 0x1b 0x0 w
0x5012

四、i2cset

1、命令

root@linaro-alip:~# i2cset
Usage: i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77)
  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 

2、用法

root@linaro-alip:/sys/rk8xx# i2cget -f -y 0 0x1b 0x10
0x80
root@linaro-alip:/sys/rk8xx# i2cset -f -y 0 0x1b 0x10 0x0
root@linaro-alip:/sys/rk8xx# i2cget -f -y 0 0x1b 0x10
0x00

五、i2ctransfer

i2c-tools-4.0及以后版本添加了i2ctransfer命令。

i2cget和i2cset可以读写的i2c设备的寄存器地址小于0xff,即寄存器是8位地址。

如果i2c设备寄存器是16位地址,可使用i2ctransfer命令,该命令同样可用在寄存器地址是8位的设备。

1、命令

"Usage: i2ctransfer [-f] [-y] [-v] [-V] [-a] I2CBUS DESC [DATA] [DESC [DATA]]...\n"
"  I2CBUS is an integer or an I2C bus name\n"
"  DESC describes the transfer in the form: {r|w}LENGTH[@address]\n"
"    1) read/write-flag 2) LENGTH (range 0-65535, or '?')\n"
"    3) I2C address (use last one if omitted)\n"
"  DATA are LENGTH bytes for a write message. They can be shortened by a suffix:\n"
"    = (keep value constant until LENGTH)\n"
"    + (increase value by 1 until LENGTH)\n"
"    - (decrease value by 1 until LENGTH)\n"
"    p (use pseudo random generator until LENGTH with value as seed)\n\n"
"Example (bus 0, read 8 byte at offset 0x64 from EEPROM at 0x50):\n"
"  # i2ctransfer 0 w1@0x50 0x64 r8\n"
"Example (same EEPROM, at offset 0x42 write 0xff 0xfe ... 0xf0):\n"
"  # i2ctransfer 0 w17@0x50 0x42 0xff-\n");

2、用法

## 从i2c 4号总线0x38设备的0x3a01寄存器开始读16个字节的数据,w2:表示寄存器0x3a01的长度为2个字节
i2ctransfer -y -f 4 w2@0x38 0x3a 0x01 r16
## 向i2c 4号总线0x38设备的0x3a01寄存器写0x10,w3:表示寄存器0x3a01和写入值0x10的长度为3字节
i2ctransfer -y -f 4 w3@0x38 0x3a 0x01 0x10

  

  

  

  

  

 

 

 

 

 

 

 

 

 

 

  

 

 

  

 

标签:00,--,root,Linux,alip,i2c,tools,linaro
From: https://www.cnblogs.com/longyue0917/p/18604931

相关文章

  • ARM-linux驱动开发学习笔记整理(PART-1)
    前言前景提要:曾经做过一个迷你Linux小电脑,自己画了个四层板,有gpio、屏幕、USB等外设,并且在Ubuntu系统下编译固件,驱动屏幕等外设,最终也算是写了一个小型QT程序,读取图片并且联网通过访问API的方式识别图片中的内容。但是从始至终,一直游荡于论坛,没有潜下心来学习学习linux驱动开发......
  • Linux用户与权限
    用户、用户组概述Linux是多用户多任务操作系统,支持多个用户在同一时间内登陆,不同用户执行不同的任务,并且互不影响。不同用户具有不同的操作权限,每个用户在权限允许的范围内完成不同的任务。权限最高的用户叫做root,称之为超级管理员用户。用户组是具有相同特征用户的逻辑......
  • [Linux]Debian 12安装docker
    参考官网:https://docs.docker.com/engine/install/debian/forpkgindocker.iodocker-docdocker-composepodman-dockercontainerdrunc;dosudoapt-getremove$pkg;done#AddDocker'sofficialGPGkey:sudoapt-getupdatesudoapt-getinstallca-certif......
  • [Ubuntu] linux之Ubuntu18.04的下载及在虚拟机中详细安装过程(附有下载链接)
     前言ubuntu链接:https://pan.quark.cn/s/283509d0d36e提取码:dfT1链接失效(可能被官方和谐)可评论或私信我重发下载压缩包后解压!!安装路径不要有中文下载后解压得到.iso文件,不要放在有中文路径的目录下,我这里是解压放在E盘下打开虚拟机,这里使用的是VMwareWorkstat......
  • Linux 系统中ld命令
     001、Linux中ld命令是链接命令,其作用是将链接文件(经过编译和汇编后的机器码文件)和库文件整合为可执行文件或者是库文件。ld(LinkeDitor)命令是二进制工具集GNUBinutils的一员,是GNU链接器,用于将目标文件与库链接为可执行文件或库文件。 002、(base)[root@PC1test]#ld-......
  • 瑞芯微主板/开发板Linux系统播放音频方法,触觉智能RK3562开发板演示
    通过桌面双击播放音频​通过桌面播放音频没有声音时,可以查看sound(声音)选项是否设置为speakers(扬声器)播放。命令行播放音频通过aplay-l查看声卡系统默认配置的声卡是rockchipes8388,通过aplay-l命令确定是第几个声卡,如下所示:root@Industio:/$aplay-l****ListofPLAYB......
  • linux 查看进程信息 ps
    总结1  解释 spawn_main 和 --multiprocessing-forkspawn_mainspawn_main 是Python的multiprocessing模块用于处理多进程创建的一个内部函数。当你在Python中使用multiprocessing模块来创建新的进程时,新的子进程会运行spawn_main函数。spawn_main负责初始化新进程并......
  • 粤嵌GEC6818开发板 手动制作64位Linux系统启动SD卡
    背景:之前的帖子中也提到了,可以用FriendlyARM提供的sd_fuse工具制作可以给使用S5P6818SOC设备使用的SD卡,由于GEC6818的配置和三星Nexell的Raptor,drone开发板以及友善的nanopi3系列本质是很相近的,所以他们的系统、uboot、甚至是bootloader小加修改就可以跑在粤嵌的GEC6818开发......
  • Linux安装windows字体
    在导出文档时,Windows上能显示的字体,放到Linux就会出现乱码的形式1.创建目录在 /usr/share/fonts/下创建一个目录mkdir/usr/share/fonts/winfonts/2.导入字体方式一:将Windows系统中 “C:\windows\fonts”目录下的所有字体文件,拷贝到 /usr/share/fonts/winfonts ......
  • linux mm 之 FLATMEM 平坦内存模型
    把物理内存当作一片地址连续的存储空间,内核将这块连续的内存空间分为一页一页的内存块structpage。最早的内存模型,管理1G以下的内存时足够高效,可以虚拟地址与物理地址直接映射,它只适合管理一整块连续的物理内存。当大于1G且多块非连续的物理内存时,会造成内存空洞浪费内存空......