2896|0

9794

帖子

24

TA的资源

版主

楼主
 

LPS22HH阈值中断 [复制链接]

  本帖最后由 littleshrimp 于 2019-9-27 10:07 编辑

LPS22HH除了可以实时读取气压数据外还可以通过内部的阈值中断来减少CPU的负荷

阈值中断可以是正、负或正负都触发

设定好相应的参数后当气压达到指定值时就会通过INT引脚产生中断

单片可通过读取INT_SOURCE (24h)寄存器来判断中断类型

具体如下:

参考LPS22HH的STM32L452工程,在原有的基础上做出相应修改

https://bbs.eeworld.com.cn/thread-1091709-1-1.html

 

首先确定IKS01S3中的LPS22HH的INT引脚连接到NUCLEO-L452的哪个引脚

看原理图LPS22HH_INT引脚通过电平转换器输出LPS22HH_INTO,然后连接到CN9的7脚

 

与之相对应的是NUCLEO-L452的D6对应单片机的PB10脚

打开工程中的stm32l452 lps22hh.ioc,找到PB10引脚,将其设置为GPIO_EXTI10,为了方便可以User Label设置为LPS22HH_INT

 

 

在NVIC模块中将 EXTI line[15:10]interrupts使能

 

生成代码并打开工程

 

 

为了测试方便手里的环境不容易产生负压,所以阈值设置为大于指定阈值时产生中断

这样可以将开发板放在密闭的塑料袋里,通过给塑料袋施压来达到增加传感器环境压力的目的

 

打开LPS22HH的数据手册,找到寄存器介绍,找到INTERRUPT_CFG

可以看到第0位为PHE,为1时使能高压中断

再找到THS_P_x,THS_P_L是低压中断,THS_P_H是高压中断,对应的数值乘16就是对应的压力

 

 

再找到CTRL_REG3,INT_S是决定将哪个中断源连接到芯片的INT引脚

如果是高压报警需要将INT_S设置为1

INT_SOURCE (24h)是只读寄存器,在检测到中断后可以通过读取INT_SOURCE (24h)的数据来判断中断类型

 

了解寄存器的设置后开始改代码

首先是设置中断源,设置高压阈值,使能高压中断

 

再设置单片机的中断回调函数,判断如果是LPS22HH_INT引脚则将lps22hh_int_flag置1

 

中主循环中检测lps22hh_int_flag状态,如果为1时清标志,再读取INT_SOURCE (24h)寄存器,判断PH是否为1

为1时说明为高压中断,发送中断类型到电脑

读取当前气压和温度,并通过串口发送到电脑

 

按下塑料袋后的效果

 

视频:

 

https://training.eeworld.com.cn/course/3962/learn#lesson/22057

stm32l452 lps22hh.rar

13.45 MB, 下载次数: 137

点赞 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表