コード例 #1
0
ファイル: iic.c プロジェクト: 342875289/SensorNode
//等待应答信号到来
//返回值:1,接收应答失败
//        0,接收应答成功
u8 MPU_IIC_Wait_Ack(void)
{
	u8 ucErrTime=0;
	MPU_SDA_IN();      //SDA设置为输入  
	MPU_IIC_SDA=1;MPU_IIC_Delay();	   
	MPU_IIC_SCL=1;MPU_IIC_Delay();	 
	while(MPU_READ_SDA)
	{
		ucErrTime++;
		if(ucErrTime>250)
		{
			MPU_IIC_Stop();
			return 1;
		}
	}
	MPU_IIC_SCL=0;//时钟输出0 	   
	return 0;  
} 
コード例 #2
0
u8 MPU_I2C_readByte(u8 ack)
{
	u8 i, recv = 0;
	MPU_SDA_IN();
	for(i = 0;i < 8;i ++)
	{
		MPU_I2C_SCL = 0;
		MPU_I2C_DELAY();
		MPU_I2C_SCL = 1;
		MPU_I2C_DELAY();
		if(MPU_I2C_SDA_R) recv ++;
		recv <<= 1;
		MPU_I2C_DELAY();
	}
	MPU_I2C_SCL = 0;
	MPU_I2C_respond(ack);
	return recv;
}
コード例 #3
0
ファイル: iic.c プロジェクト: 342875289/SensorNode
//读1个字节,ack=1时,发送ACK,ack=0,发送nACK   
u8 MPU_IIC_Read_Byte(unsigned char ack)
{
	unsigned char i,receive=0;
	MPU_SDA_IN();//SDA设置为输入
    for(i=0;i<8;i++ )
	{
        MPU_IIC_SCL=0; 
        MPU_IIC_Delay();
		MPU_IIC_SCL=1;
        receive<<=1;
        if(MPU_READ_SDA)receive++;   
		MPU_IIC_Delay(); 
    }					 
    if (!ack)
        MPU_IIC_NAck();//发送nACK
    else
        MPU_IIC_Ack(); //发送ACK   
    return receive;
}
コード例 #4
0
u8 MPU_I2C_waitACK()
{
	u8 errTime = 0;
	//MPU_SDA_OUT();
	//MPU_I2C_SCL = 0;
	//MPU_I2C_DELAY();
	//MPU_I2C_SDA_W = 1;
	//MPU_I2C_DELAY();
	MPU_I2C_SCL = 1;
	MPU_I2C_DELAY();
	MPU_SDA_IN();
	while(MPU_I2C_SDA_R)
	{
		errTime ++;
		if(errTime > 250)
		{
			MPU_I2C_stop();
			return 1;
		}
	}
	MPU_I2C_SCL = 0;//拉低SCL,等待发送或接收数据
	MPU_I2C_DELAY();
	return 0;
}