大家好,
我有几个TMP102通过i2c连接到我的F2.8027万微控制器。 一切都很好。 我还使用IQ数学库(顺便说一句,这是一件很棒的事情)。 我的传感器以分数二补码格式返回温度,因此实际上已经是Q值。 我将读出值(来自i2c)存储在UINT16中,函数返回_IQ格式。
但是,来自TMP102的数据仅为12b。 像_iq4 (或_iq8,具体取决于对齐情况)一样处理(投射)它们仅适用于正数。 对于负数,我需要检查最重要的位(位11),然后修改32b变量(_IQ编号)中的其余位。
长话短说,如果第11位是负的,我需要将位31:12设置为1。
现在,问题是:
最优雅的方法是什么?
提前感谢!
Jiri