图片是百利通PI3HDX412BD的I2C通信时序,该器件一共有8个寄存器,通过I2C读写。以下是我的代码
unsigned char PI3HDX412BD_I2C_Read(unsigned char DevID)
{
unsigned char Rdata=0;
AT24CXX_Start();
AT24CXX_WriteByte(DevID+1);
AT24CXX_TestAck();
TmpPI3Buf[0]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[1]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[2]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[3]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[4]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[5]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[6]=AT24CXX_ReadByte();
AT24CXX_TestAck();
TmpPI3Buf[7]=AT24CXX_ReadByte();
AT24CXX_NAck();
AT24CXX_Stop();
return Rdata;
}
出现的问题是,我只能读写第一个寄存器,剩下的7个寄存器怎么修改都无法对其操作。
想请教下这种I2C时序应该怎么操作?
|