raspbian - I2C 在 Raspbian 中不工作

标签 raspbian i2c

我有一个 RaspberryPi3 连接到 Adafruit MPL3115A2通过 I2C 总线。我有最新版本的Raspbian Jessie今天下载了。我唯一做的就是运行

sudo rasp-config

启用 i2c 总线,然后重新启动并使用 i2ctools 安装

sudo apt-get install -y i2c-tools

当我运行时

i2cDetect -y 1

我在地址 0x60 上看到了我期望的设备。

0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60:60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --

但是,当我尝试使用

读取 WHO_AM_I 寄存器时

i2cget -y 1 0x60 0x0C b

i2cget -y 1 0x60 0x0C c

当我期待 0xC4 时,我得到 0x00。使用 ``sudo`` 运行上面的内容没有什么区别。

如果我关闭 Raspbian,请拔出 SD 卡,插入包含 Windows IoT Core 的 SD 卡并启动。我按照预期从 WHO_AM_I 寄存器读取 0xC4 没有问题。因此,我有理由确定这不是坏硬件。

我在网络上搜索寻求帮助(相信我,我不会再发布任何链接来证明这一点)。我尝试了对/boot/config.sys 的一些建议编辑,包括禁用设备树并使用 Saleae Logic 设置波特率以匹配我们从 Windows IoT Core 中看到的波特率(400kHz,Raspbian 似乎有大约 64kHz 的默认值)分析器(无法给您链接,请通过谷歌搜索)。我们可以看到的唯一区别是,Raspbian 似乎具有逻辑分析仪可以检测到的从写入到读取的离散变化,而我们在 IoT Core 上没有看到这种变化。我们陷入困境,任何帮助或想法都会很棒。

编辑:我会为 raspbian-jessie 添加一个标签,但可惜我的信誉不够

刚刚在 RaspberryPi2 上使用相同版本的 jessie(新 SD 卡上的新 img)进行验证,失败是相同的,因此看来 Raspbian Jessie 就是这里确凿的证据。

最佳答案

我们发现了隐藏在 post 中的答案。关于将传感器与 python 一起使用。事实证明,MPL3115A2 需要重复启动事务,而 Raspbian 上默认禁用该事务。解决方案是将以下行添加到 /etc/rc.local 文件末尾 exit 0

之前

echo -n 1 >/sys/module/i2c_bcm2708/parameters/combined

关于raspbian - I2C 在 Raspbian 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36903419/

相关文章:

raspberry-pi - 树莓派和 BLED112 (Bluegiga)

raspberry-pi - 如何在模拟器上运行 raspbian jessie?

linux - 如何使用 i2cget 从 i2c 读取数据?

python smbus/i2c 频率

arduino - WeMos D1 Mini (ESP8266) I2C 从模式不接收任何传入数据

ssh - Raspberry Pi 在重启时不会终止 SSH 连接

php - 如何限制apache2的资源?

linux - 如果出现错误或执行中断,请在树莓派上重启 python 脚本

arduino - ESP8266 到 ESP8266 i2C 通信

i2c - STM32如何设置从I2C端口