【硬件外设使用】——I2C
- I2C基本概念
- I2C通信协议
- I2C使用方法
- pyb.i2c
- machine.i2c
- I2C可用的传感器
I2C基本概念
I2C是"Inter-Integrated Circuit"的缩写,也被称为TWI (Two Wire Interface)。
它是一种串行通信协议,用于连接多个设备或组件。
I2C协议使用两根总线线(数据线SDA和时钟线SCL)进行通信。它允许多个设备连接到同一个总线上,并通过独特的地址进行标识。I2C通信协议最初由飞利浦公司开发,现在广泛应用于嵌入式系统、传感器和其他电子设备中。I2C协议具有高速传输、简单灵活和可靠性高等优点。
I2C通信协议
I2C通信协议是一种串行通信协议,在通信中使用两根总线线(数据线SDA和时钟线SCL)。下面是I2C通讯的基本原理:
时钟同步:I2C总线上的所有设备都遵循同一个时钟信号,这意味着当主设备发送时钟脉冲时,所有连接到I2C总线上的设备都会响应。
数据传输:I2C协议是一种基于帧的协议,每个数据帧包含8位数据,其中包括7位地址和1位读/写标志位。主设备通过向从设备发送地址将其选中,并指定操作是读还是写操作。之后,数据可以被传输到或从从设备接收。
确认应答:在每个数据字节传输后,接收方必须向发送方返回一个确认应答信号以指示成功接收数据。任何设备都可以发出一个非确认应答,以表明没有成功接收数据。
多主机操作:I2C协议支持多主机操作,允许多个主机设备轮流控制I2C总线。 主机设备与其他设备之间的优先级基于其发送的起始条件的优先级。
时钟速率: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总线的传感器:
-
温度传感器:例如DS18B20、LM75、TMP102、AM2320等。它们通常具有高精度和快速响应时间。
-
加速度计:例如ADXL345、LSM303等。它们通常用于测量物体在X、Y、Z三个方向上的加速度。
-
压力传感器:例如BMP180、BMP280等。它们通常用于测量大气压力和海平面高度等相关参数。
-
光照传感器:例如TSL2561、BH1750等。它们通常用于监测环境中的光强度和亮度。
-
湿度传感器:例如DHT11、DHT22、HTU21D等。它们通常用于测量周围环境的相对湿度和温度。
以上只是一些常见的I2C传感器,实际上,还有很多其他类型的传感器可以使用I2C进行通信,例如气体传感器、距离传感器、心率传感器等。
I2C总线具有通用性和可扩展性,可以灵活地满足各种不同应用的需求。