关键词不能为空

当前您在: 主页 > 英语 >

MPU9250配置例程

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 18:48
tags:

-

2021年2月1日发(作者:闪动)


MPU9250



SPI


读取例程,


由一个忘了什么来源的程序改成,


只需要改


SPI



CS


的宏定 义,


加上延时函数,


就可以使用,亲测可用,

< br>发上来给那些找不到例程的朋友,


配置后的状态在


另一个 文档里,名为


MPU9250


刷新速率和单位,程序如有侵权等 ,请联系





//MPU9250


的陀螺仪单位转换系数:



//#define MPU9250_Gyro_FS1000 32.8



//MPU9250


的加速度计单位 转换系数:



//#define Acc_FS2g



1671.84//to m/ss


//MPU9250


磁力计的单位转换系数:



//#define Mega_FS16BIT_Ga



6.83



/*1uT-10mGass*/


static s16 MPU9250_AK8963_ASA[3] = {0, 0, 0};//1T=10000GASS 1uT=0.01GASS


//


定义


MPU9250


内部地址



//// ////////////////////////////////////////////////// ////////////////////


//Register Map for Gyroscope and Accelerometer


#define MPU9250_SELF_TEST_X_GYRO









0x00


#define MPU9250_SELF_TEST_Y_GYRO









0x01


#define MPU9250_SELF_TEST_Z_GYRO









0x02



#define MPU9250_SELF_TEST_X_ACCEL








0x0D


#define MPU9250_SELF_TEST_Y_ACCEL








0x0E


#define MPU9250_SELF_TEST_Z_ACCEL








0x0F



#define MPU9250_XG_OFFSET_H














0x13


#define MPU9250_XG_OFFSET_L














0x14


#define MPU9250_YG_OFFSET_H














0x15


#define MPU9250_YG_OFFSET_L














0x16


#define MPU9250_ZG_OFFSET_H














0x17


#define MPU9250_ZG_OFFSET_L














0x18


#define MPU9250_SMPLRT_DIV















0x19


/


/


陀螺仪采样率,典型值:


0x07(125Hz)


#define MPU9250_CONFIG



















0x1A


//


低通滤波频率,


典型值:


0x06(5Hz)


#define MPU9250_GYRO_CONFIG














0x1B


//


陀螺仪自检及测量范围 ,典型值:


0x18(


不自检,


200 0deg/s)


#define MPU9250_ACCEL_CONFIG













0x1C


//


加速计自检、


测量范围及高通滤波


频率,典型值:


0x01(


不自检,


2G



5Hz)


#define MPU9250_ACCEL_CONFIG2












0x1D


#define MPU9250_LP_ACCEL_ODR













0x1E


#define MPU9250_WOM_THR


















0x1F



#define MPU9250_FIFO_EN


















0x23


#define MPU9250_I2C_MST_CTRL













0x24


#define MPU9250_I2C_SLV0_ADDR












0x25


#define MPU9250_I2C_SLV0_REG













0x26


#define MPU9250_I2C_SLV0_CTRL












0x27


#define MPU9250_I2C_SLV1_ADDR












0x28


#define MPU9250_I2C_SLV1_REG













0x29


#define MPU9250_I2C_SLV1_CTRL












0x2A


#define MPU9250_I2C_SLV2_ADDR












0x2B


#define MPU9250_I2C_SLV2_REG













0x2C


#define MPU9250_I2C_SLV2_CTRL












0x2D


#define MPU9250_I2C_SLV3_ADDR












0x2E


#define MPU9250_I2C_SLV3_REG













0x2F


#define MPU9250_I2C_SLV3_CTRL












0x30


#define MPU9250_I2C_SLV4_ADDR












0x31


#define MPU9250_I2C_SLV4_REG











#define MPU9250_I2C_SLV4_DO












#define MPU9250_I2C_SLV4_CTRL










#define MPU9250_I2C_SLV4_DI












#define MPU9250_I2C_MST_STATUS








#define MPU9250_INT_PIN_CFG












#define MPU9250_INT_ENABLE













#define MPU9250_INT_STATUS













#define MPU9250_ACCEL_XOUT_H










