首页 > 其他分享 >25 IIC(三)I2C_Tools

25 IIC(三)I2C_Tools

时间:2023-05-14 14:33:31浏览次数:42  
标签:25 DATA I2CBUS ADDRESS integer byte I2C Tools

i2c-tools

1. 编译i2c-tools

  • 从官网下载相关源码包

  • 设置交叉编译工具链

    export ARCH=arm
    export CROSS_COMPILE=arm-linux-gnueabihf-
    export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
    
  • 修改makefile,在makefile中指定修改后的工具链

    CC      ?= gcc
    AR      ?= ar
    STRIP   ?= strip
    改为(指定交叉编译工具链前缀, 去掉问号):
    CC      = $(CROSS_COMPILE)gcc
    AR      = $(CROSS_COMPILE)ar
    STRIP   = $(CROSS_COMPILE)strip
    
  • make编译

    编译后将libi2c.so放到开发板的lib目录下,将编译的执行文件上传到开发板子中

2. i2c-tools命令的使用

2.1 i2cdetect(i2c检测)

2.1.1 用法

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.

	-q 使用SMBus Qucik Write。不推荐
	-r 使用SMBus receive byte。不推荐

2.1.2 示例

i2cdetect -l					// 列出当前I2C总线
i2cdetect -F I2Cbus_number		// 列出i2c总线支持的功能
i2cdetect -y -a I2Cbus_number	// 列出总线上的设备。--表示没有该地址对应的设备, UU表示有该设备并且它已经有驱动程序,
								// 数值表示有该设备但是没有对应的设备驱动


2.2 i2cget(读数据)

2.2.1 用法

Usage: i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
								IIC		芯片地址		数据地址		
  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

	-f 强制访问。i2cget默认将拒绝访问已经在存和驱动程序控制下的程序。所以一般最好不用
	-y 禁用交互模式。默认情况i2cget将会在使用或者称为干扰i2c总线前等待对方确认。-y则忽略此步骤,直接生效。
	-a 允许使用0x00-0x07和0x78-0x7f之间的地址
	一般而言上述操作都不推荐,仅仅用于自己调试。

2.2.2 示例

2.3 i2cset(写数据)

2.3.1 用法

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

	-r 写入值之后立即回读该值,并将结果与写入值进行比较

2.3.2 示例

写一个字节
i2cset -f -y I2CBUS CHIP-ADDRESS DATA-ADDRESS VALUE
写两个字节
i2cset -f -y I2CBUS CHIP-ADDRESS DATA-ADDRESS VALUE w
写N个字节
i2cset -f -y I2CBUS CHIP-ADDRESS DATA-ADDRESS VALUE1 ... VALUEN s
i2cset -f -y I2CBUS CHIP-ADDRESS DATA-ADDRESS VALUE1 ... VALUEN i

2.4 i2cdump(查看所有寄存器的值)

2.4.1 用法

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

	ADDRESS 设备地址

2.4.2 示例

2.5 i2ctransfer(i2c的读写)

此方法为i2c的读写

2.5.1 用法

Usage: i2ctransfer [-f] [-y] [-v] [-V] [-a] I2CBUS DESC [DATA] [DESC [DATA]]...
  I2CBUS is an integer or an I2C bus name
  DESC describes the transfer in the form: {r|w}LENGTH[@address]
    1) read/write-flag 2) LENGTH (range 0-65535) 3) I2C address (use last one if omitted)
  DATA are LENGTH bytes for a write message. They can be shortened by a suffix:
    = (keep value constant until LENGTH)
    + (increase value by 1 until LENGTH)
    - (decrease value by 1 until LENGTH)
    p (use pseudo random generator until LENGTH with value as seed)

Example (bus 0, read 8 byte at offset 0x64 from EEPROM at 0x50):
  # i2ctransfer 0 w1@0x50 0x64 r8
Example (same EEPROM, at offset 0x42 write 0xff 0xfe ... 0xf0):
  # i2ctransfer 0 w17@0x50 0x42 0xff-

	address 设备地址

2.5.2 示例

写2个数据0 0x4到0xle
i2ctransfer -f -y 0 w2@0xle 0 0x4

写数据0xc到地址0xle,然后读出两个数据
i2ctransfer -f -y 0 w1@0xle 0xc r2

标签:25,DATA,I2CBUS,ADDRESS,integer,byte,I2C,Tools
From: https://www.cnblogs.com/burnk/p/17399270.html

