Linux系统下如何调试I2C设备

Linux系统中,一些传感器通常挂载在I2C总线上,比如RTC和CSI等。我们在调试这些设备的时候,就需要了解Linux系统中操作I2C总线的方法。本文将详细介绍在Linux系统中如何调试I2C设备。

                    Linux系统下如何调试I2C设备

1、查看系统中的I2C总线: ls /dev/i2c-*  或 i2cdetect  -l

attachments-2020-04-DBstQTaW5e99682b8c504.png

attachments-2020-04-czYcWvlb5e9968d087eda.png

2、列出系统中I2C总线上挂载的设备:i2cdetect -y -r 0/1/2

attachments-2020-04-a0ZQEANV5e9969257b103.png可以看到,在I2C-1上挂载了一个设备,这个设备的I2C地址为0x51


3、查看设备寄存器的值:i2cdump -f -y 1 0x51

attachments-2020-04-0b8N62JM5e996ac4a8974.png


4、设置寄存器的值:i2cset -f -y 1 0x51 0x00 0xaa

attachments-2020-04-X2iHMiSM5e996bda6a909.png


5、i2cdump和i2cset默认设备的寄存器是8位的,而有些设备的寄存器则是16位的,因此16位的设备不能再通过i2cdump和i2cset来调试,只能使用i2ctransfer,首先在buildroot/busybox中查找是否提供该命令:

attachments-2020-04-5e4F8UB75e996ddad9d5f.png可以看到是没有提供i2ctransfer的,我们需要通过单独编译i2c-tools的方式来移植,i2c-tools源码可以在这里下载https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

我们选择最新的4.1版本

attachments-2020-04-f76BvjVg5e996eac6a2bb.png在ubuntu下解压并进入解压目录,新建install目录

attachments-2020-04-rP1OXeHW5e99724a014a2.png

接着编辑Makefile,设置交叉编译链和安装目录:

attachments-2020-04-SGJAfwRo5e9975b529883.png

执行make开始编译

attachments-2020-04-hZsIf5y75e997274e1c2b.png执行make install 安装

attachments-2020-04-Uh4OfPC85e9972acb1287.png将install/bin、install/sbin和install/lib目录的所有文件拷贝到板子文件系统/bin,/sbin和/lib目录下

attachments-2020-04-MucleCWQ5e997689ce31b.png

6、使用i2ctransfer读8位寄存器:i2ctransfer -f -y 1  w1@0x51 0xff r1

attachments-2020-04-ZXCeI4MZ5e997b7047c41.png    使用i2ctransfer读16位寄存器:i2ctransfer -f -y 1  w1@0x51 0x01 r2

attachments-2020-04-HfCrma265e997bf1dffa3.png

   使用i2ctransfer写8位寄存器的值:i2ctransfer -f -y 1  w2@0x51 0xff 0x11

attachments-2020-04-lY33VKNs5e997d5232f67.png    使用i2ctransfer写16位寄存器的值:i2ctransfer -f -y 1  w3@0x51 0x01 0xaa 0xbb

附:i2c-tools-4.1_for_imx6ull.rar

  • 发表于 2020-04-17 18:20
  • 阅读 ( 1428 )
  • 分类:i.MX6ULL

0 条评论

请先 登录 后评论
ronnie
ronnie

11 篇文章

作家榜 »

  1. BBelephant 13 文章
  2. ronnie 11 文章
  3. FU 9 文章
  4. toca 4 文章
  5. 大飞 3 文章
  6. Vivek 3 文章
  7. jack-fang 2 文章
  8. Bin 1 文章