#define MPU9250_ACCEL_XOUT_L










#define MPU9250_ACCEL_YOUT_H










#define MPU9250_ACCEL_YOUT_L










#define MPU9250_ACCEL_ZOUT_H










#define MPU9250_ACCEL_ZOUT_L










#define MPU9250_TEMP_OUT_H











#define MPU9250_TEMP_OUT_L











#define MPU9250_GYRO_XOUT_H










#define MPU9250_GYRO_XOUT_L











#define MPU9250_GYRO_YOUT_H










#define MPU9250_GYRO_YOUT_L











#define MPU9250_GYRO_ZOUT_H










#define MPU9250_GYRO_ZOUT_L











#define MPU9250_EXT_SENS_DATA_00






#define MPU9250_EXT_SENS_DATA_01






#define MPU9250_EXT_SENS_DATA_02






#define MPU9250_EXT_SENS_DATA_03






#define MPU9250_EXT_SENS_DATA_04






#define MPU9250_EXT_SENS_DATA_05






#define MPU9250_EXT_SENS_DATA_06






#define MPU9250_EXT_SENS_DATA_07






#define MPU9250_EXT_SENS_DATA_08






#define MPU9250_EXT_SENS_DATA_09






#define MPU9250_EXT_SENS_DATA_10






#define MPU9250_EXT_SENS_DATA_11






0x32



0x33


0x34


0x35



0x36



0x37



0x38


0x3A




0x3B



0x3C




0x3D



0x3E




0x3F



0x40




0x41




0x42




0x43




0x44




0x45




0x46




0x47




0x48



0x49



0x4A



0x4B



0x4C



0x4D



0x4E



0x4F



0x50



0x51



0x52



0x53



0x54






























































#define MPU9250_EXT_SENS_DATA_12









0x55


#define MPU9250_EXT_SENS_DATA_13









0x56


#define MPU9250_EXT_SENS_DATA_14









0x57


#define MPU9250_EXT_SENS_DATA_15









0x58


#define MPU9250_EXT_SENS_DATA_16









0x59


#define MPU9250_EXT_SENS_DATA_17









0x5A


#define MPU9250_EXT_SENS_DATA_18









0x5B


#define MPU9250_EXT_SENS_DATA_19









0x5C


#define MPU9250_EXT_SENS_DATA_20









0x5D


#define MPU9250_EXT_SENS_DATA_21







#define MPU9250_EXT_SENS_DATA_22







#define MPU9250_EXT_SENS_DATA_23








#define MPU9250_I2C_SLV0_DO












#define MPU9250_I2C_SLV1_DO












#define MPU9250_I2C_SLV2_DO












#define MPU9250_I2C_SLV3_DO












#define MPU9250_I2C_MST_DELAY_CTRL





#define MPU9250_SIGNAL_PATH_RESET






#define MPU9250_MOT_DETECT_CTRL







#define MPU9250_USER_CTRL














#define MPU9250_PWR_MGMT_1











#define MPU9250_PWR_MGMT_2












#define MPU9250_FIFO_COUNTH











#define MPU9250_FIFO_COUNTL












#define MPU9250_FIFO_R_W















#define MPU9250_WHO_AM_I














#define MPU9250_XA_OFFSET_H












#define MPU9250_XA_OFFSET_L













#define MPU9250_YA_OFFSET_H












#define MPU9250_YA_OFFSET_L













#define MPU9250_ZA_OFFSET_H












#define MPU9250_ZA_OFFSET_L












//


#define MPU9250_I2C_READ 0x80



//Magnetometer register maps


#define MPU9250_AK8963_WIA













#define MPU9250_AK8963_INFO












#define MPU9250_AK8963_ST1













#define MPU9250_AK8963_XOUT_L










0x5E


0x5F


0x60


0x63


0x64


0x65


0x66


0x67


0x68



0x69


0x6A




0x6B


//


电源管理,


典型值:


0x00(


正常启用


)




0x6C



0x72


0x73


0x74




0x75


//ID


寄存器


(


默认数值


0x71


,只读


)


0x77


0x78


0x7A


