This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] HDC2010:处理负值

Guru**** 1157370 points
Other Parts Discussed in Thread: HDC2010, LM75B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/808500/hdc2010-handling-negative-values

器件型号:HDC2010
主题中讨论的其他器件: LM75B

您好!

 

我使用的是 HDC2010传感器。 我已经了解了 SNAA312、我有一些疑问。

 

1) 1)如何处理负值。 负值是否为2的补码,如果我复制到 Int16_t,它是否会自动得到注意?

 

int16_t i16TempActData = 0;

memcpy (&i16TempActData、&p8Data[0]、2);//温度的低字节和高字节

 

2) 2)湿度将介于0到100之间。 因此不会有任何负值。 它仍然可以有十进制的部分,这样我们是否需要用十进制的部分来处理正数?

 

谢谢、此致

Vishnu Beema

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vishnu -  

    您应该为每种测量类型返回两个字节、因此应为0x00 0x00至0xFF 0xFF (相当于0d 至65536d)

    然后、针对每种类型的读数进行数学运算(在 MCU 内部)、湿度范围为0%至99.998% RH、温度范围为-40C 至124.9975C

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。 现在我明白了。 在某些芯片中、大于'0x80 00 00'的值(MSB 为1)将表示2的补码中的负值。 而在这里、公式中的 uint16_t 和'-40'将处理负温度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很棒  

    维什努-  

    我不确定您在哪里使用二进制补码。  

    湿度转换公式为:  

    RH%=(HDC20x0 I2C/65536的十六进制输出的十进制值)* 100

    从这个等式中、不能推导出负数、因为0除以任何值都是0、0乘以任何值也是0、因此最小可能值为:

    0x00 0x00 (来自湿度寄存器)= 0d

    然后执行数学运算:  

    0/65536 = 0

    0 * 100 = 0%RH

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的意见。

    作为参考、LM75B 数字温度传感器将在负温度下使用二进制补码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢- HDC 器件不使用二进制补码。

    该器件的温度计算公式为:  

    temp =((十进制的 temp 值、从返回的十六进制值/ 65536)* 165)- 40