I2C — 两线串行协议

class I2C(...)

使用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# coding=utf-8
# This is a sample Python script.
from driver import I2C

print("-------------------i2c test--------------------")
i2c = I2C()
i2c.open("mpu6050")
regval = bytearray(1)
regval[0] = 0x5
print(regval)
ret = i2c.write(regval)
print(ret)
i2c.close()
print("-------------------i2c test--------------------")

配置信息

board.jon 语法和功能的详细配置项信息请参考 BoardConfig — 硬件端口配置文件(board.json)详解

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
    "version": "1.0.0",
    "io": {
      "mpu6050": {
        "type": "I2C",
        "port": 1,
        "addrWidth": 7,
        "freq": 100000,
        "mode": "master",
        "devAddr": 105
      }
    },
    "debugLevel": "DEBUG"
  }

函数接口


I2C.open(node)[源代码]

打开并根据board.json配置实例

参数

node – 节点名称,节点定义在board.json文件中

返回

0: 成功,其他: 失败

引发

OSError – EINVAL

I2C.write(dataBuffer, size)[源代码]

发送数据,I2C发送完成/超时后才会返

参数
  • dataBuffer – 待写入的数据,首个元素为待操作的寄存器地址,单字节。

  • size – 待写入的数据长度,包括寄存器地址信息。

返回

负数表示异常,正数或0表示真实写出的数据

引发

OSError – EINVAL

I2C.read(dataBuffer, size)[源代码]

读取数据,I2C读取完成/超时后才会返

参数
  • dataBuffer – 读出来数据的存储空间

  • size – 待读取的数据长度

返回

>0: 成功读取数据的字节数,其他: 失败

引发

OSError – EINVAL

I2C.writeRead(writeBuffer, writeSize, readBuffer, readSize)[源代码]

直接读取数据,接口底层实现寄存器的写出及读入操作

参数
  • writeBuffer – 待访问的寄存器地址

  • writeSize – 待访问的寄存器长度

  • readBuffer – 读取数据存储空间

  • readSize – 待读取的数据长度

返回

负数表示异常,正数或0表示真实写出的数据

引发

OSError – EINVAL

I2C.close()[源代码]

关闭实例

参数

返回

0: 成功,其他: 失败

引发

OSError – EINVAL