下面红色区是里面我比较不懂得地方,不知道为啥要这么写,有人可以指导一下吗
1.为啥rxBuffer[0] 要左移6,rxBuffer[1]要右移2,而且rxBuffer[0] 和rxBuffer[1]是代表啥
2. 不清楚这一段代表意思
3.为啥需要除32,数据有经过什么处理吗
for (i = 0; i < 20; i++) {
if (I2C_transfer(i2c, &i2cTransaction)) {
/* Extract degrees C from the received data; see TMP102 datasheet */
temperature = (rxBuffer[0] << 6) | (rxBuffer[1] >> 2);
/*
* If the MSB is set '1', then we have a 2's complement
* negative value which needs to be sign extended
*/
if (rxBuffer[0] & 0x80) {
temperature |= 0xF000;
}
/*
* For simplicity, divide the temperature value by 32 to get rid of
* the decimal precision; see TI's TMP007 datasheet
*/
temperature /= 32;
user4988634:
这些都是传感器tmp102的处理函数,具体要看tmp102的数据手册。每种传感器的接收数据处理方式不同。
如果不是必须要使用tmp102,这里可以自己修改的。最主要的还是要理解iic的机理,和传感器的iic操作机理,理解了后,就很容易了。这里可以看cc1310的数据手册。
hoya:
回复 user4988634:
恩,这我知道,只是我想借由一些确定答案来方便我对照手册,供我参考在其他的传感器上
user4988634:
回复 hoya:
给你一个我写的sht30的读程序。可以对比使用。cc1310的。我看你的例程也是cc1310.
hoya:
回复 user4988634:
好的,谢谢大大~