文章目录
在OpenMV的底层逻辑中,I2C被定义为一个类
I2C类—二线串行协议
I2C
是一个设备间传输的二线串行协议。其物理层包括两条线:SCL和SDA
,分别为时钟线和数据线。 OpenMV不再为SDA和SCL提供上拉,因此SDA和SCL需要外部上拉才能使I2C工作
I2C
对象创建在特定总线上。可在创建时或创建后初始化。
例子:
bus:总线 master:主机 slaves:从机
from pyb import I2C
i2c = I2C(2) # 在总线2上创建
i2c = I2C(2, I2C.MASTER) # 初始化为主机
或
i2c.init(I2C.MASTER, baudrate=20000) # 初始化为master,设置时钟频率为20000hz
i2c.init(I2C.SLAVE, addr=0x42) # 初始化为具有给定地址的从机
i2c.deinit() # 关闭外设
其中的两个常量
I2C.MASTER
将总线初始化为**"主机"模式**I2C.SLAVE
将总线初始化为**"从机"模式**
打印i2c
对象可以提供关于其配置的信息
发送与接受
发送:
i2c.send(‘abc’) # 发送3个字节
i2c.send(0x42) #发送由括号内给定的单个字节
接收:
i2c.recv(3) # 接收3个字节
要接收数据,先创建一个缓冲区bytearray
:
data = bytearray(3) # create a buffer 创建一个缓冲区
i2c.recv(data) # receive 3 bytes, writing them into data 接收3个字节,并将其写入数据
你可以指定一个超时时长(单位:毫秒):
i2c.send(b'123', timeout=2000) # timeout after 2 seconds 2秒后超时
主机必须指定接收方地址
i2c.init