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

    文章

    6789

    浏览量

    147564
  • 传感器
    +关注

    关注

    2522

    文章

    47984

    浏览量

    739682
  • 通信协议
    +关注

    关注

    28

    文章

    732

    浏览量

    39689
收藏 人收藏

    评论

    相关推荐

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

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

    I2C通信协议时序解读

    应答 {SDA=1;SCL=1;SDA=0; } void IIC_WriteByte(uchar date)//单字节写 {uchar i;for(i=0;i
    发表于 07-06 00:16

    I2C通信协议介绍

    的串行通信协议主要有EIA-232、EIA-232、EIA-485、USB、IEEE 1394几种: 以下着重介绍I2C总线:一、I2C总线概述:I2C总线是PHLIPS公司推出的一种
    发表于 07-19 02:36

    PIC32 I2C通信协议与PCA9685

    DRVII2。PCA9685用一个拉杆工作得很好,我检查了几次PIN连接。我在I2C通信协议中忘了什么东西了吗?谢谢你的帮助 以上来自于百度翻译 以下为原文 HelloI tried without
    发表于 11-01 17:11

    M24SR i2c通信协议功能是什么?

    和M24SR之间的通信,并且它可以很好地处理短NDEF消息。但是当我阅读长NDEF消息时,我注意到了奇怪的行为。阅读ST文档后出现以下问题:1)DID字段的目的是什么?2)是否有必要回答S(WTX)?3)何时可以发送S(WTX)命令?任何帮助将不胜感激。
    发表于 08-22 10:32

    i2c通信协议

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

    怎样去设计I2C总线底层驱动?

    I2C通信协议是什么?Windows CE系统驱动的特点有哪些?怎样去设计I2C总线底层驱动?
    发表于 04-27 07:12

    I2C通信协议硬软件

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

    I2C通信协议简介

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

    STM32的I2C特性是什么?

    I2C通信协议具有哪些特点?常见的I2C通信系统有哪些?STM32的I2C特性是什么?
    发表于 01-18 07:44

    MPU6050的I2C通信协议资料分享

    不同硬件有不同的I2C协议
    发表于 02-10 06:45

    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 20次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>应该如何学习