0°

(八)树莓派基础:Raspberry Pi I2C

介绍

  • I2C(内部集成电路)是一种同步串行协议,用于在两个设备之间传输数据。
  • 它是一个主从协议,可能有一个主设备或许多主设备和许多从设备,而SPI只有一个主设备。
  • 它通常用于短距离通信。
  • I2C器件具有7位或10位唯一地址。因此,要访问这些器件,主器件应通过7位或10位唯一地址对它们进行寻址。
  • I2C用于许多应用,如读取RTC(实时时钟),访问外部EEPROM存储器。它还用于陀螺仪,磁力计等传感器模块。
  • 它也被称为双线接口(TWI)协议。

Raspberry Pi I2C

  • Raspberry Pi拥有Broadcom处理器,该处理器具有Broadcom串行控制器(BSC),这是一种主模式,快速模式(400Kb / s)BSC控制器。BSC总线符合Philips I2C总线。
  • 它支持7位和10位寻址。
  • 它还具有BSC2主机,专用于HDMI接口,用户不应访问。
  • I2C总线/接口用于与外部设备(如RTC,MPU6050,磁力计等)仅通过2条线路进行通信。如果地址不同,我们可以使用I2C接口连接更多设备。

要在Raspberry Pi中访问I2C总线,我们应该进行一些额外的配置。Raspberry Pi有I2C引脚,如下所示:

Raspberry Pi I2C引脚

(八)树莓派基础:Raspberry Pi I2C

Raspberry Pi I2C引脚

Raspberry Pi I2C配置

在开始将I2C设备与Raspberry连接之前,需要先完成一些先前的配置。这些配置如下:

首先,我们应该在Raspberry Pi中启用I2C。我们可以通过终端启用它,如下所示:

sudo raspi-config
(八)树莓派基础:Raspberry Pi I2C
  • 选择Interfacing Configurations
(八)树莓派基础:Raspberry Pi I2C
  • 在界面选项中,选择 – > I2C
(八)树莓派基础:Raspberry Pi I2C
  • 启用I2C配置
(八)树莓派基础:Raspberry Pi I2C
(八)树莓派基础:Raspberry Pi I2C

在raspberry pi中启用i2c

当它要求重新启动时选择YES

现在,在启动raspberry Pi之后,我们可以通过输入以下命令来检查用户模式的I2C端口。

ls /dev/*i2c*

那么Pi会回复i2c端口的名字:

(八)树莓派基础:Raspberry Pi I2C

i2c端口列表

以上响应表示I2C接口的用户模式。较旧版本的Raspberry pi可能会响应i2c-0用户模式端口。

在Raspberry Pi上扫描或测试I2C设备

现在,我们可以通过安装i2c工具来测试/扫描连接到Raspberry Pi板的任何I2C设备。我们可以使用apt包管理器获取i2c工具。在Raspberry Pi终端中使用以下命令。

sudo apt-get install -y i2c-tools

现在将任何基于I2C的设备连接到用户模式端口,并使用以下命令扫描该端口,

sudo i2cdetect -y 1

然后它将响应设备地址。

例如

在这里,我们将基于I2C的MPU6050设备连接到Raspberry Pi并尝试检测下图所示的设备,

(八)树莓派基础:Raspberry Pi I2C

在Raspberry Pi上测试i2c

如果连接,i2cdetect命令将扫描I2C端口以获取设备的地址。

如果没有设备连接到I2C端口,则它将返回带( – – )的字段。

我们还可以使用以下命令获取或设置I2C设备的数据

i2cgeti2cset

例如

sudo i2cget -y I2C_user_mode_Port address_of_device Register_addresssudo i2cget 1 0x68 0x01    
sudo i2cget 1 0x68 0x01 

它将响应存在于地址0x01的寄存器中的数据。

使用SMBus访问I2C设备

我们可以使用SMBus访问Raspberry Pi上的I2C总线。SMBus是I2C总线/接口的子集。SMBus为基于I2C的器件提供支持。在编写程序以访问基于I2C的设备时,请使用SMBus命令。

当前内容已被隐藏,您需要登录才能查看
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
2 条回复 A 作者 M 管理员
  1. […] 要将HMC5883L磁力计模块与Raspberry Pi连接,我们应确保启用Raspberry Pi上的I2C协议。因此,在将HMC5883L与raspberry Pi连接之前,我们需要在Raspberry Pi上进行一些I2C配置,您可以参考之前的教程 Raspberry Pi I2C。 […]

  2. […] 要使用Raspberry Pi连接MPU6050,我们应该确保Raspberry Pi上的I2C协议已打开。因此,在使用树莓派连接MPU6050之前,我们需要在Raspberry Pi上进行一些I2C配置,您可以参考本教程基础部分的I2C设置教程。 […]

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论