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

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

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

#1 楼

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

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


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


该Wiki页面还提供了一些入门的低级GPIO代码示例,适用于多种语言。如果您需要重新了解I²C的实际情况,请参考RPi。

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

评论


关于将Edison Sparkfun GPIO引脚用于I2C的潜力有何评论?

–地理理论
2015年11月9日14:21

#2 楼

对此进行了大量讨论。这是我的阅读和了解的内容:


使用Debian“ squeeze”,默认内核中未内置I2C支持。
必须编译自定义内核使用i2cspi模块(这里是GIT树摘录)
到目前为止,已编写的驱动程序仅适用于3.2内核及更高版本,并且由于安全漏洞,作者无意支持3.1.9+漏洞(Chris Boot讨论了驱动程序)
幸运的是,目前处于RasPi测试版的Debian“ wheezy”发行版将安装该驱动程序。它带有3.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
2012年9月17日下午6:14

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

–达米安
2012年11月13日在8:57

#3 楼

这是我做过的一些示例


测量温度
模数转换器
生成信号


#4 楼

硬件:

如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


并取消将i2c_bcm2708/etc/modprobe.d/raspi-blacklist.conf列入黑名单,使/dev/i2c-0/dev/i2c-1永久显示。

从现在开始,您可以按照有关如何自己使用I²Cdel maestro的提示。

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

问候