我用的主机是TMS570LS3137,目的是读取一片adt7410温度芯片的温度数据,
其中芯片地址0x48,芯片中的温度值寄存器MSB的地址为0x00,LSB的地址为0x01
i2cInit();
sciInit();
i2cSetOwnAdd(i2cREG1,own_add);
i2cSetStart(i2cREG1);
i2cSetSlaveAdd(i2cREG1,0x48);
i2cSendByte(i2cREG1,0x90);
i2cSendByte(i2cREG1,0x00);
i2cSetStart(i2cREG1);
i2cSetDirection(i2cREG1, I2C_RECEIVER);
a=i2cReceiveByte(i2cREG1);
sciSendByte(scilinREG,a);
现在对于单一字节寄存器读写都没有问题了,不过还有一些缺陷,对于多个地址连续的寄存器,如何实现块读取?我阅读过从芯片的datasheet,上面说的是支持块读取的,但是我发现调用i2cSetDirection(i2cREG1, I2C_RECEIVER)改变i2c的方向之后,芯片只能返回一个字节的数据(示波器显示只有八个时钟),我不知道该怎么做才能实现寄存器地址的自动递增。
我百度了一些资料,貌似是因为主机在接收到从芯片发回的第一个字节的温度数据之后,没有发送正确的ACK位,所以导致从机的发送立即停止,不知道这种情况如何通过更改设置来解决?
谢谢