关于6轴传感器LSM6DSLTR的调试说明

2023-11-18

关于6轴传感器LSM6DSLTR的调试说明

  1. AP的检测脚需要配置为pull-down的,不能配置为pull-up,否则中断脚一直是高;sensor的int1脚配置为open-drain模式:在这里插入图片描述
  2. 可以配置wakeup中断,阈值设置为1.2g产生中断。
    在lsm6dsl_init_sensors函数中添加:
printk(KERN_ERR "------sy: set wakeup---  \n");
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_ACCEL_ODR_ADDR,   //CTRL1_XL  0x10
					   0x40,
					   LSM6DSL_EN_BIT, false);
//这个参数必须是false,否则导致卡死
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_ACCEL_ODR_ADDR,   //0x10
					   0x20,
					   LSM6DSL_EN_BIT, false);

   err = lsm6dsl_write_data_with_mask(sdata->cdata,
					  0x0B,	//dataReady mode	0x0B  set pluse mode
					  0x80,
					  LSM6DSL_EN_BIT, false);
					   
	//打开基本的中断:wakeup free-fall,具体使用哪些,在别的寄存器控制
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_LIR_ADDR,   //TAP_CFG: 0x58
					   0x80,
					   LSM6DSL_EN_BIT, false);
	//HPF apply
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_LIR_ADDR,   //0x58
					   0x10,
					   LSM6DSL_EN_BIT, false);

	//设置唤醒阈值wake up thr set 101  1.2/(16g/64)=4.8
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_WAKE_UP_ADDR,
					   0x04,
					   LSM6DSL_EN_BIT, false);
	//err = lsm6dsl_write_data_with_mask(sdata->cdata,
	//				   LSM6DSL_WAKE_UP_ADDR,
	//				   0x02,
	//				   LSM6DSL_EN_BIT, false);
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_WAKE_UP_ADDR,
					   0x01,
					   LSM6DSL_EN_BIT, false);

	//route wake_up to int1
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_MD1_ADDR,  //005e
					   0x20,
					   LSM6DSL_EN_BIT, false);

	//int1 int2 set open-drain
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_BDU_ADDR,
					   0x10, 
					   LSM6DSL_EN_BIT, false);
	//end: shiyan added
  1. 上报的单位问题:
    量程控制是由寄存器CTRL1_XL (10h)的bit2和bit3,如下:
    #define LSM6DSL_ACCEL_FS_ADDR 0x10
    #define LSM6DSL_ACCEL_FS_MASK 0x0c
    如下值是设置的量程:
    #define LSM6DSL_ACCEL_FS_2G_VAL 0x00
    #define LSM6DSL_ACCEL_FS_4G_VAL 0x02
    #define LSM6DSL_ACCEL_FS_8G_VAL 0x03
    #define LSM6DSL_ACCEL_FS_16G_VAL 0x01
    如下值是对应的增益:
    #define LSM6DSL_ACCEL_FS_2G_GAIN 1
    #define LSM6DSL_ACCEL_FS_4G_GAIN 2
    #define LSM6DSL_ACCEL_FS_8G_GAIN 4
    #define LSM6DSL_ACCEL_FS_16G_GAIN 8
    以FS_SEL=1为例,这时加速度的量程为-16g到+16g。
    代码中上报的是16位的数:
    xyz[0] = ((s16)(data[0] | (data[1] << 8)));
    xyz[1] = ((s16)(data[2] | (data[3] << 8)));
    xyz[2] = ((s16)(data[4] | (data[5] << 8)));
    *xyz[0] *= sdata->c_gain;
    xyz[1] *= sdata->c_gain;
    xyz[2] = sdata->c_gain;
    这里上报的是采样值会乘以gain,不同的量程,gain不一样,但是对于同一个物理值用不同的档位测试,结果是一样的。
    上报加速度的值按照单位g/16384,即1g的加速度上报16384。HAL层会 乘以(GRAVITY_EARTH /16384)
    #define ACCEL_CONVERT (GRAVITY_EARTH /16384)
    #define CONVERT_ACCEL_X ACCEL_CONVERT
    #define CONVERT_ACCEL_Y ACCEL_CONVERT
    #define CONVERT_ACCEL_Z ACCEL_CONVERT
    #define GRAVITY_EARTH (9.80665f)
    float value = event->value;
    mPendingEvent.data[0] = value * CONVERT_ACCEL_X;
    量程是±2g时,按照原始值上报;
    量程是±4g时,按照原始值<<1位上报;
    其他类推。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于6轴传感器LSM6DSLTR的调试说明 的相关文章

  • 提高电脑寿命的维护技巧与方法分享

    在维护电脑运行方面 我有一些自己觉得非常有用的技巧和方法 下面我将分享一些我常用的维护技巧 并解释为什么我会选择这样做以及这样做的好处 首先 我经常清理我的电脑内部的灰尘 电脑内部的灰尘会影响散热效果 导致电脑发热严重甚至性能下降 因此 定
  • Google Colab 上部署 Stable Diffusion Web UI

    什么是 Stable Diffusion Web UI Colab Stable Diffusion 是 Stability AI 推出的一个基于深度学习技术文字生成图片AI模型 Stable Diffusion Web UI 是一个强大好
  • [技术经理]03 到底是能力重要,还是态度重要?

    对于一个技术团队而言 团队里面的人员是最最重要的财富 人员的招聘和人员的管理是技术经理最重要的工作之一 但是 事实也是 没有什么问题比人的问题更难处理的了 我先讲两个发生在我们团队里面的事件 今年上半年的时候 我们团队同时入职了两名前端开发

