Exemple #1
0
/**
  * @brief  This function checks ACK/NACK from I2C slave.
  * @param  None
  * @return None
  */
bool I2cChkAck(void* I2cMasterHandle)
{
	bool	Ack;

	SetInputSDA(I2cMasterHandle);//Allow slave to send ACK
	ClrSCL(I2cMasterHandle);//slave send ACK
	SetSCL(I2cMasterHandle);
	Ack = !GetSDA(I2cMasterHandle);//Get ACK from slave
	ClrSCL(I2cMasterHandle);
	return Ack;
}
Exemple #2
0
/**
  * @brief  This function generates I2C stop timing.
  * @param  None
  * @return None
  */
void I2cStop(void* I2cMasterHandle)
{
	SetOutputSCL(I2cMasterHandle);
	SetOutputSDA(I2cMasterHandle);

	ClrSDA(I2cMasterHandle);
	SetSCL(I2cMasterHandle);
	SetSDA(I2cMasterHandle);

	SetInputSDA(I2cMasterHandle);
}
Exemple #3
0
// Check Ackowledge signal(ACK/NACK). 
BOOL I2C_ChkAck(BYTE I2cDevice)
{
	BOOL Ack;

	ClrSCL(I2cDevice);
	SetInputSDA(I2cDevice);
	SetSCL(I2cDevice);
	KtIICDelay();
	Ack = !GetSDA(I2cDevice);
	ClrSCL(I2cDevice);
	return Ack;
}
Exemple #4
0
// send STOP signal. 
VOID I2C_Stop(BYTE I2cDevice)
{
//	DBG(("I2C_Stop()\n")); 
	SetOutputSCL(I2cDevice);
	SetOutputSDA(I2cDevice);
	
	ClrSDA(I2cDevice); 	
	KtIICDelay();
	SetSCL(I2cDevice);
	SetSDA(I2cDevice);

	SetInputSDA(I2cDevice);
}
Exemple #5
0
// Receive one byte via I2C. 
BYTE I2C_ReadByte(BYTE I2cDevice)
{
	BYTE i = 8;
	BYTE Dat = 0;

	SetInputSDA(I2cDevice);
	while(i--)
	{	
		Dat <<= 1;
		if(GetSDA(I2cDevice))
		{
		  	Dat |= 0x01;
		}
		SetSCL(I2cDevice);
		KtIICDelay();
		ClrSCL(I2cDevice);	 
	}
	SetOutputSDA(I2cDevice);
	return Dat;
}
Exemple #6
0
/**
  * @brief  This function recieve one byte from I2C slave.
  * @param  none
  * @return Data received from I2C slave
  */
uint8_t I2cReadByte(void* I2cMasterHandle)
{
	uint8_t i = 8;
	uint8_t Dat = 0;

	SetInputSDA(I2cMasterHandle);
	while(i--)
	{
		SetSCL(I2cMasterHandle);
		Dat <<= 1;
		if(GetSDA(I2cMasterHandle))
		{
			Dat |= 0x01;
		}
		ClrSCL(I2cMasterHandle);
	}
	SetOutputSDA(I2cMasterHandle);

	return Dat;
}