ADXL362是ADI公司的加速度传感器,这个产品在小米手环里被用到了。它的核心技术是超级低功耗检测运动、加速度、静止这些信息。

它里面有几种模式:

1)默认模式

传感器刚起来时进入默认状态,此时运动和静止的状态是不使能的。如果用户使能了运动和静止功能,静止和运动两种检测皆可以被检测,并且可以触发中断。处理器必须处理中断。

实际将寄存器ACT_INACT_CTL寄存器设置为Default Mode(代码中是ADXL362_MODE_DEFAULT),允许运动和静止检测和中断,但实际上试了不行。

2)Link模式

LINK模式下,运动和静止检测链接在一起。可以配合中断检测。如果需要连续检测运动/静止(可以在中断里查看AWAKE位判断是检测到运动还是静止),这个方法可以。

特别要注意:在中断处理函数处理完后,退出来之前,一定要再读一次ADXL362的STATUS(读取这个STATUS可以把ADXL362内部的中断信息清空),否则有可能出现无法再进中断的危险。这个估计是ADXL362的一个重大bug。但是实际测试发现片子存在不一致性,即有些片子即使在退出中断前再读一次STATUS,仍然还存在无法再进中断的风险。

下面是读取STATUS清空ACT和INACT中断信息的文档中的依据。

3)LOOP模式

LOOP模式和LINK模式很像。文档资料里说不需要中断服务。但实际上是可以用中断一起配合使用的。

但是它的问题和LINK一样,存在永远无法进入中断的问题。这个BUG的现象和LINK一模一样。解决办法是退出来之前,一定要再读一次ADXL362的STATUS(读取这个STATUS可以把ADXL362内部的中断信息清空)。LOOP模式的好处是貌似不存在不一致性,也就是片子的一致性可以。

因此,强烈建议选LOOP模式。

现在解释下这个现象产生的过程(在INT1中断引脚的处理函数里):

