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

目录

一、前言

二、传感器参数

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

1.MCU选型

2.使能时钟

3.时钟配置

4.GPIO口配置

四、配置STM32CubeMX生成工程文件

[五、点击GENERATE CODE生成工程文件](#五、点击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();//发送 ACK
    else
        Emul_i2c_NAck(); //发送 NACK
    return rec;
}

IAQ-CORE-C数据结构

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

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

2.串口重定义

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

3.硬件连接

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

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

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

2.预热后数据状态

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

相关推荐
沉在嵌入式的鱼13 分钟前
linux串口对0X0D、0X0A等特殊字符的处理
linux·stm32·单片机·特殊字符·串口配置
学习路上_write17 分钟前
AD5293驱动学习
c语言·单片机·嵌入式硬件·学习
影阴1 小时前
存储器和寄存器
stm32·单片机·嵌入式硬件
吃西瓜的年年2 小时前
3. C语言核心语法2
c语言·嵌入式硬件·改行学it
李洛克072 小时前
RDMA CM UDP 通信完整指南
单片机·网络协议·udp
思茂信息2 小时前
CST电动车EMC仿真——电机控制器MCU滤波仿真
javascript·单片机·嵌入式硬件·cst·电磁仿真
小曹要微笑2 小时前
I2C总线技术解析(纯文字版)
单片机·嵌入式硬件·esp32·iic
我送炭你添花3 小时前
可编程逻辑器件(PLD)的发展历程、原理、开发与应用详解
嵌入式硬件·fpga开发
袖手蹲3 小时前
Arduino UNO Q 从 Arduino Cloud 远程控制闪烁 LED
人工智能·单片机·嵌入式硬件·电脑
平凡灵感码头4 小时前
第一次做蓝牙产品,从零开发 嵌入式开发日志(2)AC63NSDK 完整合并版目录说明
stm32·单片机·嵌入式硬件