找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4364|回復: 1
打印 上一主題 下一主題
收起左側

調試MPU6050程序關于IIC地址的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:319537 發(fā)表于 2019-4-12 13:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人在調試MPU6050的時候,發(fā)現使用的是同一個模塊,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);//發(fā)送器件地址+寫命令        
        if(MPU_IIC_Wait_Ack())        //等待應答
        {
                MPU_IIC_Stop();                 
                return 1;               
        }
    MPU_IIC_Send_Byte(reg);        //寫寄存器地址
    MPU_IIC_Wait_Ack();                //等待應答
        MPU_IIC_Send_Byte(data);//發(fā)送數據
        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);   //發(fā)送器件地址+寫命令        
        IIC_SendByte(REG_Address);   
        IIC_SendByte(REG_data);      
        IIC_Stop();               
}
分析:

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:164602 發(fā)表于 2019-4-13 13:36 | 只看該作者
頂一下。
平時用到時都沒有注意,你寫的好學習了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表