中级会员
 
- 积分
- 240
- 金钱
- 240
- 注册时间
- 2018-4-21
- 在线时间
- 105 小时
|

楼主 |
发表于 2018-10-13 14:50:18
|
显示全部楼层
uint8_t MPU9250_Init(void)
{
uint8_t res=0;
I2C_Init();
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X80);
delay_Nms(100);
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X00);
MPU_Set_Gyro_Fsr(3); //ÍÓÂÝÒÇ´«¸ÐÆ÷,¡À2000dps
MPU_Set_LPF(42);
MPU_Set_Accel_Fsr(0);
MPU_Set_Rate(500); //ÉèÖòÉÑùÂÊ500Hz
MPU_Write_Byte(MPU9250_ADDR,MPU_INT_EN_REG,0X00); //¹Ø±ÕËùÓÐÖжÏ
MPU_Write_Byte(MPU9250_ADDR,MPU_USER_CTRL_REG,0X00);//I2CÖ÷ģʽ¹Ø±Õ
MPU_Write_Byte(MPU9250_ADDR,MPU_FIFO_EN_REG,0XFF);
MPU_Write_Byte(MPU9250_ADDR,MPU_INTBP_CFG_REG,0X82);//INTÒý½ÅµÍµçƽÓÐЧ£¬¿ªÆôbypassģʽ£¬¿ÉÒÔÖ±½Ó¶ÁÈ¡´ÅÁ¦¼Æ
res=MPU_Read_Byte(MPU9250_ADDR,MPU_DEVICE_ID_REG|0x80); //¶ÁÈ¡MPU6500µÄID
if(res==MPU6500_ID) //Æ÷¼þIDÕýÈ·
{
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X01); //ÉèÖÃCLKSEL,PLL XÖáΪ²Î¿¼
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT2_REG,0X00); //¼ÓËÙ¶ÈÓëÍÓÂÝÒǶ¼¹¤×÷
MPU_Set_Rate(500); //ÉèÖòÉÑùÂÊΪ500Hz
}else return 1;
res=MPU_Read_Byte(AK8963_ADDR,MAG_WIA); //¶ÁÈ¡AK8963 ID
if(res==AK8963_ID)
{
MPU_Write_Byte(AK8963_ADDR,MAG_CNTL1,0X11); //ÉèÖÃAK8963Ϊµ¥´Î²âÁ¿Ä£Ê½
delay_Nms(100);
}else return 1;
return 0;
} 这个是我9250初始化的代码
void MPU_Get_Magnetometer(struct _meg *Meg)
{
uint8_t buf[6];
MPU_Read_Len(AK8963_ADDR, MAG_XOUT_L, 6, buf);
Meg->x = ((uint16_t)buf[1] << 8) | buf[0];
Meg->y = ((uint16_t)buf[3] << 8) | buf[2];
Meg->z = ((uint16_t)buf[5] << 8) | buf[4];
MPU_Write_Byte(AK8963_ADDR, MAG_CNTL1, 0X11); //AK8963ÿ´Î¶ÁÍêÒÔºó¶¼ÐèÒªÖØÐÂÉèÖÃΪµ¥´Î²âÁ¿Ä£Ê½
}这个是磁力计读取代码 读取频率是1000hz 因为要做姿态解算 所以频率高点 |
|