I²C,是 Inter-Integrated Circuit(集成电路总线)的缩写,它是一种常见的串行总线结构,用以连接整体电路,实现高低速设备同步和通信。
如果想更多的了解 I²C,可以到这里。
前提条件
使用 I²C
请根据外设的数据手册,确定外设的接口类型为 I²C。
配置 driver.json
确定自己的硬件接口是 I²C 后,需要声明硬件接口类型为 I²C。 在 driver.json 文件里的 inputs,指定接口的类型(type)为 I²C。{
...
"inputs": {
"i2c": {
"type": "i2c",
"args": {
"address": -1
}
}
}
}
接口属性
I²C 接口可以配置以下属性:
address
定义 I²C 接口的地址,需要用户从器件的数据手册中获得。
编写驱动
读取功能
驱动程序可以从总线上读取数据,下面是一个例子,根据数据手册,需要设置指令为0x01,然后,读取的值在回调函数中返回:function read(callback) {
i2c.readBytes(0x01, function (error, value) {
if (error) {
callback(error);
return;
}
callback(undefined, 0xff - value);
});
}
写入功能
驱动程序可以向总线上写入数据,下面是一个向总线上写入一个字节的例子:var data = 0;
...
i2c.writeByte(-1, data);
如果想了解更多细节,请参考其 API 文档。
应用
光照传感器(GY-30)
光照传感器是一个可以获取亮度的传感器,根据数据手册,它需要配置一个地址为35的 I²C 接口。我们在driver.json 文件中声明一个类型为 I²C 的接口,设定接口地址为 35。{
"models": [
"GY-30"
],
"inputs": {
"i2c": {
"i2c": {
"type": "i2c",
"args": {
"address": 35
}
}
}
}
}
我们为光照传感器提供得到当前光强(getIlluminance)的接口,其具体实现方式如下:
- getIlluminance,先向 I²C 接口写入设置字节(0x20),延迟一段时间后,从 I²C 接口读取两个字节数据,返回经过计算的光照强度。
; |