在例程中有2个I2C方面的示例,一个是关于读写ST24C02的,另一个则是用于读取LM75A进行检测的。 1. 读写ST24C02 读写ST24C02的接口电路如图1所示,该器件在开发板的位置如图2所示。
图1 ST24C02接口电路
图2 ST24C02的位置 ST24C02的读写程序为: .json:
- {
- "version": "1.0.0",
- "io": {
- "I2C2": {
- "type": "I2C",
- "port": 2,
- "addrWidth": 7,
- "freq": 400000,
- "mode": "master",
- "devAddr": 87
- }
- },
- "debugLevel": "DEBUG"
- }
复制代码
.js:
- var i2c = require('i2c');
- function delay() {
- for (vari=0; i<1000; i++)
- {
- for (vari=0; i<2000; i++)
- {
- system.versions();
- }
- }
- }
- vareeprom = i2c.open({
- id: 'I2C2'
- });
- vARMsgbuf = [11,22,33,44,55];
- function eeprom_Test(){
- msgbuf[0] = msgbuf[0] + 1;
- eeprom.writeMem(0x4, msgbuf)
- console.log('writeMem is ' + msgbuf);
- delay();
- var regval = eeprom.read(5);
- console.log('read regval is ' + regval);
- delay();
- }
- //eeprom_Test();
- setInterval(eeprom_Test, 1000);
复制代码
该程序的执行过程如图3所示,其运行结果如图4所示。
图3 程序下载
图4 运行结果 从图4的结果看,似乎写人数据是成功的,只是无法得到读取的数据,但仔细查看图5所示的LOG,则会发现其实写人数据和读取数据的过程都是失败的!
图5 LOG内容 2. LM75A检测 LM75A检测的接口电路如图6所示,图7是LM75A所处的位置。
图6 LM75A检测电路
图7 LM75A所处位置 LM75A的检测程序为: .JSON:
- {
- "version": "1.0.0",
- "io": {
- "I2C2": {
- "type": "I2C",
- "port": 2,
- "addrWidth": 7,
- "freq": 400000,
- "mode": "master",
- "devAddr": 72
- }
- },
- "debugLevel": "DEBUG"
- }
复制代码
.JS:
- var i2c = require('i2c');
- var sensor = i2c.open({
- id: 'I2C2'
- });
- varmsgbuf = [0];
- functionsensor_Test(){
- varregval = sensor.read(2);
- console.log('read sensor temp is ' + regval[0] + ' humidity is ' + regval[1]);
- }
- setInterval(sensor_Test, 1000);
复制代码
该程序的执行过程如图8所示,其运行结果如图9所示,显然对LM75A的检测也是失败的。此外,一个比较异常的是从网上查看LM75A的资料,其介绍如图10所示。
图8 程序下载
图9 运行结果
图10 LM75A性能 说明LM75A是一种温度检测的芯片,并没有湿度检测的功能。
从整体的例程测试情况看,这种情况并不多见,2个I2C方面的测试例程均告失败。尤其是对于LM75A来说,如果网上资料没有骗人的话,例程中出现的问题就偏差的有些大了,竟出现了所不具备的湿度检测功能,希望有过使用LM75A经验者确认一下此项功能是否属实。
|