OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3017|回复: 2

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

[复制链接]

5

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2014-8-7
在线时间
59 小时
发表于 2017-7-26 10:56:39 | 显示全部楼层 |阅读模式
1金钱
我看原子的例程关于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?是不是我哪里理解错了?

最佳答案

查看完整内容[请看2#楼]

去了解IIC协议先,高7位是地址,最低位是用来表示读写的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165452
金钱
165452
注册时间
2010-12-1
在线时间
2113 小时
发表于 2017-7-26 10:56:40 | 显示全部楼层
去了解IIC协议先,高7位是地址,最低位是用来表示读写的。
回复

使用道具 举报

5

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2014-8-7
在线时间
59 小时
 楼主| 发表于 2017-7-26 11:46:26 | 显示全部楼层
顶一下,希望有人指点一下
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-18 08:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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