找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3832|回复: 1
打印 上一主题 下一主题
收起左侧

调试MPU6050程序关于IIC地址的问题

[复制链接]
跳转到指定楼层
楼主
ID:319537 发表于 2019-4-12 13:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人在调试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;


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2019-4-13 13:36 | 只看该作者
顶一下。
平时用到时都没有注意,你写的好学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表