如何使用I2C与传感器对话?


29

如何通过I²C接口与数字传感器通信?

硬件:
我可以使用Raspberry Pi的GPIO上的哪些引脚?

软件:
哪些I²C库可用?

Answers:


23

这里有很多关于RPi的GPIO的信息:http ://elinux.org/Rpi_Low-level_peripherals

根据它,您可以为I²C编程任何GPIO引脚,但是:

引脚3(SDA0)和引脚5(SCL0)被预置为用作I²C接口。因此,板上有用于这些引脚的1.8 km上拉电阻。

该Wiki页面还提供了一些入门指南,介绍了用于各种语言的一些低级GPIO代码示例。如果你需要什么I²C实际上是一种复习,这里有一个这也需要RPI的考虑。

对于特定的I²C控制,此python库可能会有所帮助,此博客文章中对此进行了讨论,其中包括代码示例。


对将Edison Sparkfun GPIO引脚用于I2C的潜力有何评论?
geotheory,2015年

7

对此进行了大量讨论。这是我的阅读和阅读所带给我的:

  1. I2C支持未通过Debian“ squeeze”内置到默认内核中
  2. 自定义内核将必须使用i2cspi模块进行编译(这是GIT树摘录
  3. 到目前为止已编写的驱动程序仅适用于3.2内核及更高版本,由于存在漏洞,作者无意支持3.1.9+(Chris Boot讨论了该驱动程序
  4. 幸运的是,目前正处于RasPi测试版的Debian“ wheezy”发行版中将安装该驱动程序。它带有3.2内核。

2
是的,正如您提到的,它已内置在标准内核中-官方Raspbian和Debian Wheezy发行版。我在这里遵循了一些易于遵循的建议,并且在/ dev中显示了I2C设备... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 如果需要,这里还有更多详细信息:robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

要获得更详细的信息,请在此处而不是在Web链接上保留数据,并希望这不会过时:从Wheezy 2012-09-18图像开始,您编辑/etc/modprobe.d/raspi-blacklist.conf并注释了i2c-bcm2708; 的条目。然后编辑/etc/modules并追加i2c-dev; 然后重启。现在,您应该有一个/dev/i2c-0非常容易使用的特殊文件。
达米安


2

硬件:

如Tapio所述,该硬件已在http://elinux.org/Rpi_Low-level_peripherals中进行了详细记录

软件:

Linux用户空间(#include <linux/i2c-dev.h>)中有一个i2c-dev标头。此外,您需要一个字符伪指令来读取。这可以通过加载正确的模块来完成。i2c_bcm2708用于低级驱动程序并i2c-dev用于生成总线的字符决策。申请...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

快速加载它们。申请...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

和unblacklist i2c_bcm2708/etc/modprobe.d/raspi-blacklist.conf/dev/i2c-0/dev/i2c-1永久显示出来。

从现在开始,您可以遵循有关如何亲自使用I²Cdel maestro 的提示

我比较喜欢这种方法,因为它与平台无关。linux/i2c-dev.h只要存在低级别的I²C驱动程序,您就可以与其他设备一起使用。

问候

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.