相关文章

  • ERROR:Could not build wheels for pycocotools, which is required to install pypro
    在创建了conda虚拟环境后,下载pycocotools包,出现这个错误,终端下载包失败,从网上直接将下载好的pycocotools包导入到,所需要环境(conda环境,本机环境)比如:anaconda\envs\py38\Lib\site-packages下面pycocotools包下载:链接:https://pan.baidu.com/s/1RsV1w0GRXJZ1rR3yPBg5FA提取码:88......
  • ABC254F 题解
    前言题目传送门!更好的阅读体验?这题trick就是更相减损术:\(\gcd\{a_1,a_2,a_3,\cdots,a_n\}=\gcd\{a_1,a_2-a_1,a_3-a_2,\cdots,a_n-a_{n-1}\}\)。思路有了这个trick之后这题就好做了。并不需要其他题解一样画表格,化简式子就行,过程并没有难点。\[\begin{a......
  • 给你安利一款国产良心软件uTools
    前言大家好,我是xiezhr最近由于换了新电脑,也是在各种折腾搭建开发环境,安装各种常用软件。今天呢给大家安利一款你可能没用过的国产良心软件uTools,这也是我刚刚拿到电脑后安装的第一款软件吧。第一次知道这软件是在B站刷程序员鱼皮up主视频的时候,up主推荐的。它能极大提工作和学习......
  • ASEMI代理ADI亚德诺ADUM1250ARZ-RL7原厂芯片
    编辑-ZADUM1250ARZ-RL7参数描述:型号:ADUM1250ARZ-RL7输入电源电流:2.8mA泄漏电流:0.01μA逻辑输入阈值:500-700mV逻辑低输出电压:600-900mV逻辑低输入电压:0.3V逻辑高输入电压:0.7V逻辑低输出电压:400mV输入电容:4pF储存温度:-55to+150℃工作温度:-40to+105℃  ADU......
  • 25条千川投放认知与经验,含泪无保留分享
    —认知篇— 01关于免费流量与付费流量,你必须知道的认知。 有人说:“我绝对不做付费流量!” 那免费流量真的那么香么?手段无非是, 高级点:1)玩命在短视频创意上面,画面上面,投入时间精力;(需要相对专业编导、视频、演员、主持人等,一般人做不到,不能速成)2)天生丽质、天赋异禀、有......
  • VSIX的入门练习:做一个TestFlow的ToolsWindow
    闲来无事,逛B站,发现了一个几乎没有人看的视频:【景尚科技】定义TestFlow文件_哔哩哔哩_bilibili 这个团队好牛啊,平均工作超过15年,博主也刚好工作15年,就也做一个TestFlow的界面。正好B站有教学视频:VisualStudio2022扩展开发入门/VSIX_哔哩哔哩_bilibili那就学习起来,做成的......
  • 问题解决:TNS-12543: TNS:destination host unreachable
    环境:11.2.0.3ADG(db11g\db11gadg\db11gcas)在自己先前克隆后的环境互相tnsping报错。tnsping本机ok,tnsping其他机器均报错:[oracle@db11g~]$tnspingjingyuTNSPingUtilityforLinux:Version11.2.0.3.0-Productionon13-MAY-202308:09:11Copyright(c)1997,......
  • stm32 AES256加密 串口IAP升级 bootloader程序 通过上位机将keil生成的
    stm32AES256加密串口IAP升级bootloader程序通过上位机将keil生成的BIN文件进行AES加密,得到新的加密文件,加密需要自己设置秘钥,加密升级包直接烧录不能运行。通过串口升级上位机将加密包发送到单片机,单片机接收到数据后,会根据你事先设置好的秘钥,对数据进行还原,再写入。解密完成,程......
  • leetcode 1251 平均售價
    leetcode1251平均售價selectr.product_id,round(sum(r.price*r.units)/sum(r.units),2)asaverage_pricefrom(selectp.product_id,p.price,u.unitsfromPricespleftjoinUnitsSolduonp.product_id=u.product_idwhereu.purchase_......
  • I2C总线 | I2C总线介绍
    I2C总线|I2C总线介绍目录I2C总线|I2C总线介绍I2C总线介绍I2C有如下特点:I2C总线术语I2C总线位传输IIC总线数据传输1.字节格式2.应答响应IIC总线寻址方式1.7位寻址2.10位寻址快速和高速模式1.快速模式2.高速模式I2C总线介绍I2C(Inter-IntergratedCircuit)总线(也称IIC......