Linux i2cset 命令 - 向 I2C 设备写入数据
介绍
i2cset 是 Linux 系统中的一个命令行工具,用于向 I2C 设备写入数据。
I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接各种外设和传感器。i2cset 允许用户以不同的格式向指定的 I2C 设备和寄存器地址中写入数据,支持多种输入格式,包括字节、字和其他格式。
i2cset 命令由 i2c-tools 软件包提供,在 Debian/Ubuntu 系统上可以使用如下命令进行安装。
$ sudo apt install i2c-tools
语法:
i2cset [-f] [-y] [-m mask] [-r] [-a] i2cbus chip-address data-address [value] ...  [mode]
i2cset -V
选项:
- -f:即使设备繁忙,也强制访问该设备。注意这是危险操作,只有在你知道自己在做什么的情况下才可以使用,风险自负。
- -y:关闭交互模式。
- -m mask:掩码参数 mask(如果指定)描述了哪些位值将实际写入数据地址。掩码中设置为 1 的位是从值中获取的,而设置为 0 的位将从数据地址中读取,从而由操作保留。
- -r:写入后立即读回,并将结果与写入的值进行比较。这曾经是默认行为。
- -a:允许使用非常规地址(0x00 - 0x02 和 0x78 - 0x7f 之间的地址),一般不建议使用。
- -V:显示版本信息并退出。
参数:
- i2cbus:I2C 总线数字序号,对应于- i2cdetect -l扫描的序号。
- chip-address:指定 I2C 设备的地址,默认是 0x08 到 0x77 之间的整数。
- data-address:指定要读取的设备上的寄存器地址,是 0x00 到 0xFF 之间的整数。如果省略,则将读取当前活动的寄存器(如果所用芯片支持)。
- value: 要写入芯片上该位置的值。如果省略此参数,则发出短写入(short write)。
- mode:模式支持以下任意一种:- b(byte,默认)
- w(word)
- c(consecutive byte)
 
相关命令:i2cdetect、i2cdump、i2cget、i2ctransfer、sensors-detect、i2c-stub-from-dump
示例
将值 0x42 写入总线 1(i2c-1)上地址为 0x2d 的 I2C 设备的 8 位寄存器 0x11 中(需要用户确认):
i2cset 1 0x2d 0x11 0x42
立即清除总线 1(i2c-1)上地址为 0x2d 的 I2C 设备的 8 位寄存器 0x11 的 3 个最低有效位(无需用户确认):
i2cset -y -m 0x07 1 0x2d 0x11 0x00
将值 0x5000 写入总线 1(i2c-1)上地址为 0x48 的 I2C 设备的 16 位寄存器 0x02 中(需要用户确认):
i2cset 1 0x48 0x02 0x5000 w
