|
我现在用的是ARM LPC2292内部的I2C功能。I2C程序为标准的24C08通过的I2C程序。时序上,我看了一下,LM73读写上应该是跟24C08一样的。
我现在步骤:
1. Point=0x04 写入 0x60 设置14bit精度
2. while(1)里面循环读取Point=0x00 地址的2个byte的数值。每次读取时间间隔时间>100MS,远远大于温度更新值最大时间间隔
现在我ADDR是接地的,所以器件地址应该是0x49,0x00读取的两个byte值,第一个读取的是温度高8位,第二个读取的是温度低8位。
问题:
1. 读取的温度值始终是 0xFF01,这个温度值肯定不对。而且因为设置的是14bit的精度,应该有数值更新的变化,
但是我没有看到0xFF01有任何变化。
2. 我把写入的0x04地址的值读了一下,并没有读出来是0x60,而是0x80。
3. 我把设备地址0x49如果修改一下,改成24C08的地址,也就是写地址0xA0,读地址为0xA1,则写入的0x04地址为0x60,
读出来也是0x60,这个比较奇怪。如果这样去读温度的话,读出来是0xFF56,并且也不会改变
事实上,问题3是无意中才发现的。实际设备地址肯定是0x49,所以还是问题1,2
麻烦高手看看,到底问题出在哪里。我这里有两片LM73,试下来都是一样的。芯片供电是3.3V,电源是正常的。
|
|