0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是I2C通信协议?

电子设计 来源:电路城 作者:电路城 2021-04-26 15:08 次阅读

在本教程中,我们将学习如何在Raspberry Pi Pico中使用I2C引脚并遍历I2C扫描器代码。

硬件部件:

Raspberry Pi Pico板× 1个

目录

1.概述

2.什么是I2C通信协议

3. Raspberry Pi Pico中的I2C引脚

4.如何将Raspberry Pi Pico的I2C引脚与I2C传感器或模块一起使用?

5. Raspberry Pi Pico I2C扫描器代码

概述

在本教程中,我们将学习如何在Raspberry Pi Pico中使用I2C引脚并遍历I2C扫描器代码。Raspberry Pi Pico使用RP2040微控制器构建。该开发板共有36个GPIO引脚中的26个多功能GPIO引脚。在10 GPIO引脚不暴露的,因此它们不能被使用。在26个可用的GPIO引脚中,有2对I2C引脚将在本文中讨论。

我们将看到什么是I2C通信协议以及它如何工作。我们还将详细了解Raspberry Pi Pico的I2C引脚。我们将采取I2C扫描代码作为例子,并检查了几个I2C的I2C地址如何启用的传感器和模块。在此之前,您可以查看我们的Raspberry Pi Pico入门教程,以了解有关该模块的更多信息

什么是I2C通信协议

I2C(集成电路间)是一种同步,多主机,多从机,分组交换,单端,串行通信总线。它广泛用于在板内短距离通信中将低速外围IC连接到处理器和微控制器。

UART通信一样,I2C仅使用两条线在设备之间传输数据。

什么是I2C通信协议?

这两根线分别称为串行时钟线(SCL)和串行数据线(SDA)。要传输的数据通过SDA线发送,并与SCL的时钟信号同步。I2C网络上的所有设备/ IC均连接到相同的SCL和SDA线,如上所示。

连接到I2C总线的设备是主机或从机。在任何时刻,只有一个主机在I2C总线上保持活动状态。它控制SCL时钟线并决定要在SDA数据线上执行的操作。

什么是I2C通信协议?

响应此主设备指令的所有设备都是从设备。为了区分连接到同一I2C总线的多个从设备,每个从设备在物理上都分配有一个永久的7位地址。

什么是I2C通信协议?

当主设备要与从设备进行数据传输时,它会在SDA线上指定此特定从设备地址,然后继续进行传输。因此,有效的通信发生在主设备和特定从设备之间。除非所有其他从属设备的地址都由SDA线上的主设备指定,否则它们不会响应。

Raspberry Pi Pico中的I2C引脚

什么是I2C通信协议?

控制器RP2040芯片具有两个I2C控制器。您可以通过Raspberry Pi Pico的GPIO引脚访问两个I2C控制器。下表显示了GPIO引脚与两个I2C控制器的连接。

什么是I2C通信协议?

控制器的每个连接都可以通过多个GPIO引脚进行配置,如图所示。但是在使用I2C控制器之前,您应该在软件中配置要与特定I2C控制器一起使用的GPIO引脚。

Raspberry Pi Pico I2C引脚的功能

Raspberry Pi Pico具有RP2040芯片,该芯片支持以下功能:1.设备可以在主模式或从模式下工作,默认从地址为0x055

2. I2C引脚具有3种速度模式:标准(0至100 Kb / s ),快速(《= 400 Kb / s )和快速增强模式(《= 1000 Kb / s )

3.它既可以发送也可以接收缓冲区

4.也可用于中断和DMA模式

如何将Raspberry Pi Pico的I2C引脚与I2C传感器或模块一起使用?

现在让我们学习如何将Raspberry Pi Pico的I2C引脚与任何其他基于I2C的传感器或模块一起使用。在这种情况下,我们可以将Raspberry Pi Pico用作Mater Device ,将其他外部传感器或模块用作Slave Device 。

这是我们将3种不同的I2C器件连接到Pico板上的电路。这3种器件是BME680传感器,MPU6050传感器和0.96英寸OLED显示器。

什么是I2C通信协议?

在此示例中,我们将MPU6050 ,BME680和OLED Display的SDA和SCL引脚连接到Raspberry Pi Pico的公共I2C线。由于有多个I2C引脚,我们将仅使用Raspberry Pi Pico的一对I2C引脚。我们将使用GPIO8作为SDA0和GPIO9作为SCL0 。

