1、STWINKT1B上有个 三轴磁力计(磁强计)传感器IIS2MDC。它的主要功能是测量磁场强度,并提供每个轴(X、Y、Z)上的磁场分量。它的用途非常广泛,特别是在涉及方向、定位、姿态和磁场探测的应用中。
IIS2MDC 的主要用途包括:电子罗盘,通过测量地球磁场,可以用于确定设备的方位角,即北、东、南、西的方向。
姿态检测和方向感应,作为惯性测量单元(IMU)的一部分,IIS2MDC 可以与加速度计和陀螺仪结合,帮助设备在三维空间中确定其姿态和方向。常用于智能手机、四轴飞行器。
2、IIS2MDC 的通信接口使用IIC
初始化和数据读取,设置量程为50gauss。
BSP_MOTION_SENSOR_Init(IIS2MDC_0, MOTION_MAGNETO);
BSP_MOTION_SENSOR_SetOutputDataRate(IIS2MDC_0, MOTION_MAGNETO, IIS2MDC_MAG_ODR);
BSP_MOTION_SENSOR_SetFullScale(IIS2MDC_0, MOTION_MAGNETO, IIS2MDC_MAG_FS);
数据读取,将读取的数据 乘以以一个转换因子(灵敏度),得到磁场强度。
int32_t IIS2MDC_MAG_GetAxes(IIS2MDC_Object_t *pObj, IIS2MDC_Axes_t *MagneticField)
{
iis2mdc_axis3bit16_t data_raw;
float sensitivity;
/* Read raw data values. */
if (iis2mdc_magnetic_raw_get(&(pObj->Ctx), data_raw.i16bit) != IIS2MDC_OK)
{
return IIS2MDC_ERROR;
}
/* Get IIS2MDC actual sensitivity. */
(void)IIS2MDC_MAG_GetSensitivity(pObj, &sensitivity);
/* Calculate the data. */
MagneticField->x = (int32_t)((float)((float)data_raw.i16bit[0] * sensitivity));
MagneticField->y = (int32_t)((float)((float)data_raw.i16bit[1] * sensitivity));
MagneticField->z = (int32_t)((float)((float)data_raw.i16bit[2] * sensitivity));
return IIS2MDC_OK;
}
数据输出
测试过程缓慢旋转开发板,可以看到xyz轴上的磁场强度进行变化,静止的时候保持不变
|