与 MCP9880 的 i2C 通信的奇怪读数

Weird readings with i2C communication with MCP9880

这将是我第一次提问。首先,我只是一个程序员,对电子不是很了解

我正在尝试通过 i2c 与 MCP9880 温度传感器通信,但我在 'real' 之间得到奇怪的读数,输出如下所示(十进制):

0 29
255 255
128 0
0 29
255 255
255 255

这里的 'real' 讲座是 128 0,但通常我会得到 0xff 或 0x1D,如您所见。这发生在读取任何寄存器时。此外,其他 i2c 设备按预期工作,但我们尝试的许多 MCP9808 保持相同的行为。这是我用来读取温度寄存器的代码(在 bascom 中,我被迫使用它:( )

I2cstart                         'StartI2C.
I2cwbyte Wr_sensor1              'MCP9808 addr.
I2cwbyte &H05                    'Temperature register

I2cstart                         'StartsI2C.
I2cwbyte Rd_sensor1              'MCP9808 addr
I2crbyte Temp_1621 , Ack         'Read first byte
I2crbyte Temp_1621_dec , Nack    'Read second byte
I2cstop

地址检查无误,我真的认为代码应该是正确的。我一直说这是一个电子问题,但一直说他们检查过,一切都很好。

提前致谢。

PS:这是数据表 http://ww1.microchip.com/downloads/en/DeviceDoc/25095A.pdf

的 link

好的,我找到了答案。在进行进一步测试时,该设备的行为就好像它一直在自我重置一样。我怀疑有微小的电压降,所以我研究了这个话题,插上一个电容器,就这样!

希望对大家有所帮助:)