OpenEdv-开源电子网

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

MPU9150 采用F4中MPU6050的代码,得到的加速度计和陀螺仪原始数据始终不变(非1),而且读出的器件地址为(0xD1),而不是0X68。。。。

[复制链接]

9

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-4-29
在线时间
17 小时
发表于 2015-8-3 20:26:34 | 显示全部楼层 |阅读模式
5金钱
AD0接地,EDA、ECL和INT均悬空。。。。。
求解?。。

最佳答案

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

MPU6050跟MPU9150的电源和地如果是通过杜邦线连接的话,杜邦线一定要比较短,,,。。。。否则就会出现描述的状况。。。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-4-29
在线时间
17 小时
 楼主| 发表于 2015-8-3 20:26:35 | 显示全部楼层
MPU6050跟MPU9150的电源和地如果是通过杜邦线连接的话,杜邦线一定要比较短,,,。。。。否则就会出现描述的状况。。。。。。
回复

使用道具 举报

9

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-4-29
在线时间
17 小时
 楼主| 发表于 2015-8-3 20:35:13 | 显示全部楼层
用这套商家提供的代码修改的也是一样。。。。

MPU9150.rar

2.07 MB, 下载次数: 40078

回复

使用道具 举报

9

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-4-29
在线时间
17 小时
 楼主| 发表于 2015-8-3 20:40:40 | 显示全部楼层
[mw_shl_code=c,true]void MPU6050_WriteReg(u8 reg_add,u8 reg_dat) { IIC_Start(); IIC_Send_Byte(MPU6050_SLAVE_ADDRESS); IIC_Wait_Ack(); IIC_Send_Byte(reg_add); IIC_Wait_Ack(); IIC_Send_Byte(reg_dat); IIC_Wait_Ack(); IIC_Stop(); } void MPU6050_ReadData(u8 reg_add,unsigned char*Read,u8 num) { unsigned char i; IIC_Start(); IIC_Send_Byte(MPU6050_SLAVE_ADDRESS); IIC_Wait_Ack(); IIC_Send_Byte(reg_add); IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(MPU6050_SLAVE_ADDRESS+1); IIC_Wait_Ack(); for(i=0;i<(num-1);i++){ *Read=IIC_Read_Byte(1); Read++; } *Read=IIC_Read_Byte(0); IIC_Stop(); } void MPU6050_Init(void) { // MPU6050_PWR_MGMT_1_INIT(); IIC_Init(); MPU6050_WriteReg(MPU6050_RA_PWR_MGMT_1, 0x80); delay_ms(100); MPU6050_WriteReg(MPU6050_RA_PWR_MGMT_1, 0x00); MPU6050_WriteReg(MPU6050_RA_SMPLRT_DIV , 0x07); MPU6050_WriteReg(MPU6050_RA_CONFIG , 0x06); MPU6050_WriteReg(MPU6050_RA_ACCEL_CONFIG , 0x01); MPU6050_WriteReg(MPU6050_RA_GYRO_CONFIG, 0x18); } void MPU6050ReadID(void) { unsigned char Re = 0; MPU6050_ReadData(MPU6050_RA_WHO_AM_I,&Re,1); } void MPU6050ReadAcc(short *accData) { u8 buf[6]; MPU6050_ReadData(MPU6050_ACC_OUT, buf, 6); accData[0] = (buf[0] << 8) | buf[1]; accData[1] = (buf[2] << 8) | buf[3]; accData[2] = (buf[4] << 8) | buf[5]; } void MPU6050ReadGyro(short *gyroData) { u8 buf[6]; MPU6050_ReadData(MPU6050_GYRO_OUT,buf,6); gyroData[0] = (buf[0] << 8) | buf[1]; gyroData[1] = (buf[2] << 8) | buf[3]; gyroData[2] = (buf[4] << 8) | buf[5]; } void MPU6050ReadTemp(short *tempData) { u8 buf[2]; MPU6050_ReadData(MPU6050_RA_TEMP_OUT_H,buf,2); *tempData = (buf[0] << 8) | buf[1]; } void MPU6050_ReturnTemp(short*Temperature) { short temp3; u8 buf[2]; MPU6050_ReadData(MPU6050_RA_TEMP_OUT_H,buf,2); temp3= (buf[0] << 8) | buf[1]; *Temperature=(((double) (temp3 + 13200)) / 280)-13; } //这部分是MPU的代码 [/mw_shl_code]

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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