启明云端分享|Linux系统下如何调试I2C设备
提示:Linux系統中,一些傳感器通常掛載在I2C總線上,比如RTC和CSI等。我們在調試這些設備的時候,就需要了解Linux系統中操作I2C總線的方法。本文將詳細介紹在Linux系統中如何調試I2C設備。
1、查看系統中的I2C總線: ls /dev/i2c-* 或 i2cdetect -l
2、列出系統中I2C總線上掛載的設備:i2cdetect -y -r 0/1/2
attachments-2020-04-a0ZQEANV5e9969257b103.png可以看到,在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中查找是否提供該命令:
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目錄
在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
總結
以上是生活随笔為你收集整理的启明云端分享|Linux系统下如何调试I2C设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启明云端分享|PX30核心板 怎么烧录
- 下一篇: 启明云端分享|ESP32-S3开发环境搭