OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4171|回复: 1

MPU6050的问题

[复制链接]

5

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-1-15
在线时间
7 小时
发表于 2019-1-24 23:22:03 | 显示全部楼层 |阅读模式
12金钱
问题是这样,我在移植官方的MPL的库,准备用内部的DMP姿态解算。

看了官方的文档以后,在eMPL_outputs.h 这个c文件中有 int inv_get_sensor_type_euler(long *data, int8_t *accuracy, inv_time_t *timestamp);这样一个获取欧拉角的函数。但是我看网上别人移植的时候,还有参考书上,都是采取从DMP的FIFO中读取四元数数据,然后自己写一个函数来把四元数转换成欧拉角。为什么不用现成的而要自己写呢?

第二个问题是,官方的文件里面有hal_outputs.c这个文件,又有eMPL_outputs.c这个文件。这俩文件里面实现的函数功能都是差不多的。

hal_outputs.c里有这些函数
int inv_get_sensor_type_orientation(float *values, int8_t *accuracy,
                                         inv_time_t * timestamp);
    int inv_get_sensor_type_accelerometer(float *values, int8_t *accuracy,
                                           inv_time_t * timestamp);
    int inv_get_sensor_type_gyroscope(float *values, int8_t *accuracy,
                                       inv_time_t * timestamp);
    int inv_get_sensor_type_gyroscope_raw(float *values, int8_t *accuracy,
                                       inv_time_t * timestamp);
    int inv_get_sensor_type_magnetic_field(float *values, int8_t *accuracy,
                                            inv_time_t * timestamp);
    int inv_get_sensor_type_rotation_vector(float *values, int8_t *accuracy,
            inv_time_t * timestamp);

    int inv_get_sensor_type_linear_acceleration(float *values,
            int8_t *accuracy,
            inv_time_t * timestamp);
    int inv_get_sensor_type_gravity(float *values, int8_t *accuracy,
                                     inv_time_t * timestamp);

    inv_error_t inv_enable_hal_outputs(void);
    inv_error_t inv_disable_hal_outputs(void);
    inv_error_t inv_init_hal_outputs(void);
    inv_error_t inv_start_hal_outputs(void);
    inv_error_t inv_stop_hal_outputs(void);

而eMPL_outputs.c里面
int inv_get_sensor_type_accel(long *data, int8_t *accuracy, inv_time_t *timestamp);
    int inv_get_sensor_type_gyro(long *data, int8_t *accuracy, inv_time_t *timestamp);
    int inv_get_sensor_type_compass(long *data, int8_t *accuracy, inv_time_t *timestamp);
    int inv_get_sensor_type_quat(long *data, int8_t *accuracy, inv_time_t *timestamp);
    int inv_get_sensor_type_euler(long *data, int8_t *accuracy, inv_time_t *timestamp);
    int inv_get_sensor_type_rot_mat(long *data, int8_t *accuracy, inv_time_t *timestamp);
    int inv_get_sensor_type_heading(long *data, int8_t *accuracy, inv_time_t *timestamp);

    inv_error_t inv_enable_eMPL_outputs(void);
    inv_error_t inv_disable_eMPL_outputs(void);


这俩文件有什么讲究吗? 我能不能只移植empl_outputs.c 不移植这个hal_outputs.c文件?

各位大佬帮忙解解惑。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-1-25 02:24:58 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表