LPC21XX系列ARM7驱动RTC RX8025(I/O模拟IIC)
扫描二维码
随时随地手机看文章
/******************************************************************************************
* 函数名称 :I2C_Delay
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Delay(uint32 WaitTime)
{
uint32 uiTemp = WaitTime * small;
while (uiTemp--);
}
/******************************************************************************************
* 函数名称 :IO_Write
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void IO_Write(uint16 data, uint16 level)
{
switch(data)
{
case I2C_SDA:
{
switch(level)
{
case High:
IO0SET |= I2C_SDA;
I2C_Delay(5);
break;
case Low:
IO0CLR |= I2C_SDA;
I2C_Delay(5);
break;
}
}//end case
break;
case I2C_SCL:
{
switch(level)
{
case High:
IO0SET |= I2C_SCL;
I2C_Delay(5);
break;
case Low:
IO0CLR |= I2C_SCL;
I2C_Delay(5);
break;
}
}//end case
break;
}
}
/******************************************************************************************
* 函数名称 :I2C_Stop
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Stop(void) // I2C总线操作结止位发送
{
IO_Write(I2C_SDA, Low); // SDA = Low
IO_Write(I2C_SCL, High); // SCL = High
I2C_Delay(10);
IO_Write(I2C_SDA, High); // SDA = High
I2C_Delay(5);
IO_Write(I2C_SCL, Low); // SCL = Low
I2C_Delay(5);
}
/******************************************************************************************
* 函数名称 :I2C_Start
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Start(void)
{
I2C_Stop();
I2C_Delay(5);
IO_Write(I2C_SDA, High);// SDA = High
I2C_Delay(5);
IO_Write(I2C_SCL, High);// SCL = High
I2C_Delay(5);
IO_Write(I2C_SDA, Low); // SDA = Low
I2C_Delay(5);
IO_Write(I2C_SCL, Low);// SCL = Low
I2C_Delay(5);
}
/******************************************************************************************
* 函数名称 :I2C_Clock
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Clock(void)
{
I2C_Delay(5);// SCL = High-> Low
IO_Write(I2C_SCL, High);// SCL = High
I2C_Delay(5);
IO_Write(I2C_SCL, Low);// SCL = Low
I2C_Delay(2);
}
/******************************************************************************************
* 函数名称 :I2C_Clock_Ask
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
uint8I2C_Clock_Ask(void)
{
uint8Status;
I2C_Delay(5);
IO_Write(I2C_SCL, High);// SCL = High
I2C_Delay(5);
switch ( (IO0PIN&I2C_SDA)&I2C_SDA )
{
case(1<<14):
Status = I2CNoAck;// 返回I2CNoAck
break;
case(0x00):
Status = I2CAck; // 返回I2CAck
break;
}
IO_Write(I2C_SCL, Low);// SCL = Low
I2C_Delay(5);
return(Status);
}