我在使用I2C sensor和小猎犬骨黑的时候遇到了问题。BBB正在运行一个新更新的18.04 Ubuntu镜像,专门用于BBB。
我使用下面的引脚将传感器(VIN,GND,SCL,SDA)连接到BBB上相应的I2C2引脚(4,2,19,20)。
传感器应使用地址0x40,但(使用i2cdetect -r 2
)扫描I2C2时未显示传感器。
我已经用两个独立的传感器进行了测试,因为我一开始认为我可能以某种方式烧毁了原始传感器,但结果是相同的。实际上,当没有任何连接时,运行I2C2 scan命令会产生完全相同的结果。
我在很多地方读到默认情况下可能不会启用I2C2,但我假设在我的情况下启用了它,因为我可以扫描I2C2而不会收到错误。这个假设是不正确的吗?同样,这是一个新刷新的BBB,我没有启用/禁用任何东西-它应该处于默认状态。
我还验证了传感器和BBB之间的连接线。芯片上的VIN和GND之间的电压是3.3V,所以它肯定是在供电。
为什么我不能使用BBB连接到我的I2C传感器?
发布于 2020-01-11 16:29:25
这可能是因为您正在使用的源代码已过时,或者不是i2c的可行条目。
此外,还可以使用此命令确保i2c2端号可用:
config-pin p9.21 i2c
config-pin p9.22 i2c
这也可能行得通。如果这不起作用,请回复你的整个源码。
赛斯
另外,如果你有时间,如果你的软件不能安装你自己的i2c库,你可能想要一个i2c库来使用。他们有smbus2,你可以用pip和其他i2c库来安装。
发布于 2020-01-14 16:16:24
这里有一些你应该检查的东西(按随机顺序)。
列出i2cdetect -l
的所有I2C总线,并尝试所有这些总线。根据平台的不同,Linux中的i2c总线编号可能与数据手册和引脚中使用的外围设备编号不同。例如。"I2C2“可以是总线i2c-1或i2c-3 )。
使用示波器或逻辑分析仪查看是否正在驱动SCL和SDA线路。如果不是,请检查上面的公交车号码。如果是,则检查设备是否给出了ACK;如果没有,其他任何事情都不会起作用:仔细检查芯片从属地址。有便宜的逻辑分析器,你可以购买和使用pulseview。
只需为您的芯片加载Linux驱动程序(有关如何从用户空间进行快速测试的信息,请参阅the kernel docs )。然后查看检查设备是否出现,或者在探测时使用dmesg
查看任何内核错误消息。
https://stackoverflow.com/questions/59685432
复制相似问题