STM32L051使用HAL库操作实例(13)- 读取IAQ-CORE-C传感器实例

目录

一、前言

二、传感器参数

三、STM32CubeMX配置(本文使用的STM32CubeMX版本为6.1.2)例程使用模拟I2C进行数据读取

1.MCU选型

2.使能时钟

3.时钟配置

4.GPIO口配置

四、配置STM32CubeMX生成工程文件

五、点击GENERATE CODE生成工程文件

六、案例程序

1.I2C部分代码说明

2.串口重定义

3.硬件连接

七、IAQ-CORE-C参数读取图

1.初始上电预热阶段数据

2.预热后数据状态

一、前言

iAQ‐core 传感器是 AMS 公司生产的室内空气质量检测模块,是一个可用于检测恶劣空气质量的低成本、超紧凑解决方案。 该模块采用微加工金属氧化物半导体 (MOS) 技术,以检测范围广泛的 VOC,并同时利用室内的 CO2 和TVOC 水平进行直接修正。检测原理为通过铂加热器和跨数字电极结构放置在约一微米薄的氮化硅膜上。通过加热来分析所处的空气中VOC的比例,转换为CO2的PPM值/TVOC的PPB值输出。

二、传感器参数

-  工作电压:3.3±0.1V      

-  测量范围:相当于450-2000ppm的CO2,125-600ppb的TVOC

-  输出信号:I2C

-  高灵敏度,响应速度快      

-  测量周期:1ms(脉冲工作模式),11ms(持续工作模式)      

