void SimulateI2cInit(void)
{
SYS->GPAMFP.I2C1_SCL_nRD=0;
SYS->GPAMFP.I2C1_SDA_nWR=0;
GPIOA->PMD.PMD11=1;
GPIOA->PMD.PMD10=1;
SCLK=1;
DIN=1;
}
void SimulateI2cStart(void)
{
DIN=1;
SCLK=1;
DrvSYS_Delay(1);
DIN=0;
DrvSYS_Delay(1);
SCLK=0;
}
void SimulateI2cStop(void)
{
SCLK=0;
DIN=0;
DrvSYS_Delay(1);
SCLK=1;
DrvSYS_Delay(1);
DIN=1;
DrvSYS_Delay(1);
}
void SimulateI2cSendByte(uint8_t data)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
if(data & 0x01)
{
DIN=1;
}
else
{
DIN=0;
}
DrvSYS_Delay(1);
SCLK=1;
DrvSYS_Delay(1);
SCLK=0;
DrvSYS_Delay(1);
data=data>>1;
}
}
void SimulateI2cWriteData(uint8_t addr,uint8_t data)
{
SimulateI2cStart();
SimulateI2cSendByte(0X44);
SimulateI2cStop();
SimulateI2cStart();
SimulateI2cSendByte(addr);
SimulateI2cSendByte(data);
SimulateI2cSendByte(addr);
SimulateI2cSendByte(data);
SimulateI2cStop();
SimulateI2cStart();
SimulateI2cSendByte(0x8F);
SimulateI2cStop();
} |