资源简介
MPU9250MPL官方版本 已移植好STM32F407例程寄存器版(本人也成功移植到STM32F103上需要的请另外联系),能直接接上MPU9250使用,运行稳定后yaw角不漂移。上传只是希望更多的人开发九轴MPL库,然后可以多多交流学习。
代码片段和文件信息
/************************************************************************/
/********* AHRS.C *************/
/********** Written By LYM---20170304 *************/
/********** Version 1.0 ***************/
/************************************************************************/
#include “AHRS.h“
//-----------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//-----------------------------------------------------------------------
//----------------------数据变量定义-------------------------------------
//-----------------------------------------------------------------------
//=======================================================================
SENSOR_DATA Accoffset;//加速度偏移量
SENSOR_DATA Gyrooffset;//陀螺仪偏移量
SENSOR_DATA Magoffset;//磁力计偏移量
//处理后的数据
extern IMU_DATA GyroFinal;
extern IMU_DATA AccFinal;
extern IMU_DATA MagFinal;
/*
#define Kp 2.0f //比例增益支配收敛率accellrometer/magnetometer
#define Ki 0.005f //积分增益执行速率陀螺仪的衔接gyroscopeases
#define halfT 0.002f//采样周期的一半,若周期为10ms则一般为0.005s*/
float temp_AHRS;//温度
extern float Pitch2;
extern float Roll2;
extern float Yaw2;
extern short mxmymz;
extern short gyro[3] accel[3];
#define sampleFreq 50.0f // sample frequency in Hz 采样率 100 HZ 10ms 修改此频率可增加变化速度
#define betaDef 0.1f // 2 * proportional gain
volatile float beta = betaDef; // 2 * proportional gain (Kp)
volatile float qq0 = 1.0f qq1 = 0.0f qq2 = 0.0f qq3 = 0.0f; // quaternion of sensor frame relativ
float exInt = 0 eyInt = 0ezInt = 0;//按比例缩小积分误差
//-----------------------------------------------------------------------
//----------------------具体函数实现-------------------------------------
//=======================================================================
//快速逆平方根
float invSqrt(float x)
{
float halfx = 0.5f * x;
float y = x;
long i = *(long*)&y;
i = 0x5f3759df - (i>>1);
y = *(float*)&i;
y = y * (1.5f - (halfx * y * y));
return y;
}
//获取MPU9250数据
void Get_MPU9250_DATA(void)
{
MPU9250_Get_Gyroscope(&gyro[0]&gyro[1]&gyro[2]);//读取陀螺仪数据-ADC数字量
MPU9250_Get_Accelerometer(&accel[0]&accel[1]&accel[2]);//读取加速度计数据-ADC数字量
MPU9250_Get_Mag(&mx&my&mz);//读取磁力计数据-ADC数字量
MPU9250_Get_Temperature(&temp_AHRS); //读取温度-温度模拟量
}
void AHRS_Dataprepare(void)
{
Get_MPU9250_DATA();//先获取数据
//16.4 = 2^16/4000 lsb °/s 1/16.4=0.061 0.0174 = 3.14/180
//陀螺仪数据从ADC转化为弧度每秒(这里需要减去偏移值)
GyroFinal.X=(gyro[0]-Gyrooffset.X)*0.061*0.0174;
GyroFinal.Y=(gyro[1]-Gyrooffset.Y)*0.061*0.0174;
GyroFinal.Z=(gyro[2]-Gyrooffset.Z)*0.061*0.0174; //读出值减去基准值乘以单位,计算陀螺仪角速度
/*
AccFinal.X=(float)(Accbuf.X-Accoffset.X);
AccFinal.Y=(float)(Accbuf.Y-Accoffset.Y);
AccFinal.Z=(float)(Accbuf.Z-Accoffset.Z);
*/
//+-8g2^16/16=4096lsb/g--0.244mg/lsb
//此处0.0098是:(9.8m/s^2)/1000乘以mg得m
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12570 2017-03-05 23:45 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\AHRS\AHRS.c
文件 3103 2017-03-05 00:33 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\AHRS\AHRS.h
文件 2560 2016-09-13 14:50 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\KEY\key.c
文件 1240 2016-09-13 14:00 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\LED\LED.c
文件 6548 2016-10-14 22:50 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU6050\MPU6050.c
文件 19342 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\eMPL\dmpKey.h
文件 6765 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\eMPL\dmpmap.h
文件 107417 2017-03-06 13:21 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\eMPL\inv_mpu.c
文件 5278 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\eMPL\inv_mpu.h
文件 58394 2017-03-06 13:15 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\eMPL\inv_mpu_dmp_motion_driver.c
文件 3538 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\eMPL\inv_mpu_dmp_motion_driver.h
文件 10454 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\log.h
文件 1018 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\mlinclude.h
文件 2268 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\mlmath.h
文件 2134 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\mlos.h
文件 9518 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\mltypes.h
文件 11757 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\mpu.h
文件 860 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\include\stdint_invensense.h
文件 6118 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\stm32L\log_stm32.c
文件 1546 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\driver\stm32L\packet.h
文件 11066 2017-03-06 13:22 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\eMPL-hal\eMPL_outputs.c
文件 1316 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\eMPL-hal\eMPL_outputs.h
文件 45891 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\data_builder.c
文件 9509 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\data_builder.h
文件 18333 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\hal_outputs.c
文件 1703 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\hal_outputs.h
文件 660 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\invensense.h
文件 1591 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\message_la
文件 934 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\message_la
文件 1029 2016-04-18 16:59 STM32F407 MPU9250-MPL版本 成功CSDN\HARDWARE\MPU9250\MPL\mllite\mlmath.c
............此处省略191个文件信息
相关资源
- STM32F103c8t6核心板资料很全的就能用
- stm32f103modbus主机程序
- simpleopenni 0.27 WIN3264
- STM32F103+MC20GRPS源码
- STM32F103C8T6控制86步进电机
- 基于stm32f103zet6的水温控制系统
- APDS9960手势识别程序源码
- stm32f030驱动MPU6050
- 《Django By Example》中文带目录文字版
- STM32F103 串口DMA+空闲中断接收(修复版
- PackML_Unit_Machine_Implementation_Guide-V1-00
- STM32F103C8T6定时器TIM4双通道PWM输出
- STM32F103+Modbus通信源码
- Z-Stack 3.0 官方中文翻译
-
mpla
yer+qt的实现 - stm32f103上移植fatfs文件系统
- stm32f103c8t6最小系统版PWM程序
-
Incremental Sampling-ba
sed Algorithms for O - stm32f407+dm9161驱动程序
- stm32f103串口接收数据后发送数组的数
- 正点原子stm32f407探索者LD3320语音识别
- stm32f103c8t6的四轮小车驱动,内部含有
- 这是用stm32F103C8T6操作oled的程序
- 六机器人STM32F103控制程序源码
- 蜘蛛机器人STM32F103控制程序源码
- STM32F103-CAN通讯程序+代码.docx
- stm32f103操作NRF24L01发送和接受数据
- STM32F103ZET6开发板原理图和PCB
- 基于STM32F103RCT6的简易示波器
- STM32F767_429 PCB工程
评论
共有 条评论