1、i2c-tools安装,参考网页https://www.cnblogs.com/raina/p/12068485.html
https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/地址下载或者
git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git
rk3399板子官方提供的Ubuntu16.04已带有编译器,可以直接把i2ctools源码文件拷贝到板子上编译make
进入i2c-tools/tools/目录
执行./i2cdetect -l
报错
./i2cdetect: error while loading shared libraries: libi2c.so.0: cannot open shared object file: No such file or directory
创建软链接
根据提示错误信息,进入i2c-tools/lib/目录,查看ls -l,发现i2ctools执行文件依赖“libi2c.so.0”文件,在板子上直接执行会提示加载库文件失败。通过编译后“lib”目录发现“libi2c.so.0”实际上为一个软链接文件,连接到“libi2c.so.0.1.1”
进入开发板的/lib目录
把i2c-tools/lib/libi2c.so.0.1.1拷贝到开发板/lib目录下:cp ~/i2c-tools/lib/libi2c.so.0.1.1 ./
执行ln -s libi2c.so.0.1.1 libi2c.so.0
修改权限或者直接root登陆执行:sudo chmod 777 /lib/libi2c.so.0
回到i2c-tools/目录
执行make install安装所有命令
2、i2c-tools使用(root权限,命令前面加sudo)
显示所有可用的I2C总线
i2cdetect -l
使用-y 总线号或总线名选项, 查看该总线下所有设备及设备地址:
i2cdetect -y 1 # 查看i2c-1总线下的设备
写(1表示总线号、w表示写、3表示3字节、0x36表示i2c设备地址、后面三个是要写的数据)
sudo i2ctransfer -f -y 1 w3@0x36 0x50 0x81 0x01
0x36为I2C设备的地址, 0x5081为要写的寄存器地址, 0x01为写入的值。
读(r3表示读3个字节)
sudo i2ctransfer -f -y 1 w2@0x36 0x30 0x0A r3
0x36为I2C设备的地址, 0x300A为要读的寄存器地址, r3为连续读3Byte
其他命令
i2cdump、i2cget、i2cset只适用于读写8位的寄存器地址, 功能完全可由i2ctransfer代替, 所以不做介绍。