打印
[STM32F1]

读出来的数据各位全为1

[复制链接]
260|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiajs|  楼主 | 2022-6-16 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32F103C8T6开发板加SGP30传感器检测CO2与TVOC的浓度,只实现最简单的数据读取,但是读出来的数据各位全为1

使用特权

评论回复
沙发
lizye| | 2022-6-16 21:11 | 只看该作者
不是有效数据?

使用特权

评论回复
板凳
zhenykun| | 2022-6-16 21:15 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
地板
jiajs|  楼主 | 2022-6-16 21:17 | 只看该作者
#ifndef __SGP30_H

#define __SGP30_H



#include "myiic.h"



void Read_Air_Quality(u16 *co2, u16 *tvoc);



void        SGP30_Init(void);



#endif

使用特权

评论回复
5
jiajs|  楼主 | 2022-6-16 21:20 | 只看该作者
#include "sgp30.h"

#include "delay.h"



#include "OLED_IIC.h"



void SGP30_Init(void)

{        

        IIC_Init();

               

        IIC_Start();

        IIC_Send_Byte(0x58);

        IIC_Wait_Ack();

        IIC_Send_Byte(0x20);

        IIC_Wait_Ack();

        IIC_Send_Byte(0x03);

        IIC_Wait_Ack();

        IIC_Stop();

        

        IIC_Start();

        IIC_Send_Byte(0x58);

        IIC_Wait_Ack();

        IIC_Send_Byte(0x20);

        IIC_Wait_Ack();

        IIC_Send_Byte(0x08);

        IIC_Wait_Ack();

        IIC_Stop();

}



void Read_Air_Quality(u16 *co2, u16 *tvoc)

{

        u8 co2_high = 0;

        u8 co2_low = 0;

        u8 tvoc_high = 0;

        u8 tvoc_low = 0;

        

        delay_ms(15000);

        

        IIC_Start();

        IIC_Send_Byte(0x59);

        IIC_Wait_Ack();

        co2_high = IIC_Read_Byte(0);

        co2_low = IIC_Read_Byte(0);

        IIC_Read_Byte(0);

        tvoc_high = IIC_Read_Byte(0);

        tvoc_low = IIC_Read_Byte(0);

        IIC_Read_Byte(0);

        IIC_Stop();

        

        *co2 = (co2_high<<8)|co2_low;

        *tvoc = (tvoc_high<<8)|tvoc_low;

}

使用特权

评论回复
6
jiajs|  楼主 | 2022-6-16 21:27 | 只看该作者
#include "stm32f10x.h"

#include "delay.h"

#include "sys.h"

#include <stdio.h>

#include <string.h>

#include "OLED_IIC.h"

#include "dht11.h"

#include "usart.h"

#include "sgp30.h"



/************************************************   

STM32F103C8T6     

12864_IIC_OLED_STM32驱动

OLED显示驱动模块: SSD1306

SGP30传感器

IIC: SCL, SDA

对应接口: PB0, PB1

SGP30:VCC, SCL, SDA, GND

对应接口: 3V, PB6, PB7, GND

CH340:TXD, RXD, GND

对应接口: PA10, PA9, GND

************************************************/



int main(void)

{

        u16 co2;

        u16 tvoc;



        delay_init();                           //延时初始化

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

        

        uart_init(9600);

        SGP30_Init();



        OLED_Init();                    //初始化OLED

  initial_olcd();                  //初始化

        clear_screen();                        //清屏

        

        delay_ms(50000);

        delay_ms(50000);

        delay_ms(50000);



        while(1)

        {

                Read_Air_Quality(&co2, &tvoc);

               

                USART_SendData(USART1, 1);

                delay_ms(12);

                USART_SendData(USART1, co2>>8);

                delay_ms(12);

                USART_SendData(USART1, 2);

                delay_ms(12);

                USART_SendData(USART1, co2&0x00ff);

                delay_ms(12);

                USART_SendData(USART1, 3);

                delay_ms(12);

                USART_SendData(USART1, tvoc>>8);

                delay_ms(12);

                USART_SendData(USART1, 4);

                delay_ms(12);

                USART_SendData(USART1, tvoc&0x00ff);

                delay_ms(12);

                while(USART_GetFlagStatus(USART1, USART_FLAG_TC)!=SET);

                USART_RX_STA = 0;

               

                display_number_16x8(1,1,co2);

                display_number_16x8(3,1,tvoc);

        }

}

使用特权

评论回复
7
spark周| | 2022-6-16 21:30 | 只看该作者
楼主是不是用的simulator的模式啊

使用特权

评论回复
8
zwll| | 2022-6-16 21:32 | 只看该作者
那估计是时序的问题

使用特权

评论回复
9
juventus9554| | 2022-6-16 21:36 | 只看该作者
楼主的时序对不对  

使用特权

评论回复
10
renyaq| | 2022-6-16 21:38 | 只看该作者
sgp3测的CO2,TVOC准不准

使用特权

评论回复
11
renyaq| | 2022-6-16 21:41 | 只看该作者
首先确定I2C工作正不正常:硬件、软件

使用特权

评论回复
12
dengdc| | 2022-6-16 21:45 | 只看该作者
SGP30的读地址是0xB1,写地址是0xB0

使用特权

评论回复
13
jiajs|  楼主 | 2022-6-16 21:47 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

940

主题

11975

帖子

6

粉丝