# icm20948 ## 简介 这是基于 `ICM20948` 传感器的驱动文档。 ## ICM20948 实例 要创建 `ICM20948` 实例,必须要一个 `machine.I2C` 对象 ``` python from machine import I2C import icm20948, utime imu = icm20948.ICM20948(I2C(0), gyro_scale=icm20948.DPS_2000) ``` 创建 `ICM20948` 可以填入其他可选参数: - `gyro_scale` 配置陀螺仪精度,陀螺仪精度参数仅支持传入以下几种值: - `icm20948.DPS_250` - `icm20948.DPS_500` - `icm20948.DPS_1000` - `icm20948.DPS_2000` - `accel_scale` 配置加速度精度,加速度精度参数仅支持传入以下几种值: - `icm20948.GPM_2` - `icm20948.GPM_4` - `icm20948.GPM_8` - `dmp` 是否启用 `DMP` 融合数据 实例方法 - ICM20948.dataready() 判断传感器数据是否就绪 - ICM20948.dataupdate() 更新传感器数据 - ICM20948.acc_x() > PS. 只有关闭 `DMP` 才能使用该方法 获取X轴加速度数据 - ICM20948.acc_y() > PS. 只有关闭 `DMP` 才能使用该方法 获取Y轴加速度数据 - ICM20948.acc_z() > PS. 只有关闭 `DMP` 才能使用该方法 获取Z轴加速度数据 - ICM20948.gyr_x() > PS. 只有关闭 `DMP` 才能使用该方法 获取X轴角速度数据 - ICM20948.gyr_y() > PS. 只有关闭 `DMP` 才能使用该方法 获取Y轴角速度数据 - ICM20948.gyr_z() > PS. 只有关闭 `DMP` 才能使用该方法 获取Z轴角速度数据 - ICM20948.mag_x() > PS. 只有关闭 `DMP` 才能使用该方法 获取X轴磁力计数据 - ICM20948.mag_y() > PS. 只有关闭 `DMP` 才能使用该方法 获取Y轴磁力计数据 - ICM20948.mag_z() > PS. 只有关闭 `DMP` 才能使用该方法 获取Z轴磁力计数据   示例: ```python from machine import I2C #导入IIC库 import icm20948, utime #导入icm20948库和utime库 imu = icm20948.ICM20948(I2C(0), gyro_scale=icm20948.DPS_2000,accel_scale=icm20948.GPM_8) #构造陀螺仪对象,设置角速度、加速度精度 if imu.dataupdate() and imu.dataready(): #如果陀螺仪数据已经被更新,并且已经准备好了以后才能读取数据。 print(imu.acc_x()) #读取X轴加速度数据 print(imu.acc_y()) #读取Y轴加速度数据 print(imu.acc_z()) #读取Z轴加速度数据 print(imu.gyr_x()) #读取X轴角速度数据 print(imu.gyr_y()) #读取Y轴角速度数据 print(imu.gyr_z()) #读取Z轴角速度数据 print(imu.mag_x()) #读取X轴磁场强度数据 print(imu.mag_y()) #读取Y轴磁场强度数据 print(imu.mag_z()) #读取Z轴磁场强度数据 ``` - ICM20948.quat6() > PS. 只有启用 `DMP` 才能使用该方法 获取六轴融合原始数据   示例: ```python from machine import I2C #导入IIC库 import icm20948, utime,math #导入icm20948库、utime库、math库 imu = icm20948.ICM20948(I2C(0),dmp=True) #构造陀螺仪对象,启用DMP算法 if imu.dataupdate() and imu.dataready(): #如果陀螺仪数据已经被更新,并且已经准备好了以后才能读取数据。 quat_6= imu.quat6() #获取六轴融合原始数据 q1 = quat_6[0]/math.pow(2, 30) #计算q0,q1,q2,q3四元素 q2 = quat_6[1]/math.pow(2, 30) #计算q0,q1,q2,q3四元素 q3 = quat_6[2]/math.pow(2, 30) #计算q0,q1,q2,q3四元素 q0 = math.sqrt(abs(1-(q1*q1+q2*q2+q3*q3))) #计算q0,q1,q2,q3四元素 ```