当前位置: 首页 > news >正文

Linux学习笔记--i2cget 命令

i2cget 是 Linux 下 i2c-tools 工具包中的一个命令行工具,用于从 I2C 设备读取数据

所属工具包

i2c-tools 包含:
- i2cget: 从I2C设备读取数据
- i2cset: 向I2C设备写入数据  
- i2cdetect: 扫描I2C总线上的设备
- i2cdump: 转储I2C设备寄存器内容
- i2ctransfer: 执行复杂的I2C传输

安装

# Ubuntu/Debian
sudo apt-get install i2c-tools# CentOS/RHEL
sudo yum install i2c-tools

命令语法

i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]

参数详解

必需参数

  • I2CBUS:I2C总线编号(如:0, 1, 2...)

  • CHIP-ADDRESS:I2C设备地址(7位地址,如0x50)

可选参数

  • DATA-ADDRESS:要读取的寄存器地址

  • MODE:读取模式

    • b:读取一个字节(默认)

    • w:读取一个字(2字节)

    • c:写入寄存器地址后读取一个字节

    • i:连续读取多个字节

选项标志

  • -f:强制访问,即使设备忙也执行

  • -y:禁用交互模式,自动回答"yes"

  • -a:允许使用10位设备地址

使用示例

示例1:读取设备ID(无寄存器地址)

# 从I2C总线1上的设备0x50读取一个字节
i2cget -y 1 0x50

示例2:读取特定寄存器

# 读取设备0x1e的寄存器0x0A(红外数据低字节)
i2cget -y 1 0x1e 0x0A

示例3:读取16位数据(字)

# 从设备0x1e的寄存器0x0A读取2字节数据
i2cget -y 1 0x1e 0x0A w

输出0x3412(低字节0x12,高字节0x34)

示例4:连续读取多个字节

# 从设备0x50的寄存器0x00开始连续读取8字节
i2cget -y 1 0x50 0x00 i 8

在实际驱动中的应用场景

对应AP3216C驱动的读取操作

// 驱动中的读取代码
val = i2c_smbus_read_word_data(ap3216c_client, 0xA);// 对应的i2cget命令
i2cget -y 1 0x1e 0x0A w

调试传感器数据

# 读取AP3216C的3个传感器数据(模拟驱动中的read函数)
echo "IR数据:"
i2cget -y 1 0x1e 0x0A w
echo "光强数据:"
i2cget -y 1 0x1e 0x0C w  
echo "距离数据:"
i2cget -y 1 0x1e 0x0E w

与相关命令配合使用

1. 先检测设备是否存在

# 扫描I2C总线1上的设备
i2cdetect -y 1

输出

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --    

2. 读取设备所有寄存器

# 转储设备0x1e的所有寄存器
i2cdump -y 1 0x1e

3. 写入配置后再读取

# 先写入配置,然后读取数据(模拟驱动的open函数)
# 复位设备
i2cset -y 1 0x1e 0x00 0x04
sleep 0.02
# 启动测量
i2cset -y 1 0x1e 0x00 0x03  
sleep 0.25
# 读取数据
i2cget -y 1 0x1e 0x0A w

在实际项目中的用途

硬件调试

# 快速验证I2C设备是否正常工作
#!/bin/bash
BUS=1
DEVICE=0x1e# 检查设备是否响应
if i2cget -y $BUS $DEVICE > /dev/null 2>&1; thenecho "设备 0x${DEVICE:2} 在总线 $BUS 上响应正常"# 读取设备ID或其他识别寄存器DEVICE_ID=$(i2cget -y $BUS $DEVICE 0x00)echo "设备ID: $DEVICE_ID"
elseecho "设备无响应,请检查连接"
fi

传感器数据监控

# 实时监控传感器数据
while true; doclearecho "=== AP3216C 传感器数据 ==="echo "IR数据:    $(i2cget -y 1 0x1e 0x0A w 2>/dev/null || echo '读取失败')"echo "光强数据:  $(i2cget -y 1 0x1e 0x0C w 2>/dev/null || echo '读取失败')" echo "距离数据:  $(i2cget -y 1 0x1e 0x0E w 2>/dev/null || echo '读取失败')"sleep 1
done

http://www.dtcms.com/a/445692.html

相关文章:

  • 网站建设的标签指的是响应式网页设计图片
  • 用 CodeBuddy CLI + Prompt,从零到可运行:前后端混合管理系统的高效实战
  • 电源——电荷泵详解
  • 榆林国贸网站建设网站的关键词挖掘方式
  • 从思路到落地:用 Redis 搭建超低延迟在线特征存储库
  • sosdp
  • 快速了解BERT
  • 在线Deflate压缩工具(支持添加zlib头及无zlib头模式)
  • 第14节-增强表结构-ALTER-TABLE
  • Ubuntu之apt更新源
  • T527 IR-RX 调试
  • 低成本能谱仪设计:基于分立器件的模拟前端与数字后端实现方案
  • 计算机视觉的数据收集与标注
  • LeetCode:92.最小路径和
  • 百度竞价推广属于什么广告广东网站se0优化公司
  • Anaconda路径配置
  • GitHub 热榜项目 - 日榜(2025-10-05)
  • java中Math.random()和random()方法区别
  • Django SimpleUI 详解:现代化的Django Admin界面美化方案
  • 网站开发客户流程 6个阶段简述常用的网站开发软件
  • 区块链分层学:新的开始
  • Qt与CMakeLists.txt
  • Ubuntu20.04安装Anaconda3-2025.06
  • VirtualBox中ubuntu1804虚拟机共享文件夹设置
  • 基于单片机的环境监测智能报警系统的设计(论文+源码)
  • 成都网页制作推广合肥网站seo报价
  • 短波红外相机在工业视觉检测中的应用
  • 马鞍山市建设银行网站科右前旗建设局网站
  • 【傻呱呱】托管项目到GitHub(纯前端UI操作)
  • 神经网络之激活函数Softmax