【硬件外设使用】——I2C

I2C基本概念

I2C是"Inter-Integrated Circuit"的缩写,也被称为TWI (Two Wire Interface)。

它是一种串行通信协议,用于连接多个设备或组件。

I2C协议使用两根总线线(数据线SDA和时钟线SCL)进行通信。它允许多个设备连接到同一个总线上,并通过独特的地址进行标识。I2C通信协议最初由飞利浦公司开发,现在广泛应用于嵌入式系统、传感器和其他电子设备中。I2C协议具有高速传输、简单灵活和可靠性高等优点。

在这里插入图片描述

I2C通信协议

I2C通信协议是一种串行通信协议,在通信中使用两根总线线(数据线SDA和时钟线SCL)。下面是I2C通讯的基本原理:

  1. 时钟同步:I2C总线上的所有设备都遵循同一个时钟信号,这意味着当主设备发送时钟脉冲时,所有连接到I2C总线上的设备都会响应。

  2. 数据传输:I2C协议是一种基于帧的协议,每个数据帧包含8位数据,其中包括7位地址和1位读/写标志位。主设备通过向从设备发送地址将其选中,并指定操作是读还是写操作。之后,数据可以被传输到或从从设备接收。

  3. 确认应答:在每个数据字节传输后,接收方必须向发送方返回一个确认应答信号以指示成功接收数据。任何设备都可以发出一个非确认应答,以表明没有成功接收数据。

  4. 多主机操作:I2C协议支持多主机操作,允许多个主机设备轮流控制I2C总线。 主机设备与其他设备之间的优先级基于其发送的起始条件的优先级。

  5. 时钟速率:I2C协议支持四种不同的时钟速率,最高可达400kHz。时钟速率越高,数据传输速度越快,但是会增加线路的电磁干扰,从而降低了可靠性。

I2C通信协议简单、可靠,并被广泛用于各种电子设备之间的通信和控制。

I2C使用方法

pyb.i2c

pyb.i2c是MicroPython中的一个模块,用于控制I2C总线。通过使用pyb.i2c模块,可以轻松地与其他设备进行通信,例如传感器、电机驱动器和显示屏等。

MicroPython的pyb.i2c模块提供了一些常用的函数,用于发送和接收数据,以及设置I2C总线的速度和地址等参数。以下是一些常用的pyb.i2c函数:

  • init(): 初始化I2C总线。
  • send(): 发送数据到指定设备。
  • recv(): 从指定设备接收数据。
  • mem_write(): 将数据写入指定设备的指定寄存器。
  • mem_read(): 从指定设备的指定寄存器读取数据。

pyb.i2c模块还提供了其他一些函数,可以根据需要进行调用。使用pyb.i2c模块,可以轻松地实现多种应用程序,例如温度传感器、加速度计和压力传感器等。

machine.i2c

machine.i2c是MicroPython中的一个类,用于控制I2C总线。它与pyb.i2c非常相似,但是machine.i2c更加通用,因为它不依赖于特定的硬件平台。

通过使用machine.i2c类,可以轻松地与其他设备进行通信,例如传感器、电机驱动器和显示屏等。与pyb.i2c相同,machine.i2c类也提供了一些常用的方法,例如read()write()方法,用于读写数据。

以下是一些常用的machine.i2c方法:

  • init(): 初始化I2C总线。
  • readfrom(): 从指定设备读取数据。
  • writeto(): 将数据写入指定设备。
  • writeto_mem(): 将数据写入指定设备的指定寄存器。
  • readfrom_mem(): 从指定设备的指定寄存器读取数据。

machine.i2c类还提供了其他一些方法,可以根据需要进行调用。使用machine.i2c类,可以轻松地实现多种应用程序,例如温度传感器、加速度计和压力传感器等。

I2C可用的传感器

下面是一些常用的基于I2C总线的传感器:

  1. 温度传感器:例如DS18B20、LM75、TMP102、AM2320等。它们通常具有高精度和快速响应时间。
    在这里插入图片描述

  2. 加速度计:例如ADXL345、LSM303等。它们通常用于测量物体在X、Y、Z三个方向上的加速度。
    在这里插入图片描述

  3. 压力传感器:例如BMP180、BMP280等。它们通常用于测量大气压力和海平面高度等相关参数。
    在这里插入图片描述

  4. 光照传感器:例如TSL2561、BH1750等。它们通常用于监测环境中的光强度和亮度。
    在这里插入图片描述

  5. 湿度传感器:例如DHT11、DHT22、HTU21D等。它们通常用于测量周围环境的相对湿度和温度。
    在这里插入图片描述

以上只是一些常见的I2C传感器,实际上,还有很多其他类型的传感器可以使用I2C进行通信,例如气体传感器、距离传感器、心率传感器等。
I2C总线具有通用性和可扩展性,可以灵活地满足各种不同应用的需求。

猜你喜欢

转载自blog.csdn.net/weixin_45020839/article/details/130219340
今日推荐