请教一个关于MPU9250器件地址的问题

2019-08-16 19:37发布

我看原子的例程关于9250的写寄存器的函数
//IIC写一个字节
//devaddr:器件IIC地址
//reg:寄存器地址
//data:数据
//返回值:0,正常
//    其他,错误代码
u8 MPU_Write_Byte(u8 addr,u8 reg,u8 data)
{
    IIC_Start();
    IIC_Send_Byte((addr<<1)|0); //发送器件地址+写命令
    if(IIC_Wait_Ack())          //等待应答
    {
        IIC_Stop();
        return 1;
    }
    IIC_Send_Byte(reg);         //写寄存器地址
    IIC_Wait_Ack();             //等待应答
    IIC_Send_Byte(data);        //发送数据
    if(IIC_Wait_Ack())          //等待ACK
    {
        IIC_Stop();
        return 1;
    }
    IIC_Stop();
    return 0;
}


这里IIC_Send_Byte((addr<<1)|0); //发送器件地址+写命令 为什么要左移一位?再或0,
#define MPU9250_ADDR            0X68    //MPU6500的器件IIC地址
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X80);//复位MPU9250

里面的函数都是写 MPU9250_ADDR  这个地址 0x68,如果左移了一位不就变成0xd0?是不是我哪里理解错了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。