10581|24

9795

帖子

24

TA的资源

版主

楼主
 

LSM6DSL翻腕亮屏检测代码 [复制链接]

 
 
LSM6DSL翻腕亮屏检测代码,使用NUCLEO-L4R5ZI板子测试
配置方法参考贴子
和数据手册的2.2

传感器驱动使用STMems_Standard_C_drivers
链接已隐藏,如需查看请登录或者注册
官方代码中有一种错误会导致无法设置检测X轴以外的其它轴
原因在于下边函数中只读取了LSM6DSL_A_WRIST_TILT_MASK 而没有写回,需要自行修改
int32_t lsm6dsl_tilt_src_set(lsm6dsl_ctx_t *ctx,lsm6dsl_a_wrist_tilt_mask_t *val)

主要配置代码
  1. void wrist_tilt(void)
  2. {
  3. lsm6dsl_all_sources_t lsm6dsl_all_sources;
  4. /*
  5. * Initialize mems driver interface
  6. */
  7. dev_ctx.write_reg = platform_write;
  8. dev_ctx.read_reg = platform_read;
  9. dev_ctx.handle = &hi2c1;

  10. /*
  11. * Check device ID
  12. */
  13. whoamI = 0;
  14. lsm6dsl_device_id_get(&dev_ctx, &whoamI);
  15. if ( whoamI != LSM6DSL_ID )
  16. while(1); /*manage here device not found */
  17. /*
  18. * Restore default configuration
  19. */
  20. lsm6dsl_reset_set(&dev_ctx, PROPERTY_ENABLE);
  21. do {
  22. lsm6dsl_reset_get(&dev_ctx, &rst);
  23. } while (rst);
  24. /*
  25. * Enable Block Data Update
  26. */
  27. lsm6dsl_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
  28. //1)打开加速计,
  29. lsm6dsl_xl_data_rate_set(&dev_ctx, LSM6DSL_XL_ODR_26Hz);
  30. /*
  31. * Set full scale
  32. */
  33. lsm6dsl_xl_full_scale_set(&dev_ctx, LSM6DSL_2g);

  34. //2)始能AWT,
  35. uint8_t wrist = PROPERTY_ENABLE;
  36. lsm6dsl_wrist_tilt_sens_set(&dev_ctx, wrist);
  37. ///3)配置AWT中断引脚,
  38. lsm6dsl_int2_route_t lsm6dsl_int2_route;
  39. lsm6dsl_int2_route.int2_wrist_tilt = PROPERTY_ENABLE;
  40. lsm6dsl_pin_int2_route_set(&dev_ctx,lsm6dsl_int2_route);
  41. ///4)配置检测轴向,
  42. lsm6dsl_a_wrist_tilt_mask_t lsm6dsl_a_wrist_tilt_mask;
  43. lsm6dsl_a_wrist_tilt_mask.wrist_tilt_mask_zneg = PROPERTY_ENABLE;
  44. lsm6dsl_a_wrist_tilt_mask.wrist_tilt_mask_zpos = PROPERTY_ENABLE;
  45. lsm6dsl_tilt_src_set(&dev_ctx,&lsm6dsl_a_wrist_tilt_mask);
  46. ///5)配置阈值,
  47. uint8_t threshold = 0x20;//1 LSB = 15.625 mg. Default value: 20h (500 mg).
  48. lsm6dsl_tilt_threshold_set(&dev_ctx,&threshold);
  49. ///6)配置持续时间
  50. uint8_t latency = 0x0f;//1 LSB = 40 ms. Default value: 0Fh (600 ms).
  51. lsm6dsl_tilt_latency_set(&dev_ctx,&latency);

  52. while(1)
  53. {
  54. if(int2_flag == 1)
  55. {
  56. int2_flag = 0;
  57. lsm6dsl_all_sources_get(&dev_ctx,&lsm6dsl_all_sources);

  58. if(lsm6dsl_all_sources.reg.wrist_tilt_ia.wrist_tilt_ia_zneg == 1 || lsm6dsl_all_sources.reg.wrist_tilt_ia.wrist_tilt_ia_zpos == 1)
  59. {
  60. snprintf(data_out, MAX_BUF_SIZE, "wrist tilt ia.\r\n");
  61. tx_com((uint8_t*)data_out, strlen(data_out));
  62. }
  63. }

  64. }
  65. }
