在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
|---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
芯片的I2C地址为0x96——这是网上朋友测试得到的,与手册上不一样!!!这不是误人子弟吗!?
出差后病一场,好了接着做实验,按照网上朋友的结果——Taddr=0x96,测试还算顺利。
首先初始化芯片,函数名setI2c96(void):
//Intial Temp Regedit
void setI2c96(void){
char kTemp[3];//,data[9];
wait(0.00001);
kTemp[0]=0x0A;//Conversion rate
kTemp[1]=0x09;//0.06~32Hz-00~09
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x0B;//LocalH
kTemp[1]=0x1A;//26 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x0D;//LocalL
kTemp[1]=0x17;//23 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x0C;//RemoteH
kTemp[1]=0x17;//23 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x0E;//Remotel
kTemp[1]=0x1C;//28 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x11;//Remove Only=0x00
kTemp[1]=0x00;//0 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x19;//Remote T_CRIT
kTemp[1]=0x1C;//28 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x20;//Local T_CRIT
kTemp[1]=0x1A;//26 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x21;//hysteresis
kTemp[1]=0x01;//1 Du
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0x09;//Configration
kTemp[1]=0x10;//14,Rmote-1 Locol-4 Disable Alert
i2c.write(taddr[2],kTemp,2,true);
kTemp[0]=0xBF;//Set Alert
kTemp[0]=0x01;//Enabe
i2c.write(taddr[2],kTemp,2,true);
}
在main加入初始化芯片函数:
setI2c96();
而后是编写读取2个温度值——芯片和半导体测温,函数名testI2c96():
//Test Temper
void testI2c96(void){
char data[2];
data[0]=0x00;//Set Addr
i2c.write(taddr[2],data,1,true);
wait(0.0001);
i2c.read(taddr[2],data,2,true);
keyVale[0]=data[0];
wait(0.0001);
data[0]=0x01;//Set Addr
i2c.write(taddr[2],data,1,true);
wait(0.0001);
i2c.read(taddr[2],data,2,true);
keyVale[1]=data[0];
}
在循环体中加入测试函数,并且将测试结果显示在LCD上,表示为:LT=、RT=。为了省事,只读取和显示整数部分。
设置关键寄存器:
上下限告警寄存器:0B,0D、0C,0E;远程温度:11;告警温差:21;告警点:19,20;告警控制:BF;本地远程告警屏蔽:09。
照片0_81是芯片上电时的结果;照片0_82是手指压在芯片上温度超过26+1度时,告警灯亮;照片0_83是远程传感器的静态温度;照片0_84是手指捏住传感器温度达到28+1度是告警灯亮;照片0_85是松开手后,温度回落,告警灯恢复不亮。
至此SA56004X温度传感器的测试告一段落。
|
-
0_80
-
0_81
-
0_82
-
0_83
-
0_84
-
0_85
|