void EXTI_IRQHandler()
{unsigned char adxl362_status = 0;ADXL362_GetRegisterValue(&adxl362_status, ADXL362_REG_STATUS, 1);if(adxl362_status & ADXL362_STATUS_AWAKE){// 检测到运动// (A)}else{// 检测到静止// (B)}EXTI->PR = ((uint32_t)0x00000400);// 下面这句必须添加,以防ADXL362不工作 ADXL362_GetRegisterValue(&adxl362_status, ADXL362_REG_STATUS, 1);//(C)
}

上面的代码是用来不断检测运动和静止的代码。

如果ADXL362检测到静止,然后在处理静止的时候(B)位置(还未退出中断)发生了运动事件(ADXL362在这么短时间内检测到运动了),那么如果没有(C)代码,那么会导致无法在进中断。同样的,如果在检测到运动的时候(A)发生了静止事件(还未退出中断),那么同样的,如果没有(C)代码,会导致后续无法再进中断。

下面是比较好的连续检测静止和运动的初始代码。

void ADXL362(void)
{unsigned char adxl362_status;/* Init device. */if(ADXL362_Init()){/* Put the device in standby mode. */ADXL362_SetPowerMode(0);/* Set accelerometer's output data rate to: 12.5 Hz. */ADXL362_SetOutputRate(ADXL362_ODR_12_5_HZ);/* Setup the activity and inactivity detection. */ADXL362_SetRegisterValue(ADXL362_ACT_INACT_CTL_LINKLOOP(ADXL362_MODE_LINK),ADXL362_REG_ACT_INACT_CTL,1);ADXL362_SetupActivityDetection(1, 50, 3);     // 检测参考阀值: 200mg,  检测时间: 第三个参数值 / 12.5 sADXL362_SetupInactivityDetection(1, 200, 36); //  检测参考阀值: 200mg,  检测时间: 第三个参数值 / 12.5 sADXL362_SetRegisterValue(0x30, ADXL362_REG_INTMAP1, 1);/* Start the measurement process. *///ADXL362_SetPowerMode(1);ADXL362_SetRegisterValue(ADXL362_POWER_CTL_MEASURE(ADXL362_MEASURE_ON), ADXL362_REG_POWER_CTL, 1);/* Clear ACT and INACT bits by reading the Status Register. */ADXL362_GetRegisterValue(&adxl362_status,ADXL362_REG_STATUS,1);ACCIoInit();}
}

片子的运动和静止需要设置检测时间,这个检测时间和片子的ODR配置相关。公式是:

Time = TIME_ACT/ODR.

比如上面的代码TIME_ACT是3,选的ODR是12.5Hz,那么检测运动的时间是3/12.5Hz。

ADXL362加速度传感器使用记录相关推荐

  1. 三轴加速度传感器bma150驱动解析

    BMA150 博世 三轴加速度传感器 SPI(4线,3线),i2c,中断引脚 频响+/- 2g,4g,8g;带宽25~1500hz,中断触发内部加速度求值 低功耗,快速唤醒 包含数据寄存器,控制寄存器 ...

  2. 加速度传感器(STK8321)的初始化

    阅读STK8321的数据手册,我们知道STK8321是一颗具有 ±2g/±4g/±8g的3轴线性加速度传感器,它支持i²c和spi接口通信,具有极低的电流消耗(微安级),同时具有32级深度的FIFO, ...

  3. Android-传感器-加速度传感器(Accelerometer sensor)

    加速度传感器(Accelerometer sensor) 1.加速度传感器,用于检测手机运动状态. 2.同方向传感器一样,加速度传感器也有X,Y,Z三个轴 3,加速度传感器也叫G-sensor,返回X ...

  4. 【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)

    需要源码请点赞关注收藏后评论区留言~~~ 一.传感器的种类 传感器Sensor是一系列感应器的总称,是Android设备用来感知周围环境和运动信息的工具. 因为具体的感应信息依赖于相关硬件,所以虽然A ...

  5. 智芯传感硅微加速度传感器在汽车安全碰撞测试中的产品应用

    一款汽车在正式面世前,都需要进行"安全碰撞测试"这一重要环节检验,这不仅能体现该款车辆设计是否合理,品质是否达标,同时也可通过各类碰撞测试数据为消费者了解车辆安全性提供重要参考及选 ...

  6. STM32HAL库实现ADXL355加速度传感器简单记步功能(SPI)

    STM32HAL库实现ADXL355加速度传感器简单记步器功能(SPI) 文章目录 STM32HAL库实现ADXL355加速度传感器简单记步器功能(SPI) 一.硬件连接 二.STM32CubeMx配 ...

  7. 如何标定加速度传感器的灵敏度

    如何标定加速度传感器的灵敏度 1.简介 加速度传感器被广泛应用于振动分析和旋转机械的故障诊断.加速度传感器在使用一段时间后通常需要进行灵敏度校准,但由于传统的校准装置非常昂贵,用户不得不将传感器送到生 ...

  8. Xamarin Essentials教程使用加速度传感器Accelerometer

    Xamarin Essentials教程使用加速度传感器Accelerometer 加速度传感器是一种能够测量加速度的传感器,用于检测设备状态的改变.在Xamarin中,如果开发者想要使用加速度传感器 ...

  9. Android 使用加速度传感器实现摇一摇功能及优化

    如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下加速度传感器的使用: 1.首先获得 ...

  10. 带你了解加速度传感器的几种应用

    加速度传感器是一种能够测量加速力的电子设备.加速力也就是当物体在加速过程中作用在物体上的力.加速度传感器有两种:一种是角加速度传感器,是由陀螺仪改进过来的.另一种就是线加速度传感器.它也可以按测量轴分 ...

最新文章

  1. 友盟-统计不到线上应用数据的坑
  2. string转map集合_[系列文章] Go - Map 集合
  3. IT公司100题-4-在二元树中找出和为某一值的所有路径
  4. Android WebRTC视频旋转问题
  5. 基于node.js+MongoDB+elementui的分页接口以及页面实现
  6. SQL 语句优化--IN语句优化案例
  7. .net core精彩实例分享 -- 应用启动
  8. 深度学习自学(二十四):华为Atlas人工智能计算平台
  9. office 2010 安装时出错 MSXML版本6.10.1129.0终极解决方案
  10. 省市区三级联动插件(v-distpicker)
  11. 国际贸易基础(二)备货
  12. MySQL第一节课总结
  13. es6 混合commjs_嵌入式JavaScript引擎 – mjs
  14. 苹果8参数_iPhone11 iPhone11Pro哪里买最便宜靠谱划算 2020双十一苹果手机购机攻略...
  15. PXE无人值守安装系统
  16. 智慧金融系统软件需求规格说明(IEEE 830 标准)最终版
  17. android拷贝设备断连接,android – Firebase Messaging Inactivity,断开与AppMeasurementService的连接[复制]...
  18. springboot+nodejs+vue+elementui会议室考勤签到管理系统java
  19. 推荐算法之逻辑回归模型族
  20. 简要说明中国大学生篮球状况和未来发展前景(300字

热门文章

  1. c语言程序中不能表示数制的是,2017计算机c语言二级考试题库及答案
  2. 原理 + 代码:手把手教你使用 Python 实战反欺诈模型
  3. 哈夫曼树及哈夫曼编码例题
  4. 《嵌入式 – GD32开发实战指南》第15章 低功耗(电源管理)
  5. 行测题相关,在线测评(图形找规律。逻辑思维)
  6. 【原创】项目管理软件之争,禅道和JIRA大对比
  7. swfobject java_[Java教程]swfobject.js视频播放插件
  8. Excel自定义下拉框
  9. 豪迈HOMAG变频器维修E107544豪迈变频器维修09F5C3B
  10. 小爱同学app安卓版_小爱同学app下载_小爱同学官网版手机客户端下载 安卓版 V2.8.60 - 罐头安卓网...