福州网站建设招聘信息国外作品集网站
news/
2025/9/25 14:06:16/
文章来源:
福州网站建设招聘信息,国外作品集网站,企业手机网站制作,网站服务器维护需要多久气压计LPS25HB开发----1.轮询获取气压计数据 概述视频教学样品申请源码下载产品特性通信模式速率生成STM32CUBEMX串口配置IIC配置SA0地址设置串口重定向参考程序SA0设置模块地址获取ID复位操作BDU设置设置速率轮询读取数据演示 概述
本文将介绍如何使用 LPS25HB 传感器来读取数… 气压计LPS25HB开发----1.轮询获取气压计数据 概述视频教学样品申请源码下载产品特性通信模式速率生成STM32CUBEMX串口配置IIC配置SA0地址设置串口重定向参考程序SA0设置模块地址获取ID复位操作BDU设置设置速率轮询读取数据演示 概述
本文将介绍如何使用 LPS25HB 传感器来读取数据。主要步骤包括初始化传感器接口、验证设备ID、配置传感器的数据输出率和滤波器以及通过轮询方式持续读取气压数据和温度数据。读取到的数据会被转换为适当的单位并通过串行通信输出。
最近在弄ST的课程需要样片的可以加群申请615061293 。 视频教学
样品申请
https://www.wjx.top/vm/OhcKxJk.aspx#
源码下载
产品特性
LPS25HB是一款压阻式绝对压力传感器功能作为数字输出气压计。该设备包括一个感测元件和一个IC接口通过I2C或SPI从感测元件通信至应用程序。 感测元件用于检测绝对压力由使用ST开发的专用工艺制造的悬挂膜组成。 LPS25HB采用全模塑、带孔的LGA封装HLGA提供。它保证在-30到105°C的温度范围内操作。封装设计有孔以允许外部压力到达感测元件。
通信模式
对于LPS25HB可以使用IIC进行通讯。 最小系统图如下所示。 本文使用的板子原理图如下所示。 速率
该模块支持的I2C速度为快速模式400k。
生成STM32CUBEMX
用STM32CUBEMX生成例程这里使用MCU为STM32WB55RG。 配置时钟树配置时钟为32M。 串口配置
查看原理图PB6和PB7设置为开发板的串口。 配置串口。 IIC配置 配置IIC为快速模式速度为400k。 SA0地址设置
通过设置SA0管脚的高低电平可以改变模块的地址。
这里设置SA0管脚位输出管脚。 串口重定向
打开魔术棒勾选MicroLIB 在main.c中添加头文件若不添加会出现 identifier “FILE” is undefined报错。
/* USER CODE BEGIN Includes */
#include stdio.h
/* USER CODE END Includes */
函数声明和串口重定向
/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){HAL_UART_Transmit(huart1 , (uint8_t *)ch, 1, 0xFFFF);return ch;
}
/* USER CODE END PFP */参考程序
https://github.com/STMicroelectronics/lps25hb-pid
SA0设置模块地址
使能SA0为低电平配置模块地址。 HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(SA0_GPIO_Port, SA0_Pin, GPIO_PIN_RESET); //GPIO_PIN_RESET /* Initialize mems driver interface */stmdev_ctx_t dev_ctx;dev_ctx.write_reg platform_write;dev_ctx.read_reg platform_read;dev_ctx.handle SENSOR_BUS;/* Wait sensor boot time */HAL_Delay(500);获取ID
可以向WHO_AM_I (0Fh)获取固定值判断是否为0xBD。 lps25hb_reset_set为获取函数。 对应的获取ID驱动程序,如下所示。 /* Check device ID */whoamI 0;lps25hb_device_id_get(dev_ctx, whoamI);printf(LPS25HB_ID0x%x,whoamI0x%x\n,LPS25HB_ID,whoamI);if ( whoamI ! LPS25HB_ID )while (1); /*manage here device not found */复位操作
可以向CTRL_REG2 (21h)的SWRESET位写入1进行软件复位。
lps25hb_reset_set为重置函数。 对应的驱动程序,如下所示。 /* Restore default configuration */lps25hb_reset_set(dev_ctx, PROPERTY_ENABLE);do {lps25hb_reset_get(dev_ctx, rst);} while (rst);BDU设置
在很多传感器中数据通常被存储在输出寄存器中这些寄存器分为两部分MSB和LSB。这两部分共同表示一个完整的数据值。例如在一个加速度计中MSB和LSB可能共同表示一个加速度的测量值。 连续更新模式BDU ‘0’在默认模式下输出寄存器的值会持续不断地被更新。这意味着在你读取MSB和LSB的时候寄存器中的数据可能会因为新的测量数据而更新。这可能导致一个问题当你读取MSB时如果寄存器更新了接下来读取的LSB可能就是新的测量值的一部分而不是与MSB相对应的值。这样你得到的就是一个“拼凑”的数据它可能无法准确代表任何实际的测量时刻。 块数据更新BDU模式BDU ‘1’当激活BDU功能时输出寄存器中的内容不会在读取MSB和LSB之间更新。这就意味着一旦开始读取数据无论是先读MSB还是LSB寄存器中的那一组数据就被“锁定”直到两部分都被读取完毕。这样可以确保你读取的MSB和LSB是同一测量时刻的数据避免了读取到代表不同采样时刻的数据。 简而言之BDU位的作用是确保在读取数据时输出寄存器的内容保持稳定从而避免读取到拼凑或错误的数据。这对于需要高精度和稳定性的应用尤为重要。 可以向CTRL_REG1 (20h)的BDU寄存器写入1进行开启。 对应的驱动程序,如下所示。 /* Enable Block Data Update */lps25hb_block_data_update_set(dev_ctx, PROPERTY_ENABLE);设置速率
设置速率和量程可以通过CTRL_REG1 (20h)进行设置。 /* Set Output Data Rate */lps25hb_data_rate_set(dev_ctx, LPS25HB_ODR_1Hz); 轮询读取数据
对于压强和温度数据是否准备好可以查看STATUS (27h)的Zyxda位判断是否有新数据到达。
对于压强数据主要在PRESS_OUT_XL (28h)-PRESS_OUT_H (2Ah)。
压强转换如下所示。 对应代码如下。 /* Read output only if new value is available */lps25hb_reg_t reg;lps25hb_status_get(dev_ctx, reg.status_reg);if (reg.status_reg.p_da) {
// memset(data_raw_pressure, 0x00, sizeof(int32_t));
// lps25hb_pressure_raw_get(dev_ctx, data_raw_pressure);
// pressure_hPa lps25hb_from_lsb_to_hpa( data_raw_pressure);
// printf(pressure [hPa]:%6.2f\r\n, pressure_hPa); uint8_t reg1[3];int32_t ret;lps25hb_read_reg(dev_ctx, LPS25HB_PRESS_OUT_XL, reg1, 3); ret reg1[2];retret8;retreg1[1];retret8;retreg1[0];pressure_hPa (float)ret / 4096.0f;printf(OUT_XL%x %x %x %x\n,reg1[0],reg1[1],reg1[2],ret);printf(pressure [hPa]:%6.2f\r\n, pressure_hPa);}对于温度数据数据在TEMP_OUT_L (2Bh)-TEMP_OUT_H (2Ch)。
对应代码如下。 if (reg.status_reg.t_da) {memset(data_raw_temperature, 0x00, sizeof(int16_t));lps25hb_temperature_raw_get(dev_ctx, data_raw_temperature);temperature_degC lps25hb_from_lsb_to_degc(data_raw_temperature);printf(temperature [degC]:%6.2f\r\n,temperature_degC);} 演示 正常气压为50hPa到1050hPa之间。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917047.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!