打印
[信息]

LSM6DSO的MicroPython驱动移植

[复制链接]
363|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 两只袜子 于 2020-11-13 14:33 编辑

每天一个X-NUCLEO-IKS01A3开发板的传感器MicroPython驱动移植,今天完成了LSM6DSO陀螺仪的驱动,也是最后一个驱动程序,下一步预备开始将这些驱动移植到MakeCode,这样以后大家也可以在MakeCode上用图形化方式使用它们了。

LSM6DSO可以看成是一颗芯片里面封装了两个传感器,控制的时候加速度和角速度也是分别控制的,所以LSM6DSO的体积也比其它几个传感器都要大一些(其它几个传感器都是2x2mm,LSM6DSO是2.5x3mm)。

从寄存器上看,LSM6DSO和LIS2DW12类似,分为控制寄存器、状态寄存器、输出寄存器、中断寄存器、事件寄存器、FIFO寄存器等。传感器的功能非常多,也很复杂,可以编写出适合不同应用的多种驱动。不过为了简化使用,并保持和其它驱动一致的风格,这次的驱动只包含了基本的参数设置、数据读取等功能,没有包含中断、事件、FIFO等,在需要时大家可以自行添加。

下面是LSM6DSO的部分寄存器列表,LSM6DSO的寄存器非常多,仅列表就占用了3页。不过对于基本功能,只需要用到其中一小部分寄存器。


LSM6DSO最基本的使用方法是先设置LSM6DSO_CTRL1_XL和LSM6DSO_CTRL2_G寄存器,将ODR从0修改为合适的数值,就可以开始读取数据了。和X-NUCLEO-IKS01A3开发板上其它传感器不同,LSM6DSO没有oneshot或者single模式,如果要降低功耗或进入休眠,需要将传感器的ODR设置为0。因为加速度和角速度是分别控制的,所以需要分别设置两个寄存器的ODR。

LSM6DSO的加速度传感器可以设置±2g、±4g、±8g、±16g四种量程,而角速度可以设置125、250、500、1000、2000dps五种量程,可以按需灵活选择。LSM6DSO的输出结果是16位的,传感器的灵敏度非常高,可以将它的输出和其它类似传感器比较就清楚了。

可能是为了做温度补偿,LSM6DSO内部同样带有一个温度传感器,使用方法和LIS2DW12是相同的。

另外值得注意的是,LSM6DSO也支持最新的I3C接口标准,这部分的驱动等以后有机会补上。

使用特权

评论回复
沙发
nawu| | 2020-12-3 14:27 | 只看该作者
每一个开发板上都有吗

使用特权

评论回复
板凳
qcliu| | 2020-12-3 14:27 | 只看该作者
如何操作寄存器呢

使用特权

评论回复
地板
tfqi| | 2020-12-3 14:27 | 只看该作者
图形化方式非常的直观方便

使用特权

评论回复
5
wiba| | 2020-12-3 14:28 | 只看该作者
移植过程复杂吗  好操作吗

使用特权

评论回复
6
zljiu| | 2020-12-3 14:28 | 只看该作者
楼主很勤劳 每天都做程序移植

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1932

主题

6697

帖子

8

粉丝