本帖最后由 xiaolinen 于 2023-9-17 16:41 编辑
读《RT-Thread设备驱动开发指南》--- SENSOR设备驱动开发
第一部分:了解SENSOR设备
SENSOR设备就是我们常见的种种传感器,它的作用不言而喻,就是感知外界的各种参数,为系统运行提供数据。SENSOR设备也是I/O设备中的一种,适用I/O设备框架。本次使用到的是MPU6050传感器,其可以用来测试设备的加速度和角速度。
第二部分:SENSOR设备涉及到的函数接口
1,查找设备
rt_device_t rt_device_find(const char* name);
2,打开设备
rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflags);
3,读设备
rt_size_t rt_device_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size);
4,控制设备
rt_err_t rt_device_control(rt_device_t dev, rt_uint8_t cmd, void* arg);
5,接收回调函数
rt_err_t rt_device_set_rx_indicate(rt_device_t dev, rt_err_t (*rx_ind)(rt_device_t dev,rt_size_t size));
6,关设备
rt_err_t rt_device_close(rt_device_t dev);
第三部分:实验测试用的软件包以及现象
1,软件包:mpu6xxx,该软件包依赖于RT-Thread4.00+,serson组件,IIC/SPI驱动;
2,配置选择如下图:
Enable MPU6xxx acce: 配置开启加速度计功能
Enable MPU6xxx gyro: 配置开启陀螺仪功能
Enable MPU6xxx mag: 配置开启磁力计功能
3,主要函数:
3.1初始化:
struct mpu6xxx_device *mpu6xxx_init(const char *dev_name, rt_uint8_t param)
3.2获取加速度数据:
rt_err_t mpu6xxx_get_accel(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *accel)
3.3获取陀螺仪数据:
rt_err_t mpu6xxx_get_gyro(struct mpu6xxx_device *dev, struct mpu6xxx_3axes *gyro)
4,实验现象打印:
accel.x = 11458, accel.y = 10464, accel.z = 4222
gyro.x = 79 gyro.y = 22, gyro.z = 13
accel.x = 11308, accel.y = 10432, accel.z = 4178
gyro.x = 79 gyro.y = 23, gyro.z = 13
accel.x = 11436, accel.y = 10520, accel.z = 4238
gyro.x = 80 gyro.y = 23, gyro.z = 15
accel.x = 11458, accel.y = 10502, accel.z = 4140
gyro.x = 79 gyro.y = 24, gyro.z = 14
accel.x = 11410, accel.y = 10398, accel.z = 4232
gyro.x = 78 gyro.y = 22, gyro.z = 14
accel.x = 11480, accel.y = 10492, accel.z = 4235
gyro.x = 79 gyro.y = 23, gyro.z = 15