[原创] 【ST B-L475E-IOT01A1蓝牙Wi-Fi开发板】4-读取lsm6dsl(加速度+陀螺仪)原始数据

qiao---   2024-3-22 20:42 楼主

这期测评测评一下板载的lsm6dsl传感器,sm6dsl 是一种常用的微型惯性测量单元(IMU)传感器,由STMicroelectronics公司生产。这种传感器结合了三轴加速度计和三轴陀螺仪,具有以下特点:

  1. 三轴加速度计:LSM6DSL 能够测量物体在 x、y 和 z 三个轴向上的加速度,可用于检测和监测物体的运动状态、姿态变化和震动等。

  2. 三轴陀螺仪:该传感器还能够测量绕 x、y 和 z 轴旋转的角速度,从而可以用来跟踪物体的旋转、转向和角度变化。

  3. 低功耗设计:LSM6DSL 采用了低功耗设计,适合用于便携设备、可穿戴设备和物联网(IoT)设备中,能够提供长时间的稳定性能。

  4. 高精度:该传感器具有高精度的数据输出,可以提供精确的加速度和角速度测量结果。

  5. 广泛应用:LSM6DSL 在汽车电子、智能手机、虚拟现实(VR)、增强现实(AR)、运动跟踪、无人机和工业自动化等领域得到广泛应用。

1.查看原理图查看引脚

image.png  

可以看到原理图上这个芯片是挂载在I2C2上的,这和我们上期那个lis3mdl传感器挂载的是同一个总线上。因此我们可以在上个工程的基础上来写这个传感器的代码 。我们直接复制上期测评的工程作为本次工程的基础。

 

2.移植LIS3MDLTR传感器的驱动

我在本论坛找到了该传感器的驱动,链接为LSM6DSL(加速度+陀螺仪)驱动例程ver1.8 - MEMS传感器 - 电子工程世界-论坛 (eeworld.com.cn)

我们打开他的这个文件分析一下

image.png  

在整个文件夹里面分为driver目录和example目录,分别为传感器的驱动,和示例代码。其中在example目录下有读取传感器数据的示例和Wake-Up and Free-Fall示例,翻译过来应该是唤醒和自由落体的功能。本期测评主要测评以下是否能从传感器中读取数据

image.png  

 

我们将driver目录下的驱动文件全部复制到我们工程目录的app下,示例代码作为我们的参考代码。由于驱动是使用面向对象的思想来编写的,所以驱动移植来非常好移植,只需要实现I2C读发的代码就行了。

我们看示例代码怎么移植的,下面是一个读取传感器寄存器值的函数:

image.png  

这里我们使用的是I2C2,所以传感器读发的函数代码我简化成了下面所示

static int32_t platform_write(void *handle, uint8_t Reg, uint8_t *Bufp,
                              uint16_t len)
{
  HAL_I2C_Mem_Write(handle, LSM6DSL_I2C_ADDRESS, Reg,
                      I2C_MEMADD_SIZE_8BIT, Bufp, len, 1000);
  return 0;
}

static int32_t platform_read(void *handle, uint8_t Reg, uint8_t *Bufp,
                             uint16_t len)
{

  HAL_I2C_Mem_Read(handle, LSM6DSL_I2C_ADDRESS, Reg,
                       I2C_MEMADD_SIZE_8BIT, Bufp, len, 1000);
  return 0;
}

然后继续看示例代码

image.png  

这里它使用的是spi的句柄,问应该使用I2C2,所以把这个句柄改为hi2c2

 

接着看示例代码

image.png  

现在它已经开是读取数据了,不过他这里应该是用了USB_otg的功能把数据发送给上位机了,我们这里用串口打印就行,所以将CDC_Transmit_FS发送函数的代码,改成printf的代码

image.png  

至此,我们的lsm6dsl传感器的代码就基本完成了。

 

3.测试验证和数据处理

我们将代码烧录到开发板上后,用串口软件看看打印的结果。打印结果如下所示

image.png  

可以看到在开发板没动的情况下,数值很稳定,所以程序应该是没问题了。但是这个数值只是原始值,我们还需要将他处理成为我们想要的加速度的值,这个我放在下期来讲。

 

总结:通过本期测评成功读取到了lsm6dsl加速度+陀螺仪传感器的原始数据值,数值变化很稳定,我将会在下期测评中对本期测到的数据做一些处理或者姿态结算。

 

stm32L475_lsm6dsl.7z (8.23 MB)
(下载次数: 1, 2024-3-22 20:41 上传)

回复评论 (6)

用加速度和陀螺仪可以计算出角度嘛。

点赞  2024-3-25 15:08
引用: wangerxian 发表于 2024-3-25 15:08 用加速度和陀螺仪可以计算出角度嘛。

可以,三个方向的偏移角度都可以算

点赞  2024-4-14 14:27
引用: qiao--- 发表于 2024-4-14 14:27 可以,三个方向的偏移角度都可以算

那感觉和MPU6050一样,还有其他啥优势呀。

点赞  2024-4-14 19:14
引用: wangerxian 发表于 2024-4-14 19:14 那感觉和MPU6050一样,还有其他啥优势呀。

看官方说是低功耗比较厉害

点赞  2024-4-14 19:21
引用: qiao--- 发表于 2024-4-14 19:21 看官方说是低功耗比较厉害

那我觉得可以测一下它这个特性。

点赞  2024-4-15 09:09
引用: wangerxian 发表于 2024-4-15 09:09 那我觉得可以测一下它这个特性。

行,最后专门来一期测下这个板子的低功耗

点赞  2024-4-15 09:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复