C 如何将该值转换为来自传感器的温度?

C 如何将该值转换为来自传感器的温度?,c,sensors,i2c,temperature,C,Sensors,I2c,Temperature,我正在研究ST温度传感器(hts221),我使用I2C命令与传感器通信。 我是新来的 我有参考,也从传感器得到了值。 但我不知道如何将数值转换成实际温度 从传感器获得的值如下所示: Read HTS221 TEMP_OUT_L: 0x2a value is 0x15 Read HTS221 TEMP_OUT_H: 0x2b value is 0xFF Read HTS221 T0_degC_x8: 0x32 value is 0xBF Read HTS221 T1_degC_x8: 0x33 v

我正在研究ST温度传感器(hts221),我使用I2C命令与传感器通信。 我是新来的

我有参考,也从传感器得到了值。 但我不知道如何将数值转换成实际温度

从传感器获得的值如下所示:

Read HTS221 TEMP_OUT_L: 0x2a value is 0x15
Read HTS221 TEMP_OUT_H: 0x2b value is 0xFF
Read HTS221 T0_degC_x8: 0x32 value is 0xBF
Read HTS221 T1_degC_x8: 0x33 value is 0xBF
Read HTS221 T1/T0 msb: 0x35 value is 0x4
Read HTS221 T0_OUT-3C: 0x3C value is 0x0
Read HTS221 T0_OUT-3D: 0x3D value is 0x0
Read HTS221 T1_OUT-3E: 0x3E value is 0x0
Read HTS221 T1_OUT-3F: 0x3F value is 0x0
温度寄存器的说明如下图所示

它给出了校准系数和温度转换示例,如下图所示,但我仍然理解它的含义。

有人能教我如何将上述值转换为传感器的温度吗? 我对此一无所知。。。
提前感谢。

您需要阅读以下校准寄存器:

T0_degC_x8  (Calibration register 32)
T1_degC_x8  (Calibration register 33)
T1_T0msb    (Calibration register 35)
T0_OUT      (Calibration register 3C and 3D)
T1_OUT      (Calibration register 3E and 3F)
T0_degC_x8和T1_degC_x8是10位值,因此需要从寄存器35中获取最后2位

然后只需简单的插值即可得到测量温度:

double T_DegC;
double T0_degC = (T0_degC_x8 + (1 << 8) * (T1_T0msb & 0x03)) / 8.0; 
double T1_degC = (T1_degC_x8 + (1 << 6) * (T1_T0msb & 0x0C)) / 8.0; // Value is in 3rd and fourth bit, so we only need to shift this value 6 more bits.
T_DegC = (T0_degC + (T_OUT - T0_OUT) * (T1_degC - T0_degC) / (T1_OUT - T0_OUT)); 
double T_DegC;

双T0_degC=(T0_degC_x8+(1您需要读取以下校准寄存器:

T0_degC_x8  (Calibration register 32)
T1_degC_x8  (Calibration register 33)
T1_T0msb    (Calibration register 35)
T0_OUT      (Calibration register 3C and 3D)
T1_OUT      (Calibration register 3E and 3F)
T0_degC_x8和T1_degC_x8是10位值,因此需要从寄存器35中获取最后2位

然后只需简单的插值即可得到测量温度:

double T_DegC;
double T0_degC = (T0_degC_x8 + (1 << 8) * (T1_T0msb & 0x03)) / 8.0; 
double T1_degC = (T1_degC_x8 + (1 << 6) * (T1_T0msb & 0x0C)) / 8.0; // Value is in 3rd and fourth bit, so we only need to shift this value 6 more bits.
T_DegC = (T0_degC + (T_OUT - T0_OUT) * (T1_degC - T0_degC) / (T1_OUT - T0_OUT)); 
double T_DegC;

双T0_degC=(T0_degC_x8+(1您需要读取以下校准寄存器:

T0_degC_x8  (Calibration register 32)
T1_degC_x8  (Calibration register 33)
T1_T0msb    (Calibration register 35)
T0_OUT      (Calibration register 3C and 3D)
T1_OUT      (Calibration register 3E and 3F)
T0_degC_x8和T1_degC_x8是10位值,因此需要从寄存器35中获取最后2位

然后只需简单的插值即可得到测量温度:

double T_DegC;
double T0_degC = (T0_degC_x8 + (1 << 8) * (T1_T0msb & 0x03)) / 8.0; 
double T1_degC = (T1_degC_x8 + (1 << 6) * (T1_T0msb & 0x0C)) / 8.0; // Value is in 3rd and fourth bit, so we only need to shift this value 6 more bits.
T_DegC = (T0_degC + (T_OUT - T0_OUT) * (T1_degC - T0_degC) / (T1_OUT - T0_OUT)); 
double T_DegC;

双T0_degC=(T0_degC_x8+(1您需要读取以下校准寄存器:

T0_degC_x8  (Calibration register 32)
T1_degC_x8  (Calibration register 33)
T1_T0msb    (Calibration register 35)
T0_OUT      (Calibration register 3C and 3D)
T1_OUT      (Calibration register 3E and 3F)
T0_degC_x8和T1_degC_x8是10位值,因此需要从寄存器35中获取最后2位

然后只需简单的插值即可得到测量温度:

double T_DegC;
double T0_degC = (T0_degC_x8 + (1 << 8) * (T1_T0msb & 0x03)) / 8.0; 
double T1_degC = (T1_degC_x8 + (1 << 6) * (T1_T0msb & 0x0C)) / 8.0; // Value is in 3rd and fourth bit, so we only need to shift this value 6 more bits.
T_DegC = (T0_degC + (T_OUT - T0_OUT) * (T1_degC - T0_degC) / (T1_OUT - T0_OUT)); 
double T_DegC;


双T0_degC=(T0_degC_x8+(1)试着从相反的方向到达它,当你得到你给我们看的读数时,温度是多少?试着从相反的方向到达它时,温度是多少?试着从相反的方向到达它时,温度是多少?试着从相反的方向到达它时,温度是多少你得到你给我们看的读数了吗?可能是从相反的方向得到的,当你得到你给我们看的读数时,温度是多少?可能是你需要使用
T1/T0 msb
寄存器中的一些位。@user694733谢谢!我已经修正了我的答案。我想
(1 Dang,该值已经移位了2位。感谢校对!@KlasLindbäck我已经阅读了我文章顶部的上述校准寄存器。但是我不知道如何转换,你能告诉我如何使用从传感器获得的值进行转换吗?你还需要使用
T1/T0 msb
寄存器中的一些位。@user694733谢谢!我已经确定了答案。我想
(1 Dang,该值已经移位了2位。感谢校对!@KlasLindbäck我已经阅读了我文章顶部的上述校准寄存器。但是我不知道如何转换,你能告诉我如何使用从传感器获得的值进行转换吗?你还需要使用
T1/T0 msb
寄存器中的一些位。@user694733谢谢!我已经确定了答案。我想
(1 Dang,该值已经移位了2位。感谢校对!@KlasLindbäck我已经阅读了我文章顶部的上述校准寄存器。但是我不知道如何转换,你能告诉我如何使用从传感器获得的值进行转换吗?你还需要使用
T1/T0 msb
寄存器中的一些位。@user694733谢谢!我已经修正了我的答案。我想
(1dang,该值已经被移位了2位。谢谢校对!@KlasLindbäck我已经阅读了我文章顶部的上述校准寄存器。但是我不知道如何转换,你能告诉我如何使用从传感器获得的值进行转换吗?