从描述的现象来看,造成这个问题的原因很可能是和1-Wire主机通讯有关,因为当DS28E17接收到的数据不正确时会使状态寄存器的最低位设置为1,由于使用的是read with stop命令来读取IIC从器件,IIC从器件的内部地址指针会自动增加,这样就会造成每次读取的数据都不是固定的地址,但是状态寄存器的最低位反映的是1-Wire通讯是否正确,而且目前驱动的线长为30米,可以通过调整主机端1-Wire的写时隙来确保每次1-Wire写操作都是正确的,也就是状态寄存器的最低位为0,这样才能确保这个过程的通讯都是正确的,如果1-Wire写正确,IIC通讯是DS28E17来发起的,如果连接正确,通常是不会有问题的。