class I2C – I2C通信

该类用于设备之间通信的双线协议。

构造函数

machine.I2C

class machine.I2C(I2Cn, MODE)

参数描述:

  • I2Cn - I2C 通路索引号,int类型,说明如下:
    I2C0 : 0 - 通道0
    I2C1 : 1 - 通道1
    I2C2 : 2 - 通道2

  • MODE - I2C 的工作模式,int类型,说明如下:
    STANDARD_MODE : 0 - 标准模式
    FAST_MODE 1 - 快速模式

class machine.I2C(I2Cn, MODE)

参数描述:

  • I2Cn - I2C 通路索引号,int类型,说明如下:
    I2C0 : 0 - 通道0
    I2C1 : 1 - 通道1
    I2C2 : 2 - 通道2

  • MODE - I2C 的工作模式,int类型,说明如下:
    STANDARD_MODE : 0 - 标准模式
    FAST_MODE 1 - 快速模式

  • 注:
    1.模块的Pin57与PIN11、Pin56 与Pin12 内部是同一个管脚。
class machine.I2C(I2Cn, MODE)

参数描述:

  • I2Cn - I2C 通路索引号,int类型,说明如下:
    I2C0 : 0 - 通道0
    I2C1 : 1 - 通道1
    I2C2 : 2 - 通道2

  • MODE - I2C 的工作模式,int类型,说明如下:
    STANDARD_MODE : 0 - 标准模式
    FAST_MODE 1 - 快速模式

  • 注:
    1.模块的Pin67与Pin57、Pin66 与Pin58 内部是同一个管脚。
    2.EC800ECN_LE&LQ&CG 的57/58引脚不可用。
class machine.I2C(I2Cn, MODE)

参数描述:

  • I2Cn - I2C 通路索引号,int类型,说明如下:
    I2C0 : 0 - 通道0
    I2C1 : 1 - 通道1
    I2C2 : 2 - 通道2

  • MODE - I2C 的工作模式,int类型,说明如下:
    STANDARD_MODE : 0 - 标准模式
    FAST_MODE 1 - 快速模式
    ENHANCED_FAST_MODE 2 - 快速模式增强

class machine.I2C(I2Cn, MODE, [group])

参数描述:

  • I2Cn - I2C 通路索引号,int类型,说明如下:
    I2C0 : 0 - 通道0
    I2C1 : 1 - 通道1
    I2C2 : 2 - 通道2

  • MODE - I2C 的工作模式,int类型,说明如下:
    STANDARD_MODE : 0 - 标准模式
    FAST_MODE 1 - 快速模式

  • [group] - 选择在不同管脚使用IIC,缺省值为0

示例:

>>> from machine import I2C
>>> # 创建I2C对象
>>> i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE,0)  # 返回I2C对象

I2C引脚对应关系:

