user.zip
大小:51.98KB
价格:44积分
下载量:0
评分:
5.0
上传者:2301_80420459
更新日期:2025-09-22

STM32F4 HAL库 MPU6050 软件I2C DMP库读取,可获得稳定偏航角yaw

资源文件列表(大概)

文件名
大小
user/
-
user/delay.c
628B
user/filter.c
4.86KB
user/inc/
-
user/inc/delay.h
166B
user/inc/dmpKey.h
18.89KB
user/inc/dmpmap.h
6.61KB
user/inc/filter.h
760B
user/inc/inv_mpu.h
4.23KB
user/inc/inv_mpu_dmp_motion_driver.h
3.31KB
user/inc/ioi2c.h
1.54KB
user/inc/KF.h
322B
user/inc/mpu6050.h
14.67KB
user/inv_mpu.c
82.08KB
user/inv_mpu_dmp_motion_driver.c
56.51KB
user/IOI2C.c
4.82KB
user/KF.c
6.37KB
user/MPU6050.c
12.26KB

资源内容介绍

STM32F4 HAL库 MPU6050 软件I2C DMP库读取,可获得稳定偏航角yaw
/** * @addtogroup DRIVERS Sensor Driver Layer * @brief Hardware drivers to communicate with sensors via I2C. * * @{ * @file inv_mpu.c * @brief An I2C-based driver for Invensense gyroscopes. * @details This driver currently works for the following devices: * MPU6050 * MPU6500 * MPU9150 (or MPU6050 w/ AK8975 on the auxiliary bus) * MPU9250 (or MPU6500 w/ AK8963 on the auxiliary bus) */#include "main.h"/* The following functions must be defined for this platform: * i2c_write(unsigned char slave_addr, unsigned char reg_addr, * unsigned char length, unsigned char const *data) * i2c_read(unsigned char slave_addr, unsigned char reg_addr, * unsigned char length, unsigned char *data) * delay_ms(unsigned long num_ms) * get_ms(unsigned long *count) * reg_int_cb(void (*cb)(void), unsigned char port, unsigned char pin) * labs(long x) * fabsf(float x) * min(int a, int b) */#define MPU6050#define MOTION_DRIVER_TARGET_MSP430#if defined MOTION_DRIVER_TARGET_MSP430#define i2c_write i2cWrite#define i2c_read i2cRead#define delay_ms delay_ms#define get_ms myget_ms//static int reg_int_cb(struct int_param_s *int_param)//{// //return 0;//} //#define log_i(...) do {} while (0)//#define log_e(...) do {} while (0)#define log_e printf#define log_i printf#define fabs fabsf#define min(a,b) ((a<b)?a:b)#elif defined EMPL_TARGET_MSP430#include "msp430.h"#include "msp430_i2c.h"#include "msp430_clock.h"#include "msp430_interrupt.h"#include "log.h"static inline int reg_int_cb(struct int_param_s *int_param){ return msp430_reg_int_cb(int_param->cb, int_param->pin, int_param->lp_exit, int_param->active_low);}#define log_i MPL_LOGI#define log_e MPL_LOGE#define fabs fabsf#define min(a,b) ((a<b)?a:b)#elif defined EMPL_TARGET_UC3L0/* Instead of using the standard TWI driver from the ASF library, we're using * a TWI driver that follows the slave address + register address convention. */#include "twi.h"#include "delay.h"#include "sysclk.h"#include "log.h"#include "sensors_xplained.h"#include "uc3l0_clock.h"#define i2c_write(a, b, c, d) twi_write(a, b, d, c)#define i2c_read(a, b, c, d) twi_read(a, b, d, c)#define get_ms uc3l0_get_clock_msstatic inline int reg_int_cb(struct int_param_s *int_param){ sensor_board_irq_connect(int_param->pin, int_param->cb, int_param->arg); return 0;}#define log_i MPL_LOGI#define log_e MPL_LOGE#define labs abs#define fabs(x) (((x)>0)?(x):-(x))#else//#error Gyro driver is missing the system layer implementations.#endif#if !defined MPU6050 && !defined MPU9150 && !defined MPU6500 && !defined MPU9250//#error Which gyro are you using? Define MPUxxxx in your compiler options.#endif/* Time for some messy macro work. =] * #define MPU9150 * is equivalent to.. * #define MPU6050 * #define AK8975_SECONDARY * * #define MPU9250 * is equivalent to.. * #define MPU6500 * #define AK8963_SECONDARY */#if defined MPU9150#ifndef MPU6050#define MPU6050#endif #if defined AK8963_SECONDARY#error "MPU9150 and AK8963_SECONDARY cannot both be defined."#elif !defined AK8975_SECONDARY #define AK8975_SECONDARY#endif #elif defined MPU9250 #ifndef MPU6500#define MPU6500#endif #if defined AK8975_SECONDARY#error "MPU9250 and AK8975_SECONDARY cannot both be defined."#elif !defined AK8963_SECONDARY #define AK8963_SECONDARY#endif #endif #if defined AK8975_SECONDARY || defined AK8963_SECONDARY#define AK89xx_SECONDARY#else#endifstatic int set_int_enable(unsigned char enable);struct gyro_reg_s { unsigned char who_am_i; unsigned char rate_div; unsigned char lpf; unsigned char prod_id; unsigned char user_ctrl; unsigned char fifo_en; unsigned char gyro_cfg; unsigned char accel_cfg; //unsigned char accel_cfg2; //unsigned char lp_accel_odr; unsigned char motion_thr; unsigned char motion_dur; unsigned char fifo_count_h; unsigned char fifo_r_w; unsigned char raw_gyro; unsigned char raw_accel; unsigned char temp; unsigned char int_enable; unsigned char dmp_int_status; unsigned char int_status; //unsigned char accel_intel; unsigned char pwr_mgmt_1; unsigned char pwr_mgmt_2; unsigned char int_pin_cfg; unsigned char mem_r_w; unsigned char accel_offs; unsigned char i2c_mst; unsigned char bank_sel; unsigned char mem_start_addr; unsigned char prgm_start_h;#if defined AK89xx_SECONDARY unsigned char s0_addr; unsigned char s0_reg; unsigned char s0_ctrl; unsigned char s1_addr; unsigned char s1_reg; unsigned char s1_ctrl; unsigned char s4_ctrl; unsigned char s0_do; unsigned char s1_do; unsigned char i2c_delay_ctrl; unsigned char raw_compass; unsigned char yg_offs_tc;#endif};struct hw_s { unsigned char addr; unsigned short max_fifo; unsigned char num_reg; unsigned short temp_sens; short temp_offset; unsigned short bank_size;#if defined AK89xx_SECONDARY unsigned short compass_fsr;#endif};/* When entering motion interrupt mode, the driver keeps track of the * previous state so that it can be restored at a later time. * TODO: This is tacky. Fix it. */struct motion_int_cache_s { unsigned short gyro_fsr; unsigned char accel_fsr; unsigned short lpf; unsigned short sample_rate; unsigned char sensors_on; unsigned char fifo_sensors; unsigned char dmp_on;};/* Cached chip configuration data. * TODO: A lot of these can be handled with a bitmask. */struct chip_cfg_s { unsigned char gyro_fsr; unsigned char accel_fsr; unsigned char sensors; unsigned char lpf; unsigned char clk_src; unsigned short sample_rate; unsigned char fifo_enable; unsigned char int_enable; unsigned char bypass_mode; /* 1 if half-sensitivity. * NOTE: This doesn't belong here, but everything else in hw_s is const, * and this allows us to save some precious RAM. */ unsigned char accel_half; /* 1 if device in low-power acce