-  低功耗:在9mW(脉冲工作模式)到67mW(持续工作模式

三、STM32CubeMX配置(本文使用的STM32CubeMX版本为6.1.2)例程使用模拟I2C进行数据读取

思路:配置相关外设及使用模拟I2C进行数据读取,再将读取的数据通过串口打印出来;

1.MCU选型

本例程使用的为STM32L051C8T6型号

2.使能时钟

3.时钟配置

4.GPIO口配置

模拟I2C引脚设置

USART串口参数设置

​​​​​​​

四、配置STM32CubeMX生成工程文件

五、点击GENERATE CODE生成工程文件

六、案例程序

1.I2C部分代码说明

关于模拟的IIC时序代码可参考原子的例程,这里不再复述。

IAR-CORE-C模块的IIC通讯与传统的IIC设备读取存在一个特别的地方,再DATAsheet中有相关的说明,即在读取模块数据时,模块接收读取指令后会强制将SCL线上的电平拉低,待数据准备完成后再将SCL线电平释放为高电平。所以在读取模块数据时需要去判断SCL线的电平状态,再进行数据的读取处理,如果不等待直接去进行数据操作会导致无法读取到正确的数据;其它的读取时序与标准的IIC设备一致;

uint8_t Emul_i2c_RdByte_clk_stretching(uint8_t rdata)
{uint8_t i=8 ,rec =0;Emul_SDA_H;SDA_IN(); //SDA 设置为输入for (i=0; i<8; i++){Emul_SCL_L;delay_us(4);Emul_SCL_H;rec<<=1;if( FALSE == Emul_i2c_waitSCL())return FALSE; //等待 slave 释放 SCL 线,关键代码if (READ_SDA()) rec|=0x01;delay_us(4);}Emul_SCL_L;SDA_OUT();//用完输入 再配置为输出供下次使用if (!rdata)Emul_i2c_Ack();//发送 ACKelseEmul_i2c_NAck(); //发送 NACKreturn rec;
}

IAQ-CORE-C数据结构

注意数据的第2byte位为模块状态位,模块初始上电都要经过约5分钟左右的预热期,预热期为0x10,经过预热后当状态字节位为0时,数据为有效数据。

模块数据的读取时序图可参考附件的IAQ-CORE-C的DATAsheet。

2.串口重定义

串口重定义主要参考原子部分,通过printf将数据打印到上位机可直观的查看数据;

3.硬件连接

注意引脚参数设置:不加上拉电阻是用 PP 模式,加了上拉电阻用 OD 模式。

七、IAQ-CORE-C参数读取图

1.初始上电预热阶段数据

2.预热后数据状态

​​​​​​​​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubersphere应用【二】Docker安装

一、Docker安装 1.下载Docker安装包 【地址】Index of linux/static/stable/x86_64/ 2.上传至服务器 # 解压文件 tar -xvf docker-20.10.10.tgz# 将docker 目录中的所有文件复制至/usr/bin/目录下 cp docker/* /usr/bin 3.配置docker.service文件 vim /usr/lib/systemd/sy…

arm平台编译so文件回顾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、几个点二、回顾过程 1.上来就执行Makefile2.编译第三方开源库.a文件 2.1 build.sh脚本2.2 Makefile3.最终编译三、其它知识点总结 前言 提示&#xff1a;这…

MSSQL存储过程的功能和用法(简明扼要)

官方文档 存储过程&#xff08;数据库引擎&#xff09; - SQL Server | Microsoft Learn Transact-SQL 参考&#xff08;数据库引擎&#xff09; - SQL Server | Microsoft Learn 定义 存储过程可以用编程语言的方法来类比&#xff0c;有输入输出。区别是其使用SQL表达业务…

spring 单元测试 Junit

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

解决打印机超出字节之使用PHP拆分字符串并保留分隔符

在开发过程中&#xff0c;我们经常需要将一个长字符串拆分成多个片段&#xff0c;并且保留原始字符串中的分隔符。在本篇教程中&#xff0c;我们将使用PHP编写一个函数来实现这个功能。 首先&#xff0c;让我们来看一下我们要解决的问题。假设我们有一个长字符串&#xff0c;我…

pywinrm 解析输出为 dict 格式 字典格式

s winrm.Session(host, auth(username, password))task_folder \RPA\\ # 运行 schtasks 命令来列出任务计划程序 command schtasks /query /fo csv # command fschtasks /query /fo csv /tn {task_folder} # command fschtasks /query /fo csv /tn "{task_folder}\\…

mapbox使用v3版本,v2的样式切换不同时间段

创建DayAndNight.js /*** 使用方式* const dayNight new DayAndNight({ map: map // map 地图对象}) * 修改类型* dayNight.setConfigProperty(value)*/ class DayAndNight {constructor (sdMap) {this.map sdMap.mapthis.initStyle()}// 初始化时添加必要样式initStyle () {…

删除计算机用户时拒绝访问权限,c盘为什么拒绝访问 删除c盘文件需要管理员权限怎么办...

转载&#xff1a;​​​​​​删除计算机用户时拒绝访问权限,c盘为什么拒绝访问 删除c盘文件需要管理员权限怎么办...-CSDN博客 c盘是电脑中的关键位置&#xff0c;存储着很多系统重要文件&#xff0c;如果电脑出问题一般就是c盘中的文件异常&#xff0c;近日有小伙伴出现这样…

前端知识笔记(四十一)———nodejs发起http或https请求

http请求 const express require(express) const http require(http)const app express()const loginConfig (token) > {return {hostname: api.test.com,port: 80,path: /test?access_token${token},method: GET} }app.get(/login, (req, res) > {const options …

c++通过serial库进行上下位机通信

​编辑 风紊 现役大学牲&#xff0c;半退休robomaster视觉队员 写在前面 本文章主要介绍的是如何通过开源的serial库和虚拟串口实现上位机和下位机通信。 需求 假设下位机有这样一个数据报发送给上位机 struct DataRecv {char start s;TeamColor color TeamColor::Blu…

Premiere Pro 2024 新功能有哪些?视频剪辑软件PR2024更新内容及问题修复

PR软件“基于文本的编辑”中的填充词检测与批量删除功能 “基于文本的编辑”可让您检测“呃”和“嗯”填充词并批量删除它们&#xff0c;从而使您的转录文本更加准确。就像处理停顿一样&#xff0c;您可以单击填充词并将其从序列转录文本中删除。填充词与语言无关&#xff0c;…

STM32CubeIDE(CUBE-MX hal库)----RTC时钟,时钟实时显示

系列文章目录 STM32CubeIDE(CUBE-MX hal库)----初尝点亮小灯 STM32CubeIDE(CUBE-MX hal库)----按键控制 STM32CubeIDE(CUBE-MX hal库)----串口通信 STM32CubeIDE(CUBE-MX hal库)----定时器 STM32CubeIDE(CUBE-MX hal库)----蓝牙模块HC-05&#xff08;详细配置&#xff09; 前言…

【无标题】安装环境

这里写目录标题 清华镜像加速 安装cuda11.3 PyTorch 1.10.1https://pytorch.org/get-started/previous-versions/[如果没有可以点Previous pyTorch Versions&#xff0c;这里面有更多的更早的版本](https://pytorch.org/get-started/locally/) 复制非空文件夹cp: -r not specif…

传染病传播速度

题干 R0值是基本传染数的简称&#xff0c;指的是在没有采取任何干预措施的情况下&#xff0c;平均每位感染者在传染期内使易感者个体致病的数量。数字越大说明传播能力越强&#xff0c;控制难度越大。一个人传染的人的数量可以用幂运算来计算。假设奥密克戎的R0为10&#xff0…

《LeetCode力扣练习》代码随想录——字符串(翻转字符串里的单词---Java)

《LeetCode力扣练习》代码随想录——字符串&#xff08;翻转字符串里的单词—Java&#xff09; 刷题思路来源于 代码随想录 151. 反转字符串中的单词 双指针 class Solution {public String reverseWords(String s) {char[] results.toCharArray();resultremoveSpace(result);r…

2023-12-05 Qt学习总结2

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言五 Hello Qt!六 Qt控件和事件七 Qt信号和槽八 Qt自定义信号和槽总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 五 Hello Qt! 现在我们已经有了一个空窗口工程, 传统上, 我们要实现一个"Hello …

(三潮来袭)探寻2023年科技变革潮流与2024年前瞻展望

2023年对于IT行业来说是一个动荡而又充满变革的一年。随着世界逐渐走出前几年的挑战&#xff0c;企业逐渐复苏&#xff0c;但这个行业仍然在经历着激烈的变革。在这个时候&#xff0c;我们看到了一些引人注目的技术变化和未来的趋势。 一、2023年回顾 关键词&#xff1a;Chat…

构建Servlet项目流程

第一步&#xff1a;创建maven项目 部分基础 依赖的模板基础部分如下 maven-archetype-quickstart: 这是最基本的Archetype&#xff0c;它创建一个包含简单Java类和单元测试的项目。 maven-archetype-webapp: 这个Archetype创建一个简单的Java web应用&#xff0c;包括一个serv…

【C++】算法库(批量操作、搜索操作)

C算法库 文章目录 C算法库批量操作for_eachfor_each_n 搜索操作all_of ,any_of ,none_offind, find_if, find_if_notfind_endstd::find_first_ofadjacent_findcount, count_ifequalsearchsearch_n 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;…

微信小程序 - PC端选择ZIP文件

微信小程序 - PC端选择文件 分享代码片段场景分析解决思路附魔脚本chooseMediaZip 选择附魔后的ZIP文件相关方法测试方法 参考资料 分享代码片段 不想听废话的&#xff0c;直接看代码。 https://developers.weixin.qq.com/s/UL9aojmn7iNU 场景分析 如果你的微信小程序需要选…