TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4驱动MPU6050读取的数据不会变化

参考官方文档驱动MPU6050,但是读取的数据没有变化,且估计数据是错误的,且我用示波器观查,波形在程序起动后一段时间就没有波形了

下面贴出代码,不知道哪里有问题

void main(void) {

SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |

SYSCTL_XTAL_16MHZ);

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);

GPIOPinConfigure(GPIO_PB2_I2C0SCL);
GPIOPinConfigure(GPIO_PB3_I2C0SDA);

GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2,0x00);
I2CMInit(&g_sI2CInst, I2C0_BASE, INT_I2C0, 0xff, 0xff,40000000);

g_bMPU6050Done=false;
status=MPU6050Init(&g_sMPU6050Inst, &g_sI2CInst, MPU6050_I2C_ADDRESS,
MotionCallback, 0);
if(status==1) GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 2);

while(!g_bMPU6050Done)
{

}
g_bMPU6050Done=false;
status=MPU6050ReadModifyWrite(&g_sMPU6050Inst,MPU6050_O_ACCEL_CONFIG,
~MPU6050_ACCEL_CONFIG_AFS_SEL_M,
MPU6050_ACCEL_CONFIG_AFS_SEL_4G,MotionCallback,
0);

if(status==1) GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 4);

while(!g_bMPU6050Done)
{

}

while (1) {
g_bMPU6050Done=false;
MPU6050DataRead(&g_sMPU6050Inst,MotionCallback,0);
while(!g_bMPU6050Done)
{

}
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, 8);
MPU6050DataAccelGetRaw(&g_sMPU6050Inst,&fAccel[0],&fAccel[1],&fAccel[2]);
MPU6050DataGyroGetRaw(&g_sMPU6050Inst,&fGyro[0],&fGyro[1],&fGyro[2]);
//MPU6050DataAccelGetFloat(&g_sMPU6050Inst,&fAccel[0],&fAccel[1],&fAccel[2]);
// MPU6050DataGyroGetFloat(&g_sMPU6050Inst,&fGyro[0],&fGyro[1],&fGyro[2]);

}
}

user151383853:

这类问题, 往往是没有等待芯片准备好就发指令引起的,  增加延时试试

zhenhao zhang:

回复 user151383853:

while(!g_bMPU6050Done) { }这个语句不就是延时的作用吗

xyz549040622:

回复 zhenhao zhang:

还有官方提供的MPU6050的驱动,文档中示例的初始化也无法使用。后来发现是因为初始化中复位了传感器,然后传感器休眠了,所以需要在初始化之后加一句唤醒MPU6050的操作。代码才可以正常工作。

/***********

以上来自网友的描述,请问楼主有没有唤醒呢,是不是这个原因呢

*******************/

zhenhao zhang:

回复 xyz549040622:

我尝试过唤醒,但出来的数据都很奇怪。

赞(0)
未经允许不得转载:TI中文支持网 » TM4驱动MPU6050读取的数据不会变化
分享到: 更多 (0)