用户评论 (0)

发表评论

captcha

相关资源

熊猫精灵脚本助手V2.4.6

已完成功能:识图、识色、OCR、验证码、鼠标、键盘、输入、变量、操作集合、流程控制、窗口控制、外部程序控制等支持后台操作,多窗口异步操作,键鼠录制,生成运行脚本运行,速度调节,逻辑判断适用环境:游戏,浏览器,小程序,模拟器,手机投屏,fps游戏常见软件等环境

16.46MB31积分

Template工程模板.zip

Template工程模板.zip

5.9MB33积分

tongrds-mc-2.2.1.4tongrds-node-2.2.1.4

东方通tongRDS aarch64

19.43MB10积分

高度可配置化的企业管理系统!企业内部可免费使用!零代码/低代码快速搭建企业中台、CRM客户关系管理、WMS库存管理

开始使用 REBUILD 非常简单,无需配置复杂的运行环境,零依赖快速部署!1. 使用已发布版本生产环境强烈推荐使用此方式 !!!首先 下载 安装包,我们同时提供 standalone 与 boot 两种安装包。standalone 为集成安装包(推荐),boot 为 SpringBoot 的 jar 包,两种安装包在功能上没有区别。下载后解压(集成安装包),通过 start-rebuild.bat 或 start-rebuild.sh 启动,然后打开浏览器输入 http://localhost:18080/ 开始体验。2. 通过源码编译注意 !!! 生产环境请使用 master 分支(默认分支),其他分支为开发分支,功能存在不确定性!# 拉取git clone --depth=1 https://github.com/getrebuild/rebuild.git# 编译mvn package# 运行java -jar target/rebuild.jar运行后打开浏览器输入 http://localhost:18080/ 开始体验。

13.57MB15积分