原理图待补XXXXXXXXXXXXX。
我们用模拟IIC来控制MPU6050。
首先初始化MPU6050。
关于IIC的code部分大家应该都很熟悉。
这里给大家看下我们读取的时序。
/*单字节写*/
u8 MPU_Write_Byte(u8 reg,u8 data)
{
MPU_IIC_Start();
MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);
if(MPU_IIC_Wait_Ack())
{
MPU_IIC_Stop();
return 1;
}
MPU_IIC_Send_Byte(reg);
MPU_IIC_Wait_Ack();
MPU_IIC_Send_Byte(data);
if(MPU_IIC_Wait_Ack())
{
MPU_IIC_Stop();
return 1;
}
MPU_IIC_Stop();
return 0;
}
/*单字节读*/
u8 MPU_Read_Byte(u8 reg)
{
u8 res;
MPU_IIC_Start();
MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);
//MPU_IIC_Wait_Ack();
if(MPU_IIC_Wait_Ack())
return 0;
MPU_IIC_Send_Byte(reg);
//MPU_IIC_Wait_Ack();
if(MPU_IIC_Wait_Ack())
return 1;
MPU_IIC_Start();
MPU_IIC_Send_Byte((MPU_ADDR<<1)|1);
//MPU_IIC_Wait_Ack();
if(MPU_IIC_Wait_Ack())
return 2;
res=MPU_IIC_Read_Byte(0);
MPU_IIC