I2C编号 SCL引脚 SDA引脚
I2C0 引脚11 引脚12
I2C1 引脚57 引56
I2C编号 SCL引脚 SDA引脚
I2C0 引脚41 引脚42
I2C1 引脚141 引142
I2C编号 SCL引脚 SDA引脚
I2C0 引脚41 引脚42
I2C编号 SCL引脚 SDA引脚
I2C0 引脚41 引脚42
I2C编号 SCL引脚 SDA引脚
I2C0 引脚23 引脚22
I2C1 引脚20 引脚21
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C编号 SCL引脚 SDA引脚
I2C0 引脚18 引脚19
I2C1 引脚40 引脚41
I2C2 引脚26 引脚25
I2C编号 SCL引脚 SDA引脚
I2C0 引脚9 引脚64
I2C1 引脚57 引脚56
I2C2 引脚67 引脚65
I2C编号 SCL引脚 SDA引脚
I2C0 引脚103 引脚114
I2C1 引脚40 引脚41
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C1 引脚68 引脚69
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C1 引脚68 引脚69
I2C编号 SCL引脚 SDA引脚
I2C1 引脚40 引脚41
I2C编号 SCL引脚 SDA引脚
I2C1 引脚57(11) 引脚56(12)
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67(57) 引脚66(58)
I2C编号 SCL引脚 SDA引脚
I2C0 引脚57 引脚56
I2C1 引脚11 引脚12
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C1 引脚57 引脚58
I2C2 引脚68 引脚69
I2C编号 SCL引脚 SDA引脚
I2C1 引脚40 引脚41
I2C编号 SCL引脚 SDA引脚
I2C1 引脚57 引脚56
I2C3 引脚11 引脚12
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C2 引脚68 引脚69
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C2 引脚68 引脚69
I2C编号 SCL引脚 SDA引脚
I2C0 引脚29 引脚23
I2C编号 SCL引脚 SDA引脚
I2C0 引脚30 引脚29
I2C编号 SCL引脚 SDA引脚
I2C0 引脚12 引脚26
I2C1 引脚43 引脚44
I2C编号 SCL引脚 SDA引脚
I2C0 引脚12 引脚26
I2C2 引脚43 引脚44
I2C编号 SCL引脚 SDA引脚
I2C1 引脚40 引脚41
I2C编号 SCL引脚 SDA引脚
I2C0 引脚67 引脚66
I2C1 引脚57 引脚58

方法

I2C.read

I2C.read(slaveaddress, addr,addr_len, r_data, datalen, delay)

该方法用于从 I2C 总线中读取数据。

参数描述:

  • slaveaddress - I2C 设备地址,int类型,传入七位设备地址即可,低位自动补1。
  • addr - I2C 寄存器地址,bytearray类型。
  • addr_len - 寄存器地址长度,int类型。
  • r_data - 接收数据的字节数组,bytearray类型。
  • datalen - 字节数组的长度,int类型。
  • delay - 延时,数据转换缓冲时间(单位ms),int类型。

返回值描述:

成功返回整型值 0 ,失败返回整型值 -1

I2C.write

I2C.write(slaveaddress, addr, addr_len, data, datalen)

该方法用于从 I2C 总线中写入数据。

参数描述:

  • slaveaddress - I2C 设备地址,int类型,传入七位设备地址即可,低位自动补0。
  • addr - I2C 寄存器地址,bytearray类型。
  • addr_len - 寄存器地址长度,int类型。
  • data - 写入的数据,bytearray类型。
  • datalen - 写入数据的长度,int类型。

返回值描述:

成功返回整型值 0 ,失败返回整型值 -1

使用示例:

需要连接设备使用。

import log
from machine import I2C
import utime

'''
I2C使用示例
'''

# 设置日志输出级别
log.basicConfig(level=log.INFO)
i2c_log = log.getLogger("I2C")


if __name__ == '__main__':
    I2C_SLAVE_ADDR = 0x1B  # I2C  设备地址
    WHO_AM_I = bytearray([0x02, 0])   # I2C  寄存器地址,以buff的方式传入,取第一个值,计算一个值的长度

    data = bytearray([0x12, 0])   # 输入对应指令
    i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE)  # 返回I2C对象
    i2c_obj.write(I2C_SLAVE_ADDR, WHO_AM_I, 1, data, 2) # 写入data

    r_data = bytearray(2)  # 创建长度为2的字节数组接收
    i2c_obj.read(I2C_SLAVE_ADDR, WHO_AM_I, 1, r_data, 2, 0)   # read
    i2c_log.info(r_data[0])
    i2c_log.info(r_data[1])

常量

常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C1 I2C通路索引号: 1
I2C.I2C3 I2C通路索引号: 3
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.I2C2 I2C通路索引号: 2
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.I2C2 I2C通路索引号: 2
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.I2C2 I2C通路索引号: 2
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.I2C1 I2C通路索引号: 1
I2C.I2C2 I2C通路索引号: 2
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
常量 说明
I2C.I2C0 I2C通路索引号: 0
I2C.STANDARD_MODE 标准模式
I2C.FAST_MODE 快速模式
I2C.ENHANCED_FAST_MODE 快速模式增强
型号选择: