SHT20_calcdata(TEMPERATURE,
&sht20_result.temperature);//地址传入变成指针
u8 SHT20_calcdata(u8 reg, s16 * val) //读回测量结果并计算(结果为实际值放大10倍)
{
u8 sum, i;
u8 data[2];
u16 dat;
u16 result;
for (i = 0; i < 3; i++)
{
I2C_Start();
if (I2CByteTX(SHT20_ADD | 0x01))
break;
udelay(5);
}
data[0] = I2CByteRX();
ack();
data[1] = I2CByteRX();
ack();
sum = I2CByteRX();
noack();
I2C_Stop();
if (!SHT20_checkcrc(data, sum))
return FALSE;
dat = (data[0] << 8) + (data[1]);
dat &= ~0x0003;
result = dat;
if (reg == TEMPERATURE)
{
result = mymul(1757, dat);
result -= 468;
}
else if (reg == HUMIDITY)
{
result = mymul(1250, dat);
result -= 60;
}
*val = result; //读取结果放大10倍 把读取的值付给指针
return TRUE;
u8 SHT20_calcdata(u8 reg, s16 * val) //读回测量结果并计算(结果为实际值放大10倍)
{
u8 sum, i;
u8 data[2];
u16 dat;
u16 result;
for (i = 0; i < 3; i++)
{
I2C_Start();
if (I2CByteTX(SHT20_ADD | 0x01))
break;
udelay(5);
}
data[0] = I2CByteRX();
ack();
data[1] = I2CByteRX();
ack();
sum = I2CByteRX();
noack();
I2C_Stop();
if (!SHT20_checkcrc(data, sum))
return FALSE;
dat = (data[0] << 8) + (data[1]);
dat &= ~0x0003;
result = dat;
if (reg == TEMPERATURE)
{
result = mymul(1757, dat);
result -= 468;
}
else if (reg == HUMIDITY)
{
result = mymul(1250, dat);
result -= 60;
}
*val = result; //读取结果放大10倍 把读取的值付给指针
return TRUE;
}
sht20_result.temperature 这个机构提就有了数据