i2c总线及设备测试工具i2ctools:i2cdetect、i2cdump、i2cget、i2cset

简介: 本文介绍了i2ctools工具集的使用,包括i2cdetect、i2cdump、i2cget和i2cset,这些工具有助于I2C设备的开发和调试,通过检测设备、读写寄存器和数据块来提高开发效率。

1 篇头

  • 在编写某I2C设备之前,可以使用开源的I2C测试工具,先对总线和设备的连通性做一个简单测试,或更进一步手动发送一些命令,进行设备的初始化、检验相关功能。
  • 本文即介绍i2ctools工具,它的源文件只有1个.c文件,但编译后有一组子工具。在全志的芯片平台上,基本都有携带,可以直接使用,例如H713以及本文的H618平台,掌握此工具后,可大幅提升I2C设备的开发和调试效率。

2 工具源码

  • 位置: android\external\toybox\toys\other\i2ctools.c

3 工具介绍

i2cdetect  -- 检测指定总线上的I2C设备
i2cdump  --  dump指定I2C设备的寄存器数值
i2cget  --  读取I2C数据
i2cset  --  设置I2C数据

4 查看可用工具

  • 可用tab补齐功能,先看下自己的平台是否有这些工具
console:/ # i2c(tab)
i2cdetect  i2cdump    i2cget     i2cset

5 查询可用总线

  • 进一步,可以看下系统当前已配置了哪几个I2C总线,以标准的Linux I2C总线的命名习惯,都是以i2c-开头,以总线的序号结尾,即i2c-num。
console:/ # ls -l /dev/i2c*                           
i2c-3   i2c-5

6 i2cdetect

  • 检测总线上可用设备的i2c addr
  • 如下所示,检测都1个设备,地址为0x1E
console:/ # i2cdetect --help                                                   
Toybox 0.8.4-android multicall binary: https://landley.net/toybox (see toybox --help)

usage: i2cdetect [-ary] BUS [FIRST LAST]
usage: i2cdetect -F BUS
usage: i2cdetect -l

Detect i2c devices.

-a      All addresses (0x00-0x7f rather than 0x03-0x77)
-F      Show functionality
-l      List all buses
-r      Probe with SMBus Read Byte
-y      Answer "yes" to confirmation prompts (for script use)
console:/ # i2cdetect -a                                                       
i2cdetect: bad args
1|console:/ # i2cdetect -a 3                                                   
Probe chips 0x00-0x7f on bus 3? (Y/n):y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
console:/ #

7 i2cset

  • 向指定I2C设备的寄存器地址写入数据
  • i2cset -y 3 0x1E 0x00 0x3 b
  • i2cset -y 总线序号 设备地址 寄存器地址 数值 模式
  • MODE:支持b字节、w双字节、i为数据块
console:/ # i2cset --help                                                      
Toybox 0.8.4-android multicall binary: https://landley.net/toybox (see toybox --help)

usage: i2cset [-fy] BUS CHIP ADDR VALUE... MODE

Write an i2c register. MODE is b for byte, w for 16-bit word, i for I2C block.

-f      Force access to busy devices
-y      Answer "yes" to confirmation prompts (for script use)
console:/ #
console:/ # i2cset -y 3 0x1E 0x00 0x3 b

8 i2cget

  • 读取I2C指定设备指定地址上的数据,一次只能读取1个字节
  • 如下我们将楼上写入的数据又读了出来,为0x03,数据一致
console:/ # i2cget --help                                                      
Toybox 0.8.4-android multicall binary: https://landley.net/toybox (see toybox --help)

usage: i2cget [-fy] BUS CHIP ADDR

Read an i2c register.

-f      Force access to busy devices
-y      Answer "yes" to confirmation prompts (for script use)
console:/ # 
console:/ # i2cget -y 3 0x1E 0x00    
0x03
console:/ #

9 i2cdump

  • dump i2c 指定设备的寄存器数值
console:/ # i2cdump --help                                                     
Toybox 0.8.4-android multicall binary: https://landley.net/toybox (see toybox --help)

usage: i2cdump [-fy] BUS CHIP

Dump i2c registers.

