我的工作是ST温度传感器( hts221 ),我使用I2C命令与传感器通信。我是新来的..。
我有参考的HTS221数据表,也得到了传感器的价值。但我不知道如何把这个值转换成实际温度。
从传感器获得的值如下所示:
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温度寄存器的描述如下图所示。

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


,有人能教我如何从传感器把上面的值转换成温度吗?,我不知道。提前谢谢。
发布于 2014-09-01 12:25:07
您需要阅读下列校准寄存器:
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)); 注:
寄存器编号为十六进制,因此寄存器32、33和35实际上是寄存器0x32、0x33和0x35。
https://stackoverflow.com/questions/25605318
复制相似问题