当前位置: 首页 > news >正文

内销网站要怎么做优化网站推广排名

内销网站要怎么做,优化网站推广排名,模板app,商城开发网站建设气压计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_ID=0x%x,whoamI=0x%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];ret=ret<<8;ret+=reg1[1];ret=ret<<8;ret+=reg1[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.tj-hxxt.cn/news/4180.html

相关文章:

  • 男人女人做羞羞事网站杭州seo网站建设靠谱
  • 无锡网站建设优化建站天津百度seo代理
  • 手机上网自动跳转网站免费的关键词优化工具
  • 淄博网站建设优化企业培训系统
  • 广告公司活动策划公司seo优化的主要内容
  • 网站底部怎么做品牌推广的三个阶段
  • 北京建设招聘信息网站推广平台排行榜有哪些
  • 网站雪花飘落代码免费的app推广平台
  • 网站建设公司推荐时代创信百度搜题网页版入口
  • 修改网站图标百度关键词优化多久上首页
  • 门户网站栏目维护建设方案域名注册新网
  • 小城市网站建设业务搜外seo视频 网络营销免费视频课程
  • 依波手表价格 官方网站山东seo多少钱
  • 太原seo排名优化公司windows7优化大师官方下载
  • 设备网站建设长春seo优化企业网络跃升
  • 个人婚礼网站设计经营管理培训课程
  • crm客户管理系统模块seo网站推广全程实例
  • 武汉网站建设设计哪家好建站之星
  • 网站源码推荐福建网站建设制作
  • 网站建设监理关注公众号一单一结兼职
  • 用bootstrap做的手机推销网站模板搜索引擎优化的作用
  • 山东 网站建设网站百度手机端排名怎么查询
  • 做网站需要公司网站优化方案范文
  • 湖北网站建设模板下载市场调研一般怎么做
  • wordpress 网站很慢如何申请网站域名流程
  • 长宁哪里有做网站优化比较好福州短视频seo
  • 彩票网站开发需求文档网站怎么优化
  • 小域名 网站备案合肥做网站公司哪家好
  • 如何搭建内网网站网站推广系统
  • 制作网站书签怎么做把百度网址大全设为首页