什么是I2C通信协议?

Raspberry Pi Pico I2C扫描器代码

现在,让我们看看Raspberry Pi Pico I2C扫描器代码。该代码是用MicroPython编写的。您可以使用Thonny IDE或uPyCraft IDE将Raspberry Pi Pico连接到计算机。

以下代码将扫描连接到Raspberry Pi Pico的I2C引脚的所有传感器的I2C地址。复制代码,然后下载并运行。

import machine

sda=machine.Pin(8)

scl=machine.Pin(9)

i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)

print(‘Scan i2c bus.。.’)

devices = i2c.scan()

if len(devices) == 0:

print(“No i2c device !”)

else:

print(‘i2c devices found:’,len(devices))

for device in devices:

print(“Decimal address: ”,device,“ | Hexa address: ”,hex(device))

运行代码后,Micropython将尝试扫描连接到Pico Board的I2C设备。您最多可以连接127个I2C从设备。设备将扫描该地址并将其显示在Shell窗口中。

什么是I2C通信协议?

• 所述I2C地址的OLED显示器是60 ,其以十六进制为0x3C 2。

• 所述I2C地址的MPU6050是104 ,其以十六进制0x68 3。

• 该I2C地址的BME680是119 ,其十六进制是0x77。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7482

    浏览量

    151009
  • 传感器
    +关注

    关注

    2548

    文章

    50642

    浏览量

    751670
  • 通信协议
    +关注

    关注

    28

    文章

    854

    浏览量

    40250
收藏 人收藏

    评论

    相关推荐

    SPI、UART、I2C通信协议的区别

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议
    发表于 07-19 17:24 1908次阅读

    SPI、UART、I2C通信协议的区别

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议
    发表于 08-17 10:21 839次阅读
    SPI、UART、<b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>的区别

    如何使用Dave 3.1.10在XMC4400微控制器上实现I2c通信协议 软件?

    我一直在尝试使用 Dave 3.1.10 与 XMC4400 执行 I2c 通信协议,以实现传感器接口。 软件但我做不到。 Dave 3.1.10 的语法有所不同。 我无法使用 Dave
    发表于 06-03 07:21

    I2C通信协议手册找不到广为流传的内容

    在学习I2C通信协议的时候,翻了一遍I2C协议手册,却找不到:“在进行I2C通信发送数据的时候,
    发表于 04-05 00:27

    i2c通信协议

    1.1 i2c通信协议通信协议:用来实现数据传输。i2c物理总线:SCL(时钟线) SDA(数据线)i2c
    发表于 03-06 16:15

    I2C通信协议硬软件

    目录12C通信协议硬软件I2CAHT20测温湿度参考12C通信协议I2C
    发表于 08-23 07:42

    I2C通信协议简介

    一.I2C通信协议简介1.物理层I2C物理层有以下特点:I2C是支持多设备的总线,支持多个通讯主机、多个通讯从机I2C使用两条总线线路,SD
    发表于 01-13 07:20

    I2C通信协议的原理是什么

    I2C通信协议I2C通信原理I2C通信原理:I2C
    发表于 02-17 07:16

    我想知道我们可以在STM32F407中使用4x I2C通信协议吗?

    我想知道我可以在STM32F407中使用4x I2C通信协议吗?有哪位大神可以解答一下啊
    发表于 01-05 09:06

    实验八-I2C通信协议

    实验八-I2C通信协议,感兴趣的可以瞧一瞧。
    发表于 09-22 16:42 2次下载

    I2C通信协议应该如何学习

    我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习 I2C 有一定的帮助。一、 分析源代码学习 I2C
    发表于 04-28 08:00 21次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>应该如何学习

    MPU6050的I2C通信协议

    不同硬件有不同的I2C协议
    发表于 12-06 12:21 3次下载
    MPU6050的<b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>

    I2C通信协议及其工作原理

    "也许你听说过I2C,或者你也正在使用I2C,但你有没有了解过什么是I2CI2C是如何工作的?让我们一起了解一下什么是I2C?以及它的工作
    的头像 发表于 04-19 09:36 4793次阅读

    SPI和I2C通信协议:应用与区别

    本文深入解析了SPI和I2C这两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;I2C适用于低速控制和传感器数据传输,常用于温度传感器和ADC
    的头像 发表于 04-22 16:45 1638次阅读

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,I2C
    的头像 发表于 07-25 18:06 1283次阅读