1、查看系统中的I2C总线: ls /dev/i2c-* 或 i2cdetect -l
2、列出系统中I2C总线上挂载的设备:i2cdetect -y -r 0/1/2
可以看到,在I2C-1上挂载了一个设备,这个设备的I2C地址为0x51
3、查看设备寄存器的值:i2cdump -f -y 1 0x51
4、设置寄存器的值:i2cset -f -y 1 0x51 0x00 0xaa
5、i2cdump和i2cset默认设备的寄存器是8位的,而有些设备的寄存器则是16位的,因此16位的设备不能再通过i2cdump和i2cset来调试,只能使用i2ctransfer,首先在buildroot/busybox中查找是否提供该命令:
可以看到是没有提供i2ctransfer的,我们需要通过单独编译i2c-tools的方式来移植,i2c-tools源码可以在这里下载https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/
我们选择最新的4.1版本
在ubuntu下解压并进入解压目录,新建install目录
接着编辑Makefile,设置交叉编译链和安装目录:
执行make开始编译
执行make install 安装
将install/bin、install/sbin和install/lib目录的所有文件拷贝到板子文件系统/bin,/sbin和/lib目录下
6、使用i2ctransfer读8位寄存器:i2ctransfer -f -y 1 w1@0x51 0xff r1
使用i2ctransfer读16位寄存器:i2ctransfer -f -y 1 w1@0x51 0x01 r2
使用i2ctransfer写8位寄存器的值:i2ctransfer -f -y 1 w2@0x51 0xff 0x11
使用i2ctransfer写16位寄存器的值:i2ctransfer -f -y 1 w3@0x51 0x01 0xaa 0xbb
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!