I2C-串行总线

本文介绍I2C-串行总线支持函数的参数说明及示例。

硬件平台

产品型号

是否支持

硬件类型

固件版本号

HaaS600Kit

开发板

4.0.1

HaaS510

DTU

4.0.1

HaaS520

DTU

4.0.1

HaaS530

DTU

4.0.1

HaaS531

DTU

4.0.1

HaaS632-LT32V

模组

4.0.1

HaaS600-EC600S

模组

4.0.1

HaaS600-EC600N

模组

4.0.1

HaaS600-EC600U

模组

4.0.1

HaaS600-N715

模组

4.0.1

open(Object options)

打开I2C,创建I2C实例。

入参

属性

类型

是否必填

描述

id

String

指定要打开的I2C端口。

devAddr

Number

挂载的I2C设备从机地址。

success

Function

创建I2C实例成功时的回调函数。

fail

Function

创建I2C实例失败时的回调函数。

返回

I2C实例。

write(Uint8Array data)

发送数据,该函数为阻塞函数,I2C发送完成后才会返回。

入参

属性

类型

是否必填

描述

data

Uint8Array

要发送的数据,data[0]为寄存器地址。

返回

写成功返回值为0。

writeMem(Number memaddr, Uint8Array data)

向寄存器地址memaddr发送数据,该函数为阻塞函数,I2C发送完成后才会返回。

入参

属性

类型

是否必填

描述

memaddr

Number

寄存器地址memaddr

data

Uint8Array

要发送的数据。

返回

写成功返回值为0。

read(Number bytes)

主动读取指定bytes的I2C数据,无需配置寄存器地址,该函数为阻塞函数。

入参

属性

类型

是否必填

描述

bytes

Number

需要读取的字节个数。

返回

读取到的I2C数据,Uint8Array类型。

readMem(Number memaddr, Number bytes)

主动向寄存器地址memaddr读取指定bytes的I2C数据。该函数为阻塞函数。

入参

属性

类型

是否必填

描述

memaddr

Number

寄存器地址memaddr

bytes

Number

需要读取的字节个数。

返回

读取到的I2C数据,Uint8Array类型。

close()

关闭I2C实例。

入参

无。

返回

无。

示例代码

板级配置

板级详细配置说明,请参见app.json-全局配置文件

硬件平台
产品型号	是否支持	硬件类型	固件版本号
HaaS600Kit	是	开发板	4.0.1
HaaS510	否	DTU	4.0.1
HaaS520	否	DTU	4.0.1
HaaS530	否	DTU	4.0.1
HaaS531	否	DTU	4.0.1
HaaS632-LT32V	是	模组	4.0.1
HaaS600-EC600S 	是	模组	4.0.1
HaaS600-EC600N	是	模组	4.0.1
HaaS600-EC600U	否	模组	4.0.1
HaaS600-N715	是	模组	4.0.1
API使用说明
open(Object options)
打开I2C,创建 I2C 实例。
入参
属性	类型	必填	描述
id	String	是	指定要打开的I2C端口。
devAddr	Number	是	挂载的I2C设备从机地址
success	Function 	否	创建 I2C 实例成功时的回调函数
fail	Function 	否	创建 I2C 实例失败时的回调函数
返回
● I2C 实例。

write(Uint8Array data)
发送数据,该函数为阻塞函数,I2C发送完成后才会返回。
入参
属性	类型	必填	描述
data	Uint8Array 	是	要发送的数据, data[0] 为寄存器地址。
返回
● 写成功返回值为0

writeMem(Number memaddr, Uint8Array data)
向寄存器地址memaddr发送数据,该函数为阻塞函数,I2C发送完成后才会返回。
入参
属性	类型	必填	描述
memaddr	Number	是	寄存器地址memaddr
data	Uint8Array	是	要发送的数据
返回
● 写成功返回值为0

read(Number bytes)
主动读取指定bytes的I2C数据,无需配置寄存器地址,该函数为阻塞函数。
入参
属性	类型	必填	描述
bytes	Number	是	需要读取的字节个数
返回
● 读取到的I2C数据,Uint8Array类型。

readMem(Number memaddr, Number bytes)
主动向寄存器地址memaddr读取指定bytes的I2C数据。该函数为阻塞函数。
入参
属性	类型	必填	描述
memaddr	Number	是	寄存器地址memaddr
bytes	Number	是	需要读取的字节个数
返回
● 读取到的I2C数据,Uint8Array类型。

close()
关闭I2C实例。
入参
● 无
返回
● 无

应用脚本

import * as i2c from 'i2c';

var lm75 = i2c.open({
	id: 'I2C0',
  devAddr: 72,
	success: function () {
		console.log('lm75 sensor open success')
	},
	fail: function () {
		console.log('lm75 sensor open failed')
	}
});

var temp;
function lm75tmpGet() {
	var sig = 1;
	var regval = lm75.readMem(0x00, 2);
	console.log('read regval is ' + regval);
	var tempAll = (regval[0] << 8) + regval[1];
	console.log('tempAll is ' + tempAll);

	if (regval[0] & 0x80 != 0) {
		tempAll = ~(tempAll) + 1;
		sig = -1;
	}

	tempAll = tempAll >> 5;
	console.log('tempAll final data ' + tempAll);
	temp = tempAll * 0.125 * sig;

	return temp;
}

setInterval(function () {
	temp = lm75tmpGet();
	console.log('lm75 data is ' + temp);
}, 1000);


var bmp280 = i2c.open({
	id: 'I2C0',
  devAddr: 118,
	success: function () {
		console.log('bmp280 sensor open success')
	},
	fail: function () {
		console.log('bmp280 sensor open failed')
	}
});

function bmp280SoftReset()
{
    var regaddr = 0xe0;
    var regval = [0xb6];
    bmp280.writeMem(regaddr, regval);
    console.log('bmp280 soft reset');
}

bmp280SoftReset();