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.预热后数据状态

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

相关推荐
国科安芯1 小时前
面向高性能运动控制的MCU:架构创新、算法优化与应用分析
单片机·嵌入式硬件·安全·架构·机器人·汽车·risc-v
阿让啊2 小时前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
电鱼智能的电小鱼4 小时前
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
linux·网络·人工智能·嵌入式硬件·无人机·边缘计算
Neil今天也要学习5 小时前
永磁同步电机控制算法-VF控制
单片机·嵌入式硬件
狄加山6755 小时前
STM32 I2C总线通信协议
stm32·单片机·嵌入式硬件
码小文8 小时前
Cadence学习笔记之---原理图设计基本操作
笔记·单片机·学习·硬件工程·pcb工艺
FCC9989 小时前
STM32嵌入式
stm32·单片机·嵌入式硬件
小禾苗_10 小时前
32单片机——GPIO配置步骤
单片机
ryh200481212 小时前
STM32移植最新版FATFS
stm32·fatfs
少年、潜行17 小时前
【开源】STM32HAL库移植Arduino OneWire库驱动DS18B20和MAX31850
stm32·嵌入式硬件·开源·ds18b20·max31850