예제 #1
0
파일: bsp_i2c0.c 프로젝트: wwwqimo/Cube_Sw
/*
*********************************************************************************************************
*	函 数 名: i2c_SendByte
*	功能说明: CPU向I2C总线设备发送8bit数据
*	形    参:  _ucByte : 等待发送的字节
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c0_SendByte(uint8_t _ucByte)
{
	uint8_t i;

	/* 先发送字节的高位bit7 */
	for (i = 0; i < 8; i++)
	{
		if (_ucByte & 0x80)
		{
			I2C_SDA_1();
		}
		else
		{
			I2C_SDA_0();
		}
		i2c0_Delay();
		I2C_SCL_1();
		i2c0_Delay();
		I2C_SCL_0();
		if (i == 7)
		{
			 I2C_SDA_1(); // 释放总线
		}
		_ucByte <<= 1;	/* 左移一个bit */
		i2c0_Delay();
	}
}
예제 #2
0
파일: bsp_i2c0.c 프로젝트: wwwqimo/Cube_Sw
/*
*********************************************************************************************************
*	函 数 名: i2c_Start
*	功能说明: CPU发起I2C总线停止信号
*	形    参:  无
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c0_Stop(void)
{
	/* 当SCL高电平时,SDA出现一个上跳沿表示I2C总线停止信号 */
	I2C_SDA_0();
	I2C_SCL_1();
	i2c0_Delay();
	I2C_SDA_1();
}
예제 #3
0
파일: bsp_i2c0.c 프로젝트: wwwqimo/Cube_Sw
/*
*********************************************************************************************************
*	函 数 名: i2c_Ack
*	功能说明: CPU产生一个ACK信号
*	形    参:  无
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c0_Ack(void)
{
	I2C_SDA_0();	/* CPU驱动SDA = 0 */
	i2c0_Delay();
	I2C_SCL_1();	/* CPU产生1个时钟 */
	i2c0_Delay();
	I2C_SCL_0();
	i2c0_Delay();
	I2C_SDA_1();	/* CPU释放SDA总线 */
}
예제 #4
0
파일: bsp_i2c0.c 프로젝트: wwwqimo/Cube_Sw
/*
*********************************************************************************************************
*	函 数 名: i2c_Start
*	功能说明: CPU发起I2C总线启动信号
*	形    参:  无
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c0_Start(void)
{
	/* 当SCL高电平时,SDA出现一个下跳沿表示I2C总线启动信号 */
	I2C_SDA_1();
	I2C_SCL_1();
	i2c0_Delay();
	I2C_SDA_0();
	i2c0_Delay();
	I2C_SCL_0();
	i2c0_Delay();
}
/*
*********************************************************************************************************
*	函 数 名: i2c_Start
*	功能说明: CPU发起I2C总线停止信号
*	形    参:  无
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c_Stop(void)
{
	SDA_OUT();               //sda线输出
	/* 当SCL高电平时,SDA出现一个上跳沿表示I2C总线停止信号 */
	I2C_SCL_0();
	I2C_SDA_0();
	i2c_Delay();
	I2C_SCL_1();
	I2C_SDA_1();
	i2c_Delay();
}
/*
*********************************************************************************************************
*	函 数 名: i2c_Start
*	功能说明: CPU发起I2C总线启动信号
*	形    参:  无
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c_Start(void)
{
	SDA_OUT();               //sda线输出
	/* 当SCL高电平时,SDA出现一个下跳沿表示I2C总线启动信号 */
	I2C_SDA_1();
	I2C_SCL_1();
	i2c_Delay();
	I2C_SDA_0();
	i2c_Delay();
	I2C_SCL_0();
	i2c_Delay();
}
/*
*********************************************************************************************************
*	函 数 名: i2c_SendByte
*	功能说明: CPU向I2C总线设备发送8bit数据
*	形    参:_ucByte : 等待发送的字节
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c_SendByte(uint8_t _ucByte)
{
	uint8_t i;

	I2C_SCL_0();	
	/* 先发送字节的高位bit7 */
	for (i = 0; i < 8; i++)
	{		
		if (_ucByte & 0x80)
		{
			I2C_SDA_1();
		}
		else
		{
			I2C_SDA_0();
		}
		_ucByte <<= 1;	/* 左移一个bit */
		i2c_Delay();
		
		I2C_SCL_1();
		i2c_Delay();	
		I2C_SCL_0();
		i2c_Delay();	
	}
	
	I2C_SDA_1(); // 释放总线
	i2c_Delay();
	
	I2C_SCL_0();
	i2c_Delay();

	if(I2C_SDA_READ())
 	{
  		I2C_SCL_0();
  		return ;
 	}
 	else
 	{
  		I2C_SCL_0();
  		return ;  
 	}
}
/*
*********************************************************************************************************
*	函 数 名: i2c_Start
*	功能说明: CPU发起I2C总线启动信号
*	形    参:无
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c_Start(void)
{
	/* 当SCL高电平时,SDA出现一个下跳沿表示I2C总线启动信号 */
	I2C_SDA_1();
	i2c_Delay();
	
	I2C_SCL_1();
	i2c_Delay();

	if(!I2C_SDA_READ()) 
		return ;
	
	I2C_SDA_0();
	i2c_Delay();

	I2C_SCL_0();
	i2c_Delay();
	
	if(I2C_SDA_READ()) return;
}
예제 #9
0
/*
*********************************************************************************************************
*	函 数 名: i2c_SendByte
*	功能说明: CPU向I2C总线设备发送8bit数据
*	形    参:_ucByte : 等待发送的字节
*	返 回 值: 无
*********************************************************************************************************
*/
void i2c_SendByte(uint8_t _ucByte)
{
	uint8_t i;

	/* 先发送字节的高位bit7 */
	for (i = 0; i < 8; i++)
	{	
		I2C_SCL_0();	
		if (_ucByte & 0x80)
		{
			I2C_SDA_1();
		}
		else
		{
			I2C_SDA_0();
		}
		i2c_Delay();
		I2C_SCL_1();
		i2c_Delay();
		_ucByte<<=1;	
	}


}