I2C接口是嵌入式领域非常重要的一个总线接口,能够通过挂载的器件的地址来访问不同的器件。目前很多传感器都支持I2C接口,如MPU6050,PCF8591以及ADS1115等。下面我们说一下树莓派I2C接口的使用方法。

I2C总线通过地址来区分不同的设备,因此多个设备可以共享总线,只要地址不冲突即可!

使能I2C接口

使用如下命令进入raspi-config命令界面:

sudo raspi-config

你将看到如下界面,选择Interfacing Options

选中I2C后回车:

选中Yes并确定:

选中Ok并确定:

当出现如下界面时选中Yes并确定:

此时I2C接口已被激活,但为了方便使用,我们还需要安装一些必要的软件。

安装必要的工具

sudo update
sudo apt-get install i2c-tools python-smbus

I2C总线接线

需要注意的是,树莓派使用3号和5号引脚来与外部I2C设备通信。27与28号引脚也具有I2C通信的功能,但并不常用。具体原因可见这个讨论

检查设备是否挂载

我们使用如下命令来确定I2C总线设备是否挂载成功:

Model B设备:

i2cdetect -y 1

其余设备:

i2cdetect -y 0

如果你看到类似如下结果,说明设备已成功挂载:

[email protected]:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

上述是挂载PCF8591成功后的结果,如果你看到的全是横杠,说明挂载失败,需要依次排查问题。

排查问题

无法找到设备

这个问题通常出现在接线错误的时候,可能的原因也比较多,一般分为以下几种:

未配置外设地址

一般来说I2C总线设备都有地址选择端口,因此需要按照数据手册正确配置地址方可使用。

接线错误

如前所述,树莓怕的I2C接口需要接在3号和5号引脚,接线错误时无法识别设备。

未接通外设电源

这个问题解决就很简单啦,接上VCC和GND即可。

多个同类设备只能找到一个

这个问题一般是地址选择端口接线的问题。以PCF8591为例,其地址端口有三个,通过配置不同的高低电平,可以在同一I2C总线上挂载8个。如果所有的器件的三个地址端口都接地,那么在I2C总线上便只能看到一个PCF8591。

目前我遇到的问题就这些,更多问题欢迎留言讨论!

最后修改日期:2020年6月16日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。