Skip to content

Latest commit

 

History

History
200 lines (150 loc) · 6.25 KB

api.md

File metadata and controls

200 lines (150 loc) · 6.25 KB

API 说明

在 RT-Thread 上编程,需要用到 mpu6000/6050/6500/9250/icm20608 等 6 轴传感器时,使用 mpu6xxx 软件包就可以轻松完成传感器的配置以及传感器数据的读取,本章介绍 mpu6xxx 软件包提供的常用 API。

初始化函数

struct mpu6xxx_device *mpu6xxx_init(const char *dev_name, rt_uint8_t param);

使用指定的通信设备(I2C/SPI)初始化mpu6xxx ,并返回控制句柄。

参数 描述
dev_name 用于同 mpu6xxx 通信的设备名(支持 I2C 总线设备和 SPI 设备)
param I2C 通信,根据此处传入的 I2C 地址寻找设备(例如:0x68)
返回 描述
struct mpu6xxx_device * mpu6xxx_device 结构体的指针,它在调用 mpu6xxx 库的其他函数时使用
NULL 失败

反初始化函数

void mpu6xxx_deinit(struct mpu6xxx_device *dev);

释放 mpu6xxx 设备占据的内存空间

参数 描述
dev mpu6xxx_device 结构体的指针
返回 描述
无返回值

设定参数

rt_err_t mpu6xxx_set_param(struct mpu6xxx_device *dev, enum mpu6xxx_cmd cmd, rt_uint16_t param);

为挂载上的 mpu6xxx 设备设定参数

参数 描述
dev mpu6xxx_device 结构体的指针
cmd 支持的配置选项,详见下面的介绍
param 设定的具体的参数值
返回 描述
RT_EOK 成功
< 0 失败

cmd 参数指要配置的选项,param 参数表示设定的参数的具体值。详情如下:

支持的配置选项

参数 描述
MPU6XXX_GYRO_RANGE 配置陀螺仪的测量范围
MPU6XXX_ACCEL_RANGE 配置加速度计的测量范围
MPU6XXX_DLPF_CONFIG 配置低通滤波器
MPU6XXX_SAMPLE_RATE 配置采样率
MPU6XXX_SLEEP 配置休眠模式

MPU6XXX_GYRO_RANGE 参数的值

MPU6XXX_GYRO_RANGE_250DPS  // ±250°/s
MPU6XXX_GYRO_RANGE_500DPS  // ±500°/s
MPU6XXX_GYRO_RANGE_1000DPS // ±1000°/s
MPU6XXX_GYRO_RANGE_2000DPS // ±2000°/s

MPU6XXX_ACCEL_RANGE 参数的值

MPU6XXX_ACCEL_RANGE_2G   // ±2G
MPU6XXX_ACCEL_RANGE_4G   // ±4G
MPU6XXX_ACCEL_RANGE_8G   // ±8G
MPU6XXX_ACCEL_RANGE_16G  // ±16G

MPU6XXX_DLPF_CONFIG 参数的值

MPU6XXX_DLPF_DISABLE  //256HZ
MPU6XXX_DLPF_188HZ    //188HZ
MPU6XXX_DLPF_98HZ
MPU6XXX_DLPF_42HZ
MPU6XXX_DLPF_20HZ
MPU6XXX_DLPF_10HZ
MPU6XXX_DLPF_5HZ

MPU6XXX_SAMPLE_RATE 参数的值

传入采样率的值(16-bit unsigned value.)
如果使能了低通滤波器(dlpf)的话,范围为 1000HZ - 4HZ。否则,范围为 8000HZ - 32HZ

MPU6XXX_SLEEP 参数的值

MPU6XXX_SLEEP_DISABLE //退出休眠模式
MPU6XXX_SLEEP_ENABLE  //进入休眠模式

读取陀螺仪数据

rt_err_t mpu6xxx_get_gyro(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *gyro);

读取陀螺仪数据 (单位: deg/10s)

参数 描述
dev mpu6xxx_device 结构体的指针
gyro 存储 mpu6xxx 3轴陀螺仪数据 结构体的指针
返回 描述
RT_EOK 成功
< 0 失败

3 轴陀螺仪数据的结构体定义如下

struct mpu6xxx_3axes
{
    rt_int16_t x;
    rt_int16_t y;
    rt_int16_t z;
};

读取加速度计数据

rt_err_t mpu6xxx_get_accel(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *accel);

读取加速度计数据 (单位: mg)

参数 描述
dev mpu6xxx_device 结构体的指针
accel 存储 mpu6xxx 3轴加速度数据 结构体的指针
返回 描述
RT_EOK 成功
< 0 失败

校准传感器

校准陀螺仪

rt_err_t mpu6xxx_set_gyro_offset(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *offset);

校准陀螺仪。注意offset的单位和读取数据的单位不同。

参数 描述
dev mpu6xxx_device 结构体的指针
offset 存储 校准量 结构体的指针
返回 描述
RT_EOK 成功
其他 失败

校准加速度传感器

rt_err_t mpu6xxx_set_gyro_offset(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *offset);

校准加速度传感器。注意offset的单位和读取数据的单位不同。

参数 描述
dev mpu6xxx_device 结构体的指针
offset 存储 校准量 结构体的指针
返回 描述
RT_EOK 成功
其他 失败

读取温度计数据

rt_err_t mpu6xxx_get_temp(struct mpu6xxx_device *dev, float *temp);

读取温度计数据 (单位:摄氏度)

参数 描述
dev mpu6xxx_device 结构体的指针
temp 存储 mpu6xxx 温度数据地址的指针
返回 描述
RT_EOK 成功
< 0 失败