随机推荐

  • C语言中sizeof()和strlen()的区别

    sizeof 一 sizeof的基本概念 sizeof操作符以字节形式给出了其操作数的存储大小 操作数可以是一个表达式或括在括号 内的类型名 操作数的存储大小由操作数的类型决定 二 使用方法 1 用于数据类型 sizeof使用形式 size
  • UBUNTU16.04命令行安装PCL1.7(亲测有效)

    安装PCL点云库 最开始是按照先安装相关依赖 然后github上clone PCL相关版本包的形式安装的 编译遇到了很多问题 结果最后安装完成 但却无法运行例程 难过 又尝试了命令行的形式 命令行的形式直观简单 可安装编译好的点云库 PCL
  • [Python人工智能] 九.gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇详细讲解了卷积神经网络CNN原理 并通过TensorFlow编写CNN实现了MNIST分类学习案例 本篇文章将分享gensim词向量Word2Vec安装
  • 时频分析常用工具:STFT短时傅里叶变换 & 小波变化

    文章目录 1 傅里叶变换的局限性 2 STFT 3 小波变换 参考 时频分析之STFT 短时傅里叶变换的原理与实现 形象易懂讲解算法I 小波变换 https www zhihu com question 58814934 1 傅里叶变换的局
  • MSCOCO数据集格式转化成VOC数据集格式

    MSCOCO数据集格式转化成VOC数据集格式 转载请注明原出处 http blog csdn net ouyangfushu article details 79543575 作者 SyGoing QQ 2446799425 SSD目标检测
  • CUDA(C)和PyCUDA(Python) GPU加速OpenCV视觉

    CUDA 本节介绍一个简单的加法程序 该程序在设备上执行两个变量的加法 虽然它没有利用设备的任何数据并行性 但它对于演示 CUDA C 的重要编程概念非常有用 首先 我们将看到如何编写一个用于添加两个变量的内核函数 内核函数的代码如下所示
  • 面试之JVM类的生命周期

    按照Java虚拟机规范 从class文件到加载到内存中的类 到类卸载出内存为止 它的整个生命周期包括如下7个阶段 加载 类的加载指的是将类的 class文件中的二进制数据读取到内存中 存放在运行时数据区的方法去中 在加载的过程中 jvm需要
  • FFMPEG之H264获取NALU并且解析其RBSP类型03

    FFMPEG之H264获取NALU并且解析其RBSP类型03 前言 FFMPEG之H264理论篇 理论的就不多讲了 可以参考上面那篇文章 下面将给出两种版本 一种是我自己的 用C 方法实现 另一种是雷神版本的 基本是纯C语言 区别是我多了一
  • MySQL 排序时如何把0放最后, 其它按照从小到大排序

    问题描述 MySQL 在排序时 如何从小到大排序 并将0排在最后面 如图 解决办法 利用CASE THEN来处理 原理是将sort等于0的转为比较大的数值放到了最后 其实也是遵循了 sort ASC 的原则 SELECT FROM bann
  • JUC编程

    1 JUC JUC就是java util concurrent工具包的简称 这是一个处理线程的工具包 JDK 1 5开始出现的 1 传统的synchronized public class Synchronized public stati
  • 教你如何将磁盘中黑色的未分配空间变成绿色的可用空间

    在黑色的未分配空间上建立新的卷 使用分区助手或者DiskGenius将新建立的卷从主分区转换成逻辑分区 在磁盘管理中删除这个卷 然后就会变成绿色的空用空间
  • MySQL 体系结构

    一 物理文件 参数文件 告诉Mysql实例启动时在哪里可以找到数据库文件 并且指定某些初始化参数 这些参数定义了某种内存结构的大小等设置 用文件存储 可编辑 若启动时加载不到则不能成功启动 与其他数据库不同 参数有动态和静态之分 静态相当于
  • java面向对象 继承 && 多态

    目录 继承性 inheritance 为什么要有继承 作用 继承举例 方法的重写 重写举例 四种访问权限修饰符 关键字 super 关键字super举例 调用父类的构造器 调用父类构造器举例 子类对象的实例化过程 多态性 概念 使用 多态性
  • vue弹出遮罩层弹窗后禁止底部页面滑动

    方法一 在遮罩层标签上添加 touchmove prevent 方法二 遮罩层显示时把下方的父盒子css设置为固定定位宽100 高100vh 超出隐藏 content width 100 height 100vh overflow hidd
  • Kali Linux介绍(安装教程)

    一 Kali Linux是什么 Kali Linux是基于Debian的Linux发行版 设计用于数字取证操作系统 每一季度更新一次 由Offensive Security Ltd维护和资助 最先由Offensive Security的Ma
  • 以太坊2.0-上海升级节点详细搭建文档

    文章目录 一 配置 JWT 认证 二 部署执行节点geth 2 1 下载geth二进制文件 2 2 geth节点启动 三 部署共识节点Prysm 3 1 下载Prysm脚本 3 2 Prysm容器生成 四 检查节点是否同步完成 4 1 检查
  • 第二十五节:动态和静态合集

    DOM是JavaScript重要组成部分 在DOM中有三个特别的集合分别是 NodeList 节点的集合 NamedNodeMap 元素属性的集合 和HTMLCollection html元素的集合 这三个集合有一些共同的特点 它们都是一个
  • cannot import name filters

    源代码报错如下 from skimage import color filters ImportError cannot import name filters 在命令行输入 conda list 查看scikit image的版本号 我的
  • Flex 布局全解

    一 Flex布局是什么 Flex是Flexible Box的缩写 意为 弹性布局 用来为盒状模型提供最大的灵活性 任何一个容器都可以指定为Flex布局 box display flex 行内元素也可以使用Flex布局 box display
  • 关于6轴传感器LSM6DSLTR的调试说明

    关于6轴传感器LSM6DSLTR的调试说明 AP的检测脚需要配置为pull down的 不能配置为pull up 否则中断脚一直是高 sensor的int1脚配置为open drain模式 可以配置wakeup中断 阈值设置为1 2g产生中