-f      Force access to busy devices
-y      Answer "yes" to confirmation prompts (for script use)
console:/ # 
console:/ # 
console:/ # i2cd       
i2cdetect  i2cdump
console:/ # i2cdump -y 3 0x1E                                                  
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 03 00 00 02 02 01 ee ee 00 80 00 00 00 00 00 00    ?..?????.?......
10: 00 01 00 03 ee ee ee ee ee 40 00 00 ff ff ee ee    .?.??????@..????
20: 05 13 01 00 00 ee ee ee 00 00 00 80 00 80 ee ee    ???..???...?.???
30: 00 00 ee 05 ee 00 ee 1b 00 00 00 00 00 00 00 00    ..???.??........
40: 82 84 80 93 80 8f 86 80 ee ee ee ee ee ee ee ee    ????????????????
50: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
60: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
70: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
80: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
90: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
a0: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
b0: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
c0: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
d0: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
e0: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
f0: ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee    ????????????????
console:/ #
相关文章
|
4月前
|
存储 测试技术
LabVIEW编程开发PCB自动测试设备
LabVIEW编程开发PCB自动测试设备
41 1
|
4月前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
570 0
|
24天前
|
测试技术 索引 CDN
hyengine wasm业务性能测试问题之测试设备如何解决
hyengine wasm业务性能测试问题之测试设备如何解决
|
2月前
|
安全 物联网 物联网安全
物联网设备的安全性评估与测试:技术深度解析
【7月更文挑战第7天】物联网设备的安全性评估与测试是保障物联网系统安全运行的重要环节。通过实施全面的安全性评估与测试,可以发现并修复设备中存在的安全漏洞和风险,提高整体安全防护能力。然而,由于物联网设备的多样性和复杂性以及安全标准与监管的缺失等挑战,测试工作需要不断创新和优化。未来,随着技术的不断进步和实践的深入,物联网设备的安全性评估与测试将更加完善和高效。
|
4月前
|
安全 物联网 测试技术
构建未来:Android与IoT设备的无缝交互深入探索软件自动化测试的未来趋势
【5月更文挑战第30天】在物联网(IoT)技术快速发展的当下,Android系统因其开放性和广泛的用户基础成为了连接智能设备的首选平台。本文将探讨如何通过现代Android开发技术实现智能手机与IoT设备的高效、稳定连接,并分析其中的挑战和解决方案。我们将深入挖掘Android系统的底层通信机制,提出创新的交互模式,并通过实例演示如何在Android应用中集成IoT控制功能,旨在为开发者提供一套可行的指导方案,促进IoT生态系统的进一步发展。
|
4月前
|
数据采集 数据管理 测试技术
LabVIEW开发新型电化学性能测试设备
LabVIEW开发新型电化学性能测试设备
36 6
|
4月前
|
编解码 测试技术 API
模拟手机设备:使用 Playwright 实现移动端自动化测试
本文介绍了使用Python的Playwright库进行移动设备模拟和自动化测试的方法。通过Playwright,开发者能模拟不同设备的硬件和软件特性,如屏幕尺寸、用户代理,以确保网站在移动设备上的表现。示例代码展示了如何模拟iPhone X并访问网站,之后可在此基础上编写测试代码以检验响应式布局和交互功能。Playwright的设备参数注册表支持多种设备,简化了移动端自动化测试的流程。
219 1
|
Linux 测试技术 Windows
可编程 USB 转串口适配器开发板应用于电子设备开发测试
可编程 USB 转串口适配器开发板应用于电子设备开发测试
可编程 USB 转串口适配器开发板应用于电子设备开发测试
|
4月前
|
测试技术
Appium 并行测试多个设备
Appium 并行测试多个设备
129 0
|
4月前
|
Java
100143. 统计已测试设备 --力扣 --JAVA
给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。 你的任务是按照顺序测试每个设备 i,执行以下测试操作: 如果 batteryPercentages[i] 大于 0: 增加 已测试设备的计数。 将下标在 [i + 1, n - 1] 的所有设备的电池百分比减少 1,确保它们的电池百分比 不会低于 0 ,即 batteryPercentages[j] = max(0, batteryPercentages[j] - 1)。 移动到下一个设备。 否则,移动到下一个设备而不执行任何测试。 返回一个整数,表示按顺序执行测试操作
44 0