你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于使用spi接口配置MPU6500/MPU9250 读取地磁传感器数据的问题

[复制链接]
priestyoyo 提问时间:2015-6-12 18:13 /
阅读主题, 点击返回1楼
收藏 1 评论25 发布时间:2015-6-12 18:13
25个回答
shadow丶 回答时间:2015-6-14 23:06:07
呃呃   mpu6050 iic的   之前用过  有段时间也是读取全0   后来怎么弄的就记不清  好像是设置的问题。。。好久之前了0.0
priestyoyo 回答时间:2015-6-15 23:30:06
shadow丶 发表于 2015-6-14 23:06
呃呃   mpu6050 iic的   之前用过  有段时间也是读取全0   后来怎么弄的就记不清  好像是设置的问题。。。 ...

-。-哎  用了i2c其实依然读不出
chengwei-202140 回答时间:2015-7-15 16:53:40
楼主能不能看一下你的代码
ahaiff 回答时间:2015-12-19 14:24:12
也调了好几天,终于搞定了,用内部I2C MASTER 转发,slv4单字节读写AK88963寄存器,用SLV0接收数据到EXT_SENS_DATA_,然后可以随时和加速度陀螺仪数据一起读出
priestyoyo 回答时间:2015-12-23 20:20:04
ahaiff 发表于 2015-12-19 14:24
也调了好几天,终于搞定了,用内部I2C MASTER 转发,slv4单字节读写AK88963寄存器,用SLV0接收数据到EXT_SE ...

看到你说搞定了。我又把板子翻出来调了一晚上。。。我确定一定是我的问题,不知道哪里理解错了。。
我首先用slv0 写入CNTL1寄存器,让它工作在连续模式1,代码是这样的
        spi_writedata(MPU_I2C_SLV0_ADDR,0x0c);                        //write I2C address
        spi_writedata(MPU_I2C_SLV0_DO,0x12);                        //CNTL1 配置为连续模式1
        spi_writedata(MPU_I2C_SLV0_REG,AK8963_CNTL1);
        spi_writedata(MPU_I2C_SLV0_CTRL,0x81);
        Delay(10);
然后 开始用slv1读 HXL开始的6个字节数据
        uint8_t data;
        spi_writedata(MPU_I2C_SLV1_ADDR,0x8c);                        //write I2C address               
        spi_writedata(MPU_I2C_SLV1_REG,AK8963_HXL);
        spi_writedata(MPU_I2C_SLV1_CTRL,0x86);
        data= spi_readdata(MPU_EXT_SENS_DATA_00);
但是依旧不能读数据。。请教一下你具体是怎么做的
ahaiff 回答时间:2016-1-14 12:43:29
priestyoyo 发表于 2015-12-23 20:20
看到你说搞定了。我又把板子翻出来调了一晚上。。。我确定一定是我的问题,不知道哪里理解错了。。
我首 ...

捕获.PNG 8963内部也需要操作,并注意SPI写完要延时,20M的spiy要等待400K的内部I2C操作完成,附上我的源码
ahaiff 回答时间:2016-1-14 13:41:08
ahaiff 发表于 2016-1-14 12:43
8963内部也需要操作,并注意SPI写完要延时,20M的spiy要等待400K的内部I2C操作完成,附上我的源码 ...

捕获2.PNG
SPI透过I2C master 操作8963c的寄存器
power568 回答时间:2016-3-2 13:56:08
本帖最后由 power568 于 2016-3-2 15:06 编辑

这几天也在捣鼓这个模块,目前正在读取磁力计的数据,学习中...
要是能提供宏定义数据更好...
power568 回答时间:2016-3-2 17:46:32
ahaiff 发表于 2016-1-14 13:41
SPI透过I2C master 操作8963c的寄存器

大侠,今天试了一下,读不出数据,读取I2C的Slv4_done状态时,一直不会置位,可否指点一下?
枫叶20101112 回答时间:2016-3-28 21:48:33
各位成功用spi读出9轴数据的分享一下经验啦,spi无法读磁力计数据啊,折腾啊,我的配置如下,就是读不了磁力计:
    /* 读 MPU9250 ID 判断是否在线 */
    if (MPU9250_ID == MPU9250_Read_Reg())
    {
      MPU9250_Write_Reg(USER_CTRL,    0x30); /* 使能 MPU9250 SPI 工作模式和 I2C 主机 I/F 模式 */
      MPU9250_Write_Reg(PWR_MGMT_1,   0x80); /* 电源管理,复位 MPU9250 */
      MPU9250_Write_Reg(SMPLRT_DIV,   0x07,); /* 采样率 1000/(1+7)=125HZ */
      MPU9250_Write_Reg(CONFIG,       0x06); /* 低通滤波器 0x06 5Hz */
      MPU9250_Write_Reg(GYRO_CONFIG,  0x18,); /* 陀螺仪测量范围 0x18 正负 2000 度 */
      MPU9250_Write_Reg(ACCEL_CONFIG, 0x18); /* 加速度计测量范围 0x18 正负 16g */

      /* MPU9250-AK8963 磁力计初始化 */
      if (!MPU9250_AK8963_Init()) return false;                       
    }

其中MPU9250_AK8963_Init()是参考楼主的,只能读加速度和陀螺仪

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版