I2C接口开发手册
概要
小龟小车定制了I2C访问语法,让各位小伙伴能更简单友好快速地使用I2C协议。
注意:如果I2C总线使用默认100K速率时,则以下API都可以直接使用,无需先执行car.i2c.open
初始化总线。
API
car.i2c.write(i2c_address:int, [register:int,] data:Any)->bool
向指定的I2C地址发送写指令和数据。
可以省略register仅两个参数。
参数data支持三种类型:bytes、int、list。
注意:如果在不调用car.i2c.open的情况下,直接调用本函数,则会以100K的默认速率初始化I2C总线。
#往地址为32的设备写入0xff,0xff两个字节的数据
car.i2c.write(32, b"\xff\xff")
#往地址为32的设备写入0xff一个字节的数据
car.i2c.write(32, 0xff)
#往地址为32的设备写入0xff,0xff两个字节的数据
car.i2c.write(32, [0x11, 0x22])
#往地址为32的设备的寄存器15写入0xff一个字节的数据
car.i2c.write(32, 15, 0xff)
参数:
- i2c_address: 设备的I2C地址
- register: 可选参数,指定本次写入的设备的寄存器地址,一个字节。
- data: 需要写入设备的数据,支持三种类型:
int类型:写入单个字节的值,范围0-255,
list类型:写入一组由单字节数值组成的列表,[int, int]
bytes/ByteArray类型:写入一组bytes值,如 b"\xFF\xCD"
car.i2c.read(i2c_address:int, [register:int,] count:int=1)->bytes
从指定地址的设备读取数据。
可以省略register仅两个参数。
#从地址为32的设备读取一个字节数据
car.i2c.read(32)
#结果:b"\xCF"
#从地址为32的设备读取两个字节数据
car.i2c.read(32, count=2)
#结果:b"\xCF\xD9"
#从地址为32的设备的15寄存器地址读取一个字节数据
car.i2c.read(32, 15)
#结果:b"\xCF"
参数:
- i2c_address: 设备的I2C地址。
- register: 可选参数,指定本次写入的设备的寄存器地址,一个字节。
- count: 期望读取的数据长度,默认为1个字节。
car.i2c.open(clock_speed:int=100000)->bool
以指定速率初始化I2C总线,默认速率为100K。
注意:如果期望100K速率的场合,可以不用调用该函数,直接在调用write/read的时候,系统会自动以该速率初始化总线。
#以默认速率初始化I2C总线
car.i2c.open()
#结果:True
#以400K速率初始化I2C总线
car.i2c.open(400000)
#结果:True
参数:
- clock_speed: I2C总线速率,默认100K,最大支持1M
car.i2c.close()
关闭I2C总线。
#关闭I2C总线
car.i2c.close()
car.i2c.scan()
扫描获取I2C总线上的所有设备地址。
#关闭I2C总线
car.i2c.scan()
#结果:[12,60,78]