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
如果你看到类似如下结果,说明设备已成功挂载:
pi@raspberrypi:~ $ 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。
目前我遇到的问题就这些,更多问题欢迎留言讨论!
留言