标题: 调试MPU6050程序关于IIC地址的问题 [打印本页]

作者: 孙小伟    时间: 2019-4-12 13:31
标题: 调试MPU6050程序关于IIC地址的问题
本人在调试MPU6050的时候,发现使用的是同一个模块,2个程序中从机的IIC的地址确不一样,两个程序烧录进去都能实时显示数据。既然从机IIC的地址是固定的,那么两个软件的从机IIC地址不一样怎么可能都能通信成功呢?经过一番探讨,原来还是在软件中作了手脚。
以下是程序分析:
0x01:
#define MPU_ADDR                                0X68
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())        //等待ACK
        {
                MPU_IIC_Stop();         
                return 1;                 
        }                 
    MPU_IIC_Stop();         
        return 0;
}

0x02:
#define        SLAVEADRESS                0xD0
void IIC_WriteData(uint8_t SlaveAddress,uint8_t REG_Address,uint8_t REG_data)
{
        IIC_Start();                  //?eê?D?o?
        IIC_SendByte(SlaveAddress);   //发送器件地址+写命令        
        IIC_SendByte(REG_Address);   
        IIC_SendByte(REG_data);      
        IIC_Stop();               
}
分析:

(0x68 << 1)|0 = 1101 0000 b =0xD0;



作者: HC6800-ES-V2.0    时间: 2019-4-13 13:36
顶一下。
平时用到时都没有注意,你写的好学习了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1