复制代码


工程文件:
游客,如果您要查看本帖隐藏内容请回复

最新回复

感谢大佬,学习学习   详情 回复 发表于 2024-6-19 09:43
点赞 关注(2)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
抬手亮屏和翻腕亮屏算法上是怎么实现的呢,谁知道

点评

这个是由传感器内部实现的  详情 回复 发表于 2018-8-15 16:06
 
 
 

回复

9795

帖子

24

TA的资源

版主

板凳
 
381503442 发表于 2018-8-15 15:17
抬手亮屏和翻腕亮屏算法上是怎么实现的呢,谁知道

这个是由传感器内部实现的
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
正好需要用到~謝謝樓主
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 
littleshrimp 发表于 2018-8-15 16:06
这个是由传感器内部实现的

請問我照著您的代碼去設定,但是無法讓Sensor產生中斷,這其中是否是检测轴向要依照Layout的方向去設定?

点评

其它方向有中断吗  详情 回复 发表于 2018-8-27 09:25
 
 
 

回复

9795

帖子

24

TA的资源

版主

6
 
ialvins 发表于 2018-8-27 09:01
請問我照著您的代碼去設定,但是無法讓Sensor產生中斷,這其中是否是检测轴向要依照Layout的方向去設定?

其它方向有中断吗
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

7
 

試了三軸全開,怎麼甩都沒有中斷....

目前是接著燒錄器 甩動幅度不太敢太大力,

想請問版大那邊是否有測試的手法? 或者測試影片? 謝謝您
 
 
 

回复

9795

帖子

24

TA的资源

版主

8
 
应该是沿着某个不垂直地面的轴转动 不是甩
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

9
 
好的謝謝您我來試試看!
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(中级)

10
 
很好的代码,谢谢分享
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 
谢谢分享
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

12
 
谢谢分享
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

13
 
谢谢分享
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

14
 
谢谢,学习
 
 
 

回复

61

帖子

1

TA的资源

一粒金砂(中级)

15
 
下载试试
个人签名

intersil Techwell应用工程师

 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

16
 
我也想研究下!!!
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

17
 
学习了
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

18
 

有人遇到过设置AWT时候,只有使能可以写,其他几个写了没用的状态吗?

那个set MASK的BUG解决了,但是依然只能读,尝试过写 src, latency, threshold,写都没有报错,但读的时候发现还是原来的值,最终导致只有X轴有(从MASK上读出来只有X有一个方向设置,哪怕我尝试6个方向都设置),而func_src2 反馈的wrist_tilt_ia 位有设置,按理说从WRIST_TILT_IA能读出来是哪个方向的,但实际这个寄存器读出来都是0.

感觉是功能可以使能,但不能配置,只有默认X轴。

点评

你是自己写的代码还是使用的例程?  详情 回复 发表于 2020-4-15 10:53
 
 
 

回复

9795

帖子

24

TA的资源

版主

19
 
英雄末路 发表于 2020-4-15 09:10 有人遇到过设置AWT时候,只有使能可以写,其他几个写了没用的状态吗? 那个set MASK的BUG解决了,但是依 ...

你是自己写的代码还是使用的例程?

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

20
 
littleshrimp 发表于 2020-4-15 10:53 你是自己写的代码还是使用的例程?

reg访问是用的示例代码,其他的都是自己写的

点评

把你的代码发上来我帮你试下  详情 回复 发表于 2020-5-27 21:08
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表