One shot是一种比较节电的方式,也可以理解为按需读取 平时LPS22HB一直处于掉电模式,在需要测试时将ONE_SHOT位置1 待LPS22HB转换完成后再次进入掉电模式,转换一次可读取一个气压和温度结果 使用ONE_SHORT模式首先要将CTRL_REG1 (10h) 的ODR设置为0(默认),此时LPS22HB掉电 将CTRL_REG2 (11h)寄存器的ONE_SHOT位写入1,启动单次转换,转换完成后ONE_SHOT位复位为0 STATUS (27h)寄存器的T_DA和P_DA更新为1,提示有新数据已准备好 通过读取PRESS_OUT_H (2Ah), PRESS_OUT_L (29h) 和 PRESS_OUT_XL (28h)得到气压数据 读取TEMP_OUT_H (2Ch)和 TEMP_OUT_L (2Bh)得到温度数据 测试代码如下: 首先多次读取STATUS (27h)寄存器判断T_DA和P_DA是否为1,因为处于掉电模式status的值始终为0 将CTRL_REG2 (11h)寄存器的ONE_SHOT写入1,注意如果是连续读取需要同时将IF_ADD_INC写1,或者先读取寄存器内容然后再写入 循环读取STATUS (27h)寄存器判断T_DA和P_DA是否为1 经过一段时间的转换后STATUS (27h)寄存器判断T_DA和P_DA变为1,退出循环 可以看到counter为31,表示执行了31次循环后数据才准备完毕 pressure和temp对应当前的气压和温度 用于测试的工程文件
|