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 - 快速模式

示例:

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

I2C引脚对应关系:

适用平台I2C编号SCL引脚SDA引脚
BC25PAI2C0引脚23引脚22
BC25PAI2C1引脚20引脚21

方法 #

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])

常量 #

适用平台常量说明
BC25PAI2C.I2C0I2C通路索引号: 0
BC25PAI2C.I2C1I2C通路索引号: 1
BC25PAI2C.STANDARD_MODE标准模式
BC25PAI2C.FAST_MODE快速模式
型号选择: