您的位置 首页 > 数码极客

如何设置中断ST、如何设置中断向量!

一 模块介绍

型号:ST公司的LPS22HB和LPS33HW两款,其中LPS33HW是防水的,整体尺寸大一些,其它几乎无区别。下图为两个模块,左边的防水的。气压传感器的主要功能是将气压转化为数字信号,并且提供了SPI或I2C两种串行通信接口;此外芯片还集成了温度传感器。

芯片PIN脚

二 电路连接

模块与MCU的连接关系:

三 正常模式以查询方式读传感器数据

I2C地址为0x5D(7位)

官方提供了简单的示例,查询方式读出气压值和温度值。

1 先读ID,确认芯片通信正常

2 配置采样的频率,有单次,1Hz到75Hz多种,在控制寄存器1中设置,比如我设置为10Hz

3 接下来就可以读取气压和温度了,需要注意的事,读的频率不要太高(不要超过设置的频率)

气压值以二进制补码形式保存在连续3个寄存器地址(0x28~0x2A)中,温度值以二进制补码形式保存在连续两个寄存器地址(0x2B~0x2C)中,在读寄存器之前,先把状态寄存器值读出来,看看是否有数据。

读回来24位气压数据和16位温度数据,这个数据跟实际的气压值、温度值差别很大,需要再做转换,

寄存器数据转化为气压值(百帕)

实际气压值 = (读到的24位数据 *100)/4096,单位为帕Pa

实际温度值 = 读到的16位数据 / 100,单位为℃, 如果不需要太高精度就取整数,否则转化为浮点数计算。

打印气压值和温度

用吸管对着传感器面板,吹气时气压增大,吸气时气压减小。

四 气压发生变化时中断 唤醒MCU

我开发的都是锂电池供电的产品,所以必须要在休眠后,能够吸气唤醒,这个地方卡了一天,因为代理商给的LPS22HB手册不是最新的,里面并没有详细介绍中断配置寄存器的每个位的具体使用,后来在LPS33HW手册中找到了,万幸!我大概讲下我的配置。

1 上电后第一次配置,依然是10Hz频率采样,然后配置中断时的压差临界值,比如当前气压为1016hPa(百帕),压差为32hPa,那么超过1048hPa或者低于984hPa时满足中断条件。

阀值设置

2 在进入休眠前的中断寄存器配置

在控制寄存器3中 设置中断引脚INT_DRDY在未触发中断时为高电平,触发时为低电平,也就是下降沿唤醒MCU

在中断寄存器中,设置使能中断,并且为气压低于下限时触发;同时将下一次采样值作为参考气压值,这句话怎么理解呢,我们是以压差达到条件才唤醒,那么这个压差的参考线就是进入休眠前的一次采样值,AUTO_ZERO位使能后,就自动保存下一次采样值到REF_P寄存器中(只生效一次),看下面代码,我增加了一段延迟(不低于采样周期),保证完成一次采样并且数据拷贝到REF_P寄存器中。

休眠前配置中断代码

3中断触发唤醒后,回到正常模式,把中断关闭。

唤醒后关闭中断代码

下面是在休眠后对着传感器探测面板 吸一口气的LOG

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何设置中断ST,如何设置中断向量,如何设置中断向量表,如何设置中断矢量,如何设置中断优先级”边界阅读