求助 关于9250硬件连接的问题

2019-07-20 05:39发布

在F4的板子上读9250九轴数据 就连了VCC GND SCAL SDA 加速度和角速度都没有问题 磁力计死活读不出来 我去翻了翻429的开发手册 看到9250还有个INT引脚要连 429是连到一个外接器件上的 没说明是高还是低电平
现在看着429的程序在407上写9250 DEBUG里面磁力计都是0 特来请教各位大佬 那个INT是接高还是接低
void MPU_Get_Gyroscope(struct _gyr *Gyro)
{
uint8_t buf[6];
  MPU_Read_Len(MPU9250_ADDR,MPU_GYRO_XOUTH_REG,6,buf);

Gyro->x= (((uint16_t)buf[0] << 8) | buf[1]);
Gyro->y= (((uint16_t)buf[2] << 8) | buf[3]);
Gyro->z= (((uint16_t)buf[4] << 8) | buf[5]);
}程序应该没有问题吧


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
c627933142
2019-07-20 17:49
正点原子 发表于 2018-10-13 01:53
是我们开发板么?

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);        //&Iacute;&Oacute;&Acirc;&Yacute;&Ograve;&Ccedil;&acute;&laquo;&cedil;&ETH;&AElig;÷,&iexcl;&Agrave;2000dps
        MPU_Set_LPF(42);
        MPU_Set_Accel_Fsr(0);                                                               
  MPU_Set_Rate(500);                                                                        //&Eacute;è&Ouml;&Atilde;&sup2;&Eacute;&Ntilde;ù&Acirc;&Ecirc;500Hz
  MPU_Write_Byte(MPU9250_ADDR,MPU_INT_EN_REG,0X00);   //&sup1;&Oslash;±&Otilde;&Euml;ù&Oacute;&ETH;&Ouml;&ETH;&para;&Iuml;
        MPU_Write_Byte(MPU9250_ADDR,MPU_USER_CTRL_REG,0X00);//I2C&Ouml;÷&Auml;&pound;&Ecirc;&frac12;&sup1;&Oslash;±&Otilde;
        MPU_Write_Byte(MPU9250_ADDR,MPU_FIFO_EN_REG,0XFF);
        MPU_Write_Byte(MPU9250_ADDR,MPU_INTBP_CFG_REG,0X82);//INT&Ograve;&yacute;&frac12;&Aring;&micro;&Iacute;&micro;&ccedil;&AElig;&frac12;&Oacute;&ETH;&ETH;§&pound;&not;&iquest;&ordf;&AElig;&ocirc;bypass&Auml;&pound;&Ecirc;&frac12;&pound;&not;&iquest;&Eacute;&Ograve;&Ocirc;&Ouml;±&frac12;&Oacute;&para;&Aacute;&Egrave;&iexcl;&acute;&Aring;&Aacute;&brvbar;&frac14;&AElig;
        res=MPU_Read_Byte(MPU9250_ADDR,MPU_DEVICE_ID_REG|0x80);  //&para;&Aacute;&Egrave;&iexcl;MPU6500&micro;&Auml;ID
        if(res==MPU6500_ID) //&AElig;÷&frac14;&thorn;ID&Otilde;&yacute;&Egrave;·
        {                       
                 MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X01);          //&Eacute;è&Ouml;&Atilde;CLKSEL,PLL X&Ouml;á&Icirc;&ordf;&sup2;&Icirc;&iquest;&frac14;
                 MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT2_REG,0X00);          //&frac14;&Oacute;&Euml;&Ugrave;&para;&Egrave;&Oacute;&euml;&Iacute;&Oacute;&Acirc;&Yacute;&Ograve;&Ccedil;&para;&frac14;&sup1;¤×÷
                 MPU_Set_Rate(500);                                                               //&Eacute;è&Ouml;&Atilde;&sup2;&Eacute;&Ntilde;ù&Acirc;&Ecirc;&Icirc;&ordf;500Hz   
        }else return 1;

        res=MPU_Read_Byte(AK8963_ADDR,MAG_WIA);                            //&para;&Aacute;&Egrave;&iexcl;AK8963 ID   
        if(res==AK8963_ID)
        {
                 MPU_Write_Byte(AK8963_ADDR,MAG_CNTL1,0X11);                //&Eacute;è&Ouml;&Atilde;AK8963&Icirc;&ordf;&micro;&yen;&acute;&Icirc;&sup2;&acirc;&Aacute;&iquest;&Auml;&pound;&Ecirc;&frac12;
           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&Atilde;&iquest;&acute;&Icirc;&para;&Aacute;&Iacute;ê&Ograve;&Ocirc;&ordm;ó&para;&frac14;&ETH;è&Ograve;&ordf;&Ouml;&Oslash;&ETH;&Acirc;&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;&micro;&yen;&acute;&Icirc;&sup2;&acirc;&Aacute;&iquest;&Auml;&pound;&Ecirc;&frac12;

}这个是磁力计读取代码 读取频率是1000hz 因为要做姿态解算 所以频率高点

一周热门 更多>