0 简介
IIC-Tools 是linux下的一个开源工具,使用它可以在命令行中队IIC设备进行访问。我们可以在https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 下载这个工具。
1 安装
下载解压完成后,修改Make file,使用交叉编译工具链对其进行编译,编译后再Tools文件夹下可以得到i2cdetect,i2cdump,i2cset,i2cget ,i2ctransfer这几个可执行文件:
i2cdetect – 用来列举 I2C bus 和上面所有的设备
i2cdump – 显示 i2c 设备所有 register 的值
i2cget – 读取 i2c 设备某个 register 的值
i2cset – 写入 i2c 设备某个 register 的值
i2ctransfer – 传输字节数据
编译生成可执行文件后,使用adp push将其移到开发板上就可以开始调试iic设备了。
2 使用
i2cdetct -l
查看系统中所有i2c adapter
可见,系统中有四个iic总线 0、1、2、4
i2cdetect -y <num>
罗列num号总线上挂载设备的地址
如图,标记UU的就代表这个地址上是有个设备的,我们向这个地址发送询问是会有应答的。上图的有效地址是:0x1c、0x20
i2cget -f -y <num> <i2cbus chip addr> <data addr>
读取num号总线上地址为i2cbus chip addr的设备寄存器地址为data addr的值
如图,读取了i2c-0总线上0x20 设备的0寄存器值 为0x49
i2cset -f -y <num> <i2cbus chip addr> <data addr> <data>
给num号总线上地址为i2cbus chip addr的设备寄存器地址为data addr的寄存器写入data值
如图,先使用i2cget读取了读取了i2c-0总线上0x20 设备的0x10寄存器值 为0x11,再使用i2cset设置其值为0x22,最后再使用i2cget验证是否完成设置。
i2cdump -f -y <num> <i2cbus chip addr>
读取num号总线i2cbus chip addr设备的所有寄存器地址
如图 读取了i2c-0 上地址为0x20设备的所有寄存器的值