I2C总线-i2c
描述
I2C总线,父对象为device.io,无子对象
事件
- detect: 开机检测到I2C总线上的设备时触发,事件方法定义onDetect(addr),参数addr为设备的地址
- poll :当轮询时间到时触发,事件方法定义onPoll(), 无参数
属性
名称 | 功能说明 | 脚本例子 |
---|---|---|
poll | 使能轮询 | device.io.i2c.poll=true 使能轮询 |
pollInterval | 轮询间隔(单位:毫秒) | device.io.i2c.pollInterval=500 设置轮询间隔为500毫秒 |
方法
名称 | 功能 | 脚本例子 |
---|---|---|
isSupported() | 检查硬件是否支持I2C总线 | var supported = device.io.i2c.isSupported(); |
read(addr, reg, count) | 从i2c总线设备地址addr寄存器地址reg上读取count个字节(如果设备没有寄存器地址,则reg传-1), 如果寄存器地址是多字节(如16位),参数reg传数组(如 [0x11, 0x22])注意:read返回值是个字节数组 | var data = device.io.i2c.read(0x50, 0x11, 2); //从i2c总线地址0x50的设备上对寄存器地址0x11读取2个字节(寄存器地址为8位) var data = device.io.i2c.read(0x50, [0x11,0x22], 2);//从i2c总线地址0x50的设备上对寄存器地址0x1122读取2个字节(寄存器地址为16位) var data = device.io.i2c.read(0x68, -1, 3); //从i2c总线地址0x68上读取3个字节(无寄存器地址) |
write(addr, data) | 写数据到地址为addr的i2c总线设备,data为字节数组(如果设备有寄存器地址为8位,那么数组data的第1个字节即为寄存器地址,如果为16位,则data的前两个字节为寄存器地址) | device.io.i2c.write(0x20, [0x10, 0x25]); // 向i2c总线地址为0x20的设备写入2个字节0x10, 0x25(无寄存器地址) var value = [0x55, 0x66, 0x77]; device.io.i2c.write(0x20, value); // 向i2c总线地址为0x20的设备写入3个字节, 如果寄存器地址为8位,则写入的有效数据为0x66, 0x77;如果寄存器地址为16位,则写入的有效数据为0x77 |