在 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一起使用作为操作系统)

裸机上I2C的设计

如何在 Android 上从蓝牙的 InputStream 中读取

Laravel 5.2不是在ubuntu上从.env上读取的

在 Windows 上从 PHP 读取 Microsoft Excel 文件

QProcess -> 在 Linux 上从 sftp 读取标准输出