我通过I2C总线将RaspberryPi3连接到Adafruit MPL3115A2。我今天下载了最新版本的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 a b c d e f
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的一些建议编辑,包括禁用设备树并设置波特率以匹配我们从Windows IoT Core(400kHz,Raspbian似乎默认大约64kHz)看到的使用Saleae Logic Analyzer (无法为您提供链接,谷歌)。我们可以看到的唯一区别是Raspbian似乎有一个从写入到读取的离散变化,逻辑分析器可以检测到,而我们在IoT Core上没有看到。我们被困住了,任何帮助或想法都会很棒。
编辑:我会为raspbian-jessie添加一个标签,但是我的信誉不足
刚刚在RaspberryPi2上使用相同版本的jessie(一个新的SD卡上的新img)进行验证,但失败是一样的,所以看起来像Raspbian Jessie这里是吸烟枪。
答案 0 :(得分:0)
我们遇到了post中使用python传感器的答案。事实证明MPL3115A2需要重复启动事务,默认情况下在Raspbian上禁用。解决方案是在/etc/rc.local
exit 0
文件末尾添加以下行
echo -n 1 > /sys/module/i2c_bcm2708/parameters/combined