该类用于设备之间通信的双线协议。
构造函数
machine.I2C
class machine.I2C(I2Cn, MODE)
参数描述:
class machine.I2C(I2Cn, MODE)
参数描述:
class machine.I2C(I2Cn, MODE)
参数描述:
class machine.I2C(I2Cn, MODE)
参数描述:
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
|
快速模式增强
|