0x7B


0x7D


0x7E





0x00





0x01





0x02





0x03























































#define MPU9250_AK8963_XOUT_H















0x04


#define MPU9250_AK8963_YOUT_L















0x05


#define MPU9250_AK8963_YOUT_H















0x06


#define MPU9250_AK8963_ZOUT_L















0x07


#define MPU9250_AK8963_ZOUT_H















0x08


#define MPU9250_AK8963_ST2


















0x09


#define MPU9250_AK8963_CNTL

















0x0A


#define MPU9250_AK8963_CNTL2
















0x0B


#define


MPU9250_AK8963_RSV


















0x0B


//DO


NOT


ACCESS



#define MPU9250_AK8963_ASTC

















0x0C


#define MPU9250_AK8963_TS1


















0x0D //DO NOT ACCESS


#define MPU9250_AK8963_TS2


















0x0E //DO NOT ACCESS


#define MPU9250_AK8963_I2CDIS















0x0F


#define MPU9250_AK8963_ASAX

















0x10


#define MPU9250_AK8963_ASAY

















0x11


#define MPU9250_AK8963_ASAZ

















0x12



#define MPU9250_AK8963_I2C_ADDR 0x0C


#define MPU9250_AK8963_POWER_DOWN 0x10


#define MPU9250_AK8963_FUSE_ROM_ACCESS 0x1F


#define MPU9250_AK8963_SINGLE_MEASUREMENT 0x11


#define MPU9250_AK8963_CONTINUOUS_MEASUREMENT 0x16 //MODE2


刷新速率


100Hz


#define MPU9250_AK8963_DATA_READY







(0x01)


#define MPU9250_AK8963_DATA_OVERRUN





(0x02)


#define MPU9250_AK8963_OVERFLOW









(0x80)


#define MPU9250_AK8963_DATA_ERROR







(0x40)


#define MPU9250_AK8963_CNTL2_SRST 0x01



//


#define MPU9250_I2C_SLV4_EN 0x80


#define MPU9250_I2C_SLV4_DONE 0x40


#define MPU9250_I2C_SLV4_NACK 0x10


//


#define MPU9250_I2C_IF_DIS (0x10)


#define MPU9250_I2C_MST_EN (0x20)


#define MPU9250_FIFO_RST (0x04)


#define MPU9250_FIFO_ENABLE (0x40)


//


#define MPU9250_RESET 0x80


#define MPU9250_CLOCK_MASK 0xF8


#define MPU9250_CLOCK_INTERNAL 0x00


#define MPU9250_CLOCK_PLL 0x01


#define MPU9250_CLOCK_PLLGYROZ 0x03


#define MPU9250_FS_SEL_MASK 0xE7


#define MPU9250_SLEEP_MASK 0x40


//


#define MPU9250_XYZ_GYRO 0xC7


#define MPU9250_XYZ_ACCEL 0xF8


//


#define MPU9250_RAW_RDY_EN (0x01)


#define MPU9250_RAW_DATA_RDY_INT (0x01)


#define MPU9250_FIFO_OVERFLOW (0x10)


//


#define MPU9250_INT_ANYRD_2CLEAR (0x10)


#define MPU9250_LATCH_INT_EN (0x20)


//


#define MPU9250_MAX_FIFO (1024)


#define MPU9250_FIFO_SIZE_1024



(0x40)


#define MPU9250_FIFO_SIZE_2048



(0x80)


#define MPU9250_FIFO_SIZE_4096



(0xC0)



#define MPU9250_TEMP_OUT (0x80)


#define MPU9250_GYRO_XOUT (0x40)


#define MPU9250_GYRO_YOUT (0x20)


#define MPU9250_GYRO_ZOUT (0x10)


#define MPU9250_ACCEL (0x08)


////////////////// ////////////////////////////////////////////////// //////


#define SMPLRT_DIV 0


#define MPU9250_SPIx_ADDR 0x00

