|
初始化程序如下:
void accInit(void)
{
HalI2CInit(0x68,i2cClock_267KHZ);
HalSensorWriteRegByte(PWR_MGMT_1, 0x00); //解除休眠状态
HalSensorWriteRegByte(SMPLRT_DIV, 0x07);
HalSensorWriteRegByte(CONFIG, 0x06);
HalSensorWriteRegByte(GYRO_CONFIG, 0x18);
HalSensorWriteRegByte(ACCEL_CONFIG, 0x01);
} // accInit
读加速度的程序如下:
uint16 accx,accy,accz,gyrox,gyroy,gyroz,ttemp;
void accReadAcc(int16 *paXVal, int16 *paYVal, int16 *paZVal,
int16 *pgXVal, int16 *pgYVal, int16 *pgZVal,
int16 *pTEMP)
{
HalI2CInit(0x68,i2cClock_533KHZ);
HalSensorReadReg(ACCEL_XOUT_H, (uint8 *)&accx,2 );
HalSensorReadReg(ACCEL_YOUT_H, (uint8 *)&accy,2 );
HalSensorReadReg(ACCEL_ZOUT_H, (uint8 *)&accz,2 );
HalSensorReadReg(GYRO_XOUT_H, (uint8 *)&gyrox,2 );
HalSensorReadReg(GYRO_YOUT_H, (uint8 *)&gyroy,2 );
HalSensorReadReg(GYRO_ZOUT_H, (uint8 *)&gyroz,2 );
HalSensorReadReg(TEMP_OUT_H, (uint8 *)&ttemp,2 );
*paXVal = accx;
*paYVal = accy;
*paZVal = accy;
*pgXVal = gyrox;
*pgYVal = gyroy;
*pgZVal = gyroz;
*pTEMP = ttemp; // 需转换计算出温度
// *pXVal = (int8)(gyrox/256);
// *pYVal = (int8)(gyroy/256);
// *pZVal = (int8)(gyroz/256);
} // accReadAcc
读到的加速度值了大于10000,也不知哪里出了问题 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|