Beispiel #1
0
// send START signal. 
VOID I2C_Start(BYTE I2cDevice)
{
	SetSDA(I2cDevice);
	SetSCL(I2cDevice);
	
	SetOutputSCL(I2cDevice);
	SetOutputSDA(I2cDevice);

	SetSDA(I2cDevice);
	SetSCL(I2cDevice);
	KtIICDelay();
	ClrSDA(I2cDevice);
	ClrSCL(I2cDevice);
}
Beispiel #2
0
// Send one byte via I2C(check ACK). 
BOOL I2C_WriteByte(BYTE Dat, BYTE I2cDevice)
{
	BYTE i = 8;
	static BYTE j = 1;
	//DBG(("(%-.2BX)", Dat)); 
	
	SetOutputSDA(I2cDevice);	 
	ClrSCL(I2cDevice);
	while(i--)
	{
		if(Dat & 0x80)				//MSB output first
		{
		  	SetSDA(I2cDevice); 
		}
		else
		{
			ClrSDA(I2cDevice); 
		}
		Dat <<= 1;
		SetSCL(I2cDevice);
		KtIICDelay();
		ClrSCL(I2cDevice);
	}
	return I2C_ChkAck(I2cDevice);
}
Beispiel #3
0
// send Acknowledgement(ACK or NACK) signal. 
VOID I2C_SendNoAck(BYTE I2cDevice)
{
	SetSDA(I2cDevice); 
	SetSCL(I2cDevice);
	KtIICDelay();
	ClrSCL(I2cDevice);
}
Beispiel #4
0
/**
  * @brief  This function generates I2C start timing.
  * @param  None
  * @return None
  */
void I2cStart(void* I2cMasterHandle)
{
	SetSDA(I2cMasterHandle);
	SetSCL(I2cMasterHandle);
	SetOutputSCL(I2cMasterHandle);
	SetOutputSDA(I2cMasterHandle);

	ClrSDA(I2cMasterHandle);
	ClrSCL(I2cMasterHandle);
}
Beispiel #5
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);
}
Beispiel #6
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);
}
Beispiel #7
0
/**
  * @brief  This function send one byte to I2C slave.
  * @param  Val: data to be sent
  * @return
  *     @arg    True:  Receive ACK from I2C slave
  *     @arg    False: Not receive ACK from I2C slave
  */
bool I2cWriteByte(void* I2cMasterHandle, uint8_t Val)
{
	uint8_t i = 8;

	SetOutputSDA(I2cMasterHandle);
	ClrSCL(I2cMasterHandle);
	while(i--)
	{
		if(Val & 0x80)	/* MSB output first */
		{
			SetSDA(I2cMasterHandle);
		}
		else
		{
			ClrSDA(I2cMasterHandle);
		}
		Val <<= 1;
		SetSCL(I2cMasterHandle);
		ClrSCL(I2cMasterHandle);
	}
	return I2cChkAck(I2cMasterHandle);
}
Beispiel #8
0
BOOL I2C_WriteDWord(DWORD Dat, BYTE I2cDevice)
{
	BYTE i = sizeof(DWORD);

	DBG(("I2C_WriteByte(%X)\n", Dat)); 
	SetOutputSDA(I2cDevice);	 
	ClrSCL(I2cDevice);
	while(i--)
	{
		if(Dat & 0x80000000)				//MSB output first
		{
		  	SetSDA(I2cDevice); 
		}
		else
		{
			ClrSDA(I2cDevice); 
		}
		Dat <<= 1;
		SetSCL(I2cDevice);
		KtIICDelay();
		ClrSCL(I2cDevice);
	}
	return I2C_ChkAck(I2cDevice);
}
Beispiel #9
0
/**
  * @brief  This function send NACK to I2C slave.
  * @param  None
  * @return None
  */
void I2cSendNoAck(void* I2cMasterHandle)
{
	SetSDA(I2cMasterHandle);
	SetSCL(I2cMasterHandle);
	ClrSCL(I2cMasterHandle);
}