在 Armbian 上从 i2c 2 读取 BME680
Posted
技术标签:
【中文标题】在 Armbian 上从 i2c 2 读取 BME680【英文标题】:Reading BME680 from i2c 2 on Armbian 【发布时间】:2019-11-14 13:35:10 【问题描述】:我正在尝试在 BananaPI + Armbian 5.65 上使用 BME680 传感器以及在同一 i2c 上使用 TSL 2651,但没有运气。 (作为参考,同样的配置也不适用于 RPi)
传感器单独连接时可以工作,但与 TSL 连接时则不能,同时 TSL 在 BME 后面连接时工作正常。
已连接 :: board -> BME680 -> TSL2561
我可以到达 TSL,因此 BME 处于唤醒状态且可到达,因为 TSL 必须通过 BME。
i2cdetect 两者都看到了,所以从系统上看,我觉得没问题
sudo i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
我将 Bosh 驱动程序与最初用于 RPI 的 .c https://github.com/twartzek/bme680-raspberry 一起使用,但由于 BananaPi M1 在 i2c/引脚分配等方面完全相同。我认为它应该可以工作。 当 BME 单独连接时,同样的代码可以工作。
但是连接在一起的接口只是返回
**** BME680 start measurements ****
user_i2c_write: No such device or address
我怀疑这只是意味着它在 i2c-2 (0x77) 上看不到设备,但系统可以。
我已经编辑了 bme680_main.c,所以它使用 BME680_I2C_ADDR_SECONDARY 和 g_i2cFid = open("/dev/i2c-2", O_RDWR);
不确定如何从这里开始,如果有的话;) 任何帮助/提示将不胜感激。
谢谢
【问题讨论】:
您是否可以使用示波器、逻辑分析仪或其他可让您查看总线波形的设备?那里可能有一些见解。 很遗憾我没有示波器或逻辑分析仪;/ 【参考方案1】:所以,我尝试将地址从 0x77 更改为 0x76,它按预期工作。不知道为什么,但看起来 SECONDARY 存在问题,系统方面看起来不错,但传感器是不可见的。当传感器物理连接到使用 0x76(SDO 到 GND)并相应更改代码时,它可以工作。
【讨论】:
以上是关于在 Armbian 上从 i2c 2 读取 BME680的主要内容,如果未能解决你的问题,请参考以下文章
如何在Raspberry Pi 3模块上启用I2C(与Android Things一起使用作为操作系统)
如何在 Android 上从蓝牙的 InputStream 中读取
Laravel 5.2不是在ubuntu上从.env上读取的