< br>/********************************************** ********************************


/


#define MPU9250_SPI_ReadWriteByte(x)


SPI1_ReadWriteByte(x)


#define MPU9250_CS_L











GPIO_ResetBits(GPIOA,GPIO_Pin_4)





#define MPU9250_CS_H











GPIO_SetBits(GPIOA,GPIO_Pin_4)

< br>/********************************************** ********************************


/

< p>
//////////////////////////////////////////// //////////////////////////////


enum MPU9250_GYRO_DLPF



{






MPU9250_GYRO_DLPF_250HZ = 0,






MPU9250_GYRO_DLPF_184HZ,






MPU9250_GYRO_DLPF_92HZ,






MPU9250_GYRO_DLPF_41HZ,






MPU9250_GYRO_DLPF_20HZ,






MPU9250_GYRO_DLPF_10HZ,






MPU9250_GYRO_DLPF_5HZ,






MPU9250_GYRO_DLPF_3600HZ,






NUM_GYRO_DLPF


};


enum MPU9250_GYRO_FSR



{






MPU9250_FSR_250DPS = 0,






MPU9250_FSR_500DPS,






MPU9250_FSR_1000DPS,






MPU9250_FSR_2000DPS,






MPU9250_NUM_GYRO_FSR


};


enum MPU9250_ACCEL_DLPF



{






MPU9250_ACCEL_DLPF_460HZ = 0,






MPU9250_ACCEL_DLPF_184HZ,






MPU9250_ACCEL_DLPF_92HZ,






MPU9250_ACCEL_DLPF_41HZ,






MPU9250_ACCEL_DLPF_20HZ,






MPU9250_ACCEL_DLPF_10HZ,






MPU9250_ACCEL_DLPF_5HZ,






MPU9250_ACCEL_DLPF_460HZ2,






MPU9250_NUM_ACCEL_DLPF


};


enum MPU9250_ACCEL_FSR



{






MPU9250_FSR_2G = 0,






MPU9250_FSR_4G,






MPU9250_FSR_8G,






MPU9250_FSR_16G,






MPU9250_NUM_ACCEL_FSR


};


enum MPU9250_CLK



{






MPU9250_CLK_INTERNAL = 0,






MPU9250_CLK_PLL,






MPU9250_NUM_CLK


};


//MPU9250_SPI_Write


//MPU925 0



SPI


写一个字节函数

< p>


//reg_addr


寄存器地址




data


要写入的数据



void MPU9250_SPI_Write(u8 reg_addr, u8 data)


{



MPU9250_CS_L;



MPU9250_SPI_ReadWriteByte(reg_addr);



MPU9250_SPI_ReadWriteByte(data);



MPU9250_CS_H;


}


//MPU9250_SPI_Writes


//MPU92 50



SPI


写多个字节函数



//reg_addr


寄存器地址


len


字节数




*data


要写入的数据存放的数组



void MPU9250_SPI_Writes(u8 reg_addr, u8 len, u8* data)


{



u32i = 0;



MPU9250_CS_L;



MPU9250_SPI_ReadWriteByte(reg_addr);



while(i



{




MPU9250_SPI_ReadWriteByte(data[i++]);



}



MPU9250_CS_H;


}


//MPU9250_SPI_Read


//MPU9250


的读一个字节函数



//reg_addr


寄存器地址



u8 MPU9250_SPI_Read(u8 reg_addr)


{



u8 dummy = 0;



u8 data = 0;




MPU9250_CS_L;



MPU9250_SPI_ReadWriteByte(0x80 | reg_addr);



data = MPU9250_SPI_ReadWriteByte(dummy);



MPU9250_CS_H;



return data;


}


//MPU9250_SPI_Reads


//MPU9250


的读多个字节函数



//reg_addr


寄存器地址


le n


读取字节数



*data


数据存放数组



void MPU9250_SPI_Reads(u8 reg_addr, u8 len, u8* data)


{



u32i = 0;



u8 dummy = 0x00;




MPU9250_CS_L;



MP U9250_SPI_ReadWriteByte(MPU9250_I2C_READ | reg_addr);



while(i




data[i++] = MPU9250_SPI_ReadWriteByte(dummy);

-


-


-


-


-


-


-


-



本文更新与2021-02-01 18:48,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/594563.html

MPU9250配置例程的相关文章