OpenMV与I2C二线串行协议

本文介绍了OpenMV与I2C二线串行协议,详细讲解了如何在OpenMV上进行I2C通信,包括初始化、检测从机、读写数据等操作,同时提供了相关代码示例。
摘要由CSDN通过智能技术生成


在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值