TI中文支持网
TI专业的中文技术问题搜集分享网站

i2c例程有不懂的部份

下面红色区是里面我比较不懂得地方,不知道为啥要这么写,有人可以指导一下吗

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:

好的,谢谢大大~

赞(0)
未经允许不得转载:TI中文支持网 » i2c例程有不懂的部份
分享到: 更多 (0)