即使没有设备驱动程序和与之相关的DTS文件,在raspberry pi中检测到I2C设备也会让我感到困惑。
当我们使用以下命令时,它会出现吗?
ls /dev/i2c-*当我尝试用
i2cdetect -y bus_number发布于 2022-09-29 11:35:34
简言之:
..。当没有设备驱动程序和与其相关的DTS文件时。 当我们使用以下命令时,它会出现吗?
ls /dev/i2c-*
不是的。此命令将列出可用的I2C总线,而不是设备。
当我尝试用
i2cdetect -y bus_number
也许吧。在大多数情况下是的。
再详细阐述一下:
取决于它是什么类型的I2C设备,以及您想使用它做什么,您可能仍然能够与它进行通信。
最佳驾驶箱
如果您有相关的设备树更改来描述这个I2C设备(在它所处的总线上,它的地址、额外的信号(如中断引脚等)和相关的驱动程序(内置或作为一个模块,在Linux内核源代码中检查*_defconfig选项)--驱动程序应该在引导或手动加载模块时探测设备。
为什么是最好的案子?如果您有一个驱动程序,则不必考虑协议和编程,例如,从ADC设备读取一个值可能非常简单:
root@pi:~# cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw
291i2ctools
另一种方法是从i2cget包中使用i2ctools /i2cset工具。不需要更改设备树。使用这些工具,您可以在设备树中的任何启用的I2C总线上与任何无人认领的I2C设备对话。
您需要自己实现与I2C设备的通信。从安全和稳定的角度来看-- IMO,这是最坏的情况,但对硬件调试和一些情况下的初始启动都有好处。
例如这里。
关于i2cdetect的注意--这个命令试图检测特定总线上的设备,但是没有给出任何保证。根据man,i2cdetect
由于没有标准的I2C检测命令,i2cdetect使用任意SMBus命令(即SMBus快速写入和SMBus接收字节)探测设备。
https://stackoverflow.com/questions/73852492
复制相似问题