4613|2

661

帖子

29

TA的资源

版主

楼主
 

当BLE遇到MEMS——LSM6DSL驱动移植到NRF52832 [复制链接]

 

NRF52832自带了很多的外设的驱动;在nRF5_SDK_XX\components\drivers_ext文件夹中,可惜没有ST芯片的驱动。

        接下来介绍ST的MEMS驱动移植到NRF52832的方法。

下载驱动库

         首先下载NRF52832的驱动库,在官网下载SDK12.3的版本,现在并不是最新的,但是比较精简。

        然后下载LSM6DSL的驱动库,进入ST的官网,搜索X-CUBE-MEMS1,将该固件下载下来,要是官网出bug,可以通过我之前的文章方法下载。

在STM32CubeExpansion_MEMS1_V6.2.0\Drivers\BSP\Components路径下,有各个传感器的驱动,由于X-NUCLEO-IKS01A这样的板子都是使用的I2C通信接口,我个人不喜欢I2C接口,买了个有SPI接口的LSM6DSL模块。

       复制LSM6DSL_ACC_GYRO_driver.c和LSM6DSL_ACC_GYRO_driver.h两个文件就够了,其实最需要的只是头文件里面的寄存器定义,因为库文件的功能最终也就是操作寄存器。

SPI通信接口移植

          SPI通信,最重要的就是读写函数的编写,如下:

SPI初始化

SPI回调函数

      SPI回调函数用一个全局变量用来判断SPI是否传输完成。

LSM6DSL初始化

     我只使用了库函数中的寄存器,没有使用库函数,然后每次写入寄存器都读出来,确保每次都写入成功。

 获取传感器的值

    读出传感器的值,采用一次性全部读出的方法,这样最高效,库函数中是一个一个的读取,这样不推荐。然后是将寄存器的原始值转化为实际值,也即是乘以Sensitivity,库函数的方法是每次都从寄存器中读取Sensitivity,这样没有必要,直接将该值变成常量然后相乘,可以更少的操作SPI,提高效率。

    最后就是将读取出来的值,进行姿态解算,姿态解算详细可以参考我的这篇帖子

    最后可以使用Jscope来查看波形,方法参考我之前的帖子

GitHub工程下载地址:https://github.com/flyloong/NRF52832_LSM6DSL


此内容由EEWORLD论坛网友lb8820265原创,如需转载或用于商业用途需征得作者同意并注明出处

查看本帖全部内容,请登录或者注册

最新回复

大神太厉害了!   详情 回复 发表于 2023-9-22 22:02
点赞 关注
个人签名QQ:252669569
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

可以的。加油~ GitHub

 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

大神太厉害了!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
ADI 有奖直播报名中~
直播时间:3月27日(周四) 上午10:00-11:30
直播主题:易于驱动SAR型ADC的原理、优点及应用介绍
好礼等你拿~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 6

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表