LPS25HB 气压计 的嵌入式程序开发
文章目录
- LPS25HB 气压计 的嵌入式程序开发
- 开发简介:
- 开发过程:
LPS25HB 气压计 的嵌入式程序开发
开发简介:
虽然传感器的检测的物理性质不同,但是传感器的硬件接口一般都有一些相似。如果你做过一种一款传感器如加速度,温湿度,那么其他的传感器的嵌入式程序实现都差不多。主要涉及这样几块相同的内容:
1、通用接口IIC还是SPI
2、芯片是否支持FIFO的功能。
3、是否支持中断的机制。
开发过程:
下面以LPS25HB气压传感器为例,简单介绍开发过程。
1、这里我们采用IIC的通讯方式,
当然首先需要对MCU的IIC接口进行初始化。
STM32 平台的初始化一般如下:
uint8_t MX_I2C1_Init(void) //加速度、气压传感器SensorIIC接口
{hi2c1.Instance = I2C1;hi2c1.Init.ClockSpeed = 400000;hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;hi2c1.Init.OwnAddress1 = 0x34;hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;hi2c1.Init.OwnAddress2 = 0;hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;if (HAL_I2C_Init(&hi2c1) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}if( HAL_I2C_GetState( &hi2c1) == HAL_I2C_STATE_READY ){return 0;}else{return 1;}}
2、实现IIC的读写功能,如果有启用中断,则配置中断管脚及中断优先级
void BSP_BARO_Init(lps25hb_ctx_t *dev_ctx)
{dev_ctx->write_reg = platform_write;dev_ctx->read_reg = platform_read;dev_ctx->handle = &hi2c1;BSP_BARO_IO_ITConfig(); // 使能Baro MEMS 中断}
3、调试IIC读写功能是否正常,我们可以读取传感器芯片的 whoamI 值来确认。然后配置已基本的寄存器参数,如果启用FIFO,那相对就复杂些。默认是ByPass 模式。
void BSP_BARO_Config(lps25hb_ctx_t *dev_ctx)
{ /* Check device ID */whoamI = 0;lps25hb_device_id_get(dev_ctx, &whoamI);if ( whoamI != LPS25HB_ID )while(1); /*manage here device not found *//* Restore default configuration */lps25hb_reset_set(dev_ctx, PROPERTY_ENABLE);do {lps25hb_reset_get(dev_ctx, &rst);} while (rst);/* Enable Block Data Update */lps25hb_block_data_update_set(dev_ctx, PROPERTY_ENABLE);/* Set Output Data Rate */lps25hb_data_rate_set(dev_ctx, LPS25HB_ODR_25Hz); #ifdef FIFO_BARO //如果定义的FIFO功能// lps25hb_fifo_mode_set(dev_ctx,LPS25HB_FIFO_MODE); // 设置 FIFO Mode;lps25hb_stop_on_fifo_threshold_set(dev_ctx,1);// lps25hb_fifo_set(dev_ctx,1); //启用FIFOlps25hb_int_pin_mode_set(dev_ctx,LPS25HB_DRDY_OR_FIFO_FLAGS); //开启中断lps25hb_fifo_watermark_set(dev_ctx,0x0F); //开启watermark、、 lps25hb_fifo_get(dev_ctx,&testv);//lps25hb_fifo_watermark_set_level(dev_acc,THRESH_MASK);#endif}
4、ByPass 模式下的数据读取
void BARO_Handle(lps25hb_ctx_t *dev_ctx)
{lps25hb_reg_t reg;lps25hb_status_get(dev_ctx, ®.status_reg);if (reg.status_reg.p_da){memset(data_raw_pressure.u8bit, 0x00, sizeof(int32_t));lps25hb_pressure_raw_get(dev_ctx, data_raw_pressure.u8bit);pressure_hPa = lps25hb_from_lsb_to_hpa( data_raw_pressure.i32bit);}if (reg.status_reg.t_da){memset(data_raw_temperature.u8bit, 0x00, sizeof(int16_t));lps25hb_temperature_raw_get(dev_ctx, data_raw_temperature.u8bit);temperature_degC = lps25hb_from_lsb_to_degc( data_raw_temperature.i16bit);}
}
ByPass 模式程序简单,适合一般地应用场景。
LPS25HB 气压计 的嵌入式程序开发相关推荐
- LPS25HB 气压计 资料整理
LPS25HB 气压计 资料整理 文章目录 LPS25HB 气压计 资料整理 LPS25HB 的主要特性: LPS25HB 的应用场景: LPS25HB的管脚: LPS25HB的机械物理性能展表 LP ...
- uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...
来源:嵌入式时代@头条号 在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以在底层编写汇编代码或者C语言代码,以使系统满足实时需求.嵌入 ...
- 嵌入式开发linux工具,嵌入式Linux开发入门之MfgTool工具的使用
介绍嵌入式linux开发的环境搭建: 一.PC端环境搭建 2.Ubuntu装好后,在终端安装minicom工具,安装命令:sudo apt-get install minicom 注:该工具在后面烧录 ...
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一)(转)
自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统.为了帮助嵌入式软件开发人员使用 MiniGUI编写出更好的应用程序,我们将撰 ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...
本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础
本节书摘来异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者:华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- 嵌入式linux 添加中断,《嵌入式linux应用程序开发完全手册》中断控制器操作(外部中断)学习笔记...
<嵌入式linux应用程序开发完全手册>中断控制器操作(外部中断)学习笔记 一.ARM中断体系 当一个"异常"发生时,或者说当收到一个中断触发信号时,ARM9将会自动完 ...
- 嵌入式LINUX系统程序开发
嵌入式LINUX系统程序开发 1.Ubuntu 18.04镜像源配置 2.Ubuntu上用gcc进行编写程序 2.1.gcc的安装 2.2.gcc的常用命令 2.3.编译运行程序 3.Windows下 ...
- Windows CE嵌入式系统程序开发
<Windows CE嵌入式系统程序开发> 基本信息 作者: 胡文 冯剑 姜海涛 胡玥 丛书名: 单片机与嵌入式丛书 出版社:机械工业出版社 ISBN:978711 ...
最新文章
- python excel xldr xlwt xlutils 使用简介
- JAVA求是否为闰年,for-while循环,输出你好
- Twitch 沈悦时:国内外互联网直播生态差异
- fusion 360安装程序的多个实例正在同时运行。_阿里架构师实例讲解——Java多线程编程;详细的不能再详细了...
- 《MySQL——38道查询练习(无连接查询)》
- Android抽屉页面效果
- SwitchHosts!提示没有切换权限:C:\WINDOWS\system32\drivers\etc\host 文件无法修改
- 从零开始学Pytorch(十四)之优化算法进阶
- 安装caffe时出现“MySQL”不是内外不wenjian
- Dart的套接字与web套接字
- 功能测试常用6种方法_云端功能测试:更好的12种方法
- 集群服务器分布式iis_使用nginx实现分布式限流的方法
- JDK64位安装与JDK环境配置图文教程
- Axure学习之快速上手
- 按键精灵通过句柄获取窗口坐标_学会用按键精灵获取子窗口句柄
- 从MSDN我告诉你下载镜像
- C语言strcpy()库函数的实现
- 一阶电路实验报告心得_一阶电路实验报告5篇
- 信息化实施, 管理前沿 ERP生产系统
- 自学Python3脚本100例(1-10)
热门文章
- 6、VTK基本数据结构
- 【转】MATLAB的polar函数 极坐标绘制最大半径怎样设置
- [云炬创业基础笔记]第七张创业团队测试8
- [云炬创业基础笔记]第七章创业资源测试1
- WIn10+Anaconda 环境下安装 PyTorch 避坑指南
- python字符串与文本处理技巧(4): 格式化输出、令牌解析、串上串
- matlab 读取含有文本的txt
- 在应用环境中如何构造最优的数据库模式
- Nginx源码分析-内存池
- Docker部署ElasticSearch7.11.1并挂载+配置X-Pack设置帐号密码+Kibana7.11.1+IK插件