#申请原创#
据ST官方LPS22HH的datasheet,LPS22HH是一款绝对压力传感器,可用作数字输出气压计。应用对象包 括但不限于:GPS设备,气象台设备,运动手表,四轴飞行器等等。
主要特性包括:测量范围是260至1260 hPa绝对压力;耗电上电流消耗低至4uA;精度是0.5hPa;低压传感器噪声为0.65Pa;自带温度补偿;数据输出是24位;ODR范围是1Hz至200Hz;与主机/MCU接口支持SPI、I2C或I3C;带有FIFO;供电电压范围是1.7V至3.6V。
不过在我们的STEVAL-STWINKT1B开发板上,LPS22HH与主控STM32L4R9ZIJ6是通过I2C连接,具体的是I2C2,可看原理图:
和前文一样fp-sns-datalog2也有这个传感器的驱动代码,位置也在Drivers/BSP/Components/目录下,最终的传感器数据读取也被包装在叫做BSP_ENV_SENSOR_GetValue()函数里,笔者这次还是想用原始的 接口,所以仍然从前文的STMems_Standard_C_drivers仓库拷贝代码:
把lps22hh_STdC/目录下的driver/lps22hh_reg.c driver/lps22hh_reg.h 和examples/lps22hh_read_data_polling.c拷贝到demo目录
修改lps22hh_read_data_polling.c的stts751_read_data_polling()函数:1.分成两大块,初始化和数 据读取;2.数据读取只读一次;3.修改stts751_read_data_polling.c的platform_write()和platform_read(),让它们用I2C2操作。
最后main函数的代码改成
{
HAL_Init();
SystemClock_Config();
SystemPower_Config();
MX_USART2_UART_Init();
MX_I2C2_Init();
MX_GPIO_PE1_Init();
hts221_init();
printf("hts221 init done.\n");
stts751_init();
printf("stts751 init done.\n");
lps22hh_init();
printf("lps22hh init done.\n");
while (1) {
hts221_read_data_polling();
stts751_read_data_polling();
lps22hh_read_data_polling();
HAL_Delay(1000);
}
烧录测试
|