STM32F103C8T6+CCS811二氧化碳浓度检测

2019-07-20 22:39发布

本文使用的IIC协议 参考ltengy大佬的文章,需要的可以去github看看
https://ltengy.github.io/2018/08 ... %E6%8C%87%E5%8D%97/

主程序根据CCS811手册来进行编写,程序如下:
[mw_shl_code=c,true]#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "stdio.h"
#include "CCS811.h"
extern         ccs811_measurement_t CCS;
int main(void)
{
        u8 st1 = 0;
        delay_init();
        Uart1_init(115200);
        CCS811Init();
        app_Start();
        delay_ms(150);
        while(1)
        {
                st1 = CCS811_ReadOneByte(0x00);
                switch(st1)
                {
                        case 0x90:
                        {
                                setMode(MODE1);
                        }break;
                        case 0x98:
                        {
                                getData();
                                delay_ms(10);
                                if(CCS.eco2<10000)
                                {
                                        printf("co2 = %d tvoc = %d ",CCS.eco2,CCS.tvoc);
                                }
                                delay_ms(300);
                        }break;
                        case 0x10:
                        {
                                app_Start();
                                printf("CCS811 Tries to enter App Mode! ");
                                delay_ms(150);
                        }
                        case 0x99:
                        {
                                st1 = CCS811_ReadOneByte(0xE0);
                                printf("ERROR = %d ",st1);
                        }
                        default:
                        {
                                reset();
                                printf("CCS811 Tries to reset ");
                                delay_ms(150);
                        }break;
                }
                delay_ms(1000);
        }
}[/mw_shl_code]

记得在APP_Start后在测量模式选择时一定要加延时,要不然很可能出错,不能正确选择模式。
这个模块感觉很奇怪所以得多试试,如果出错,得重置模块 然后再进入重复上述操作
根据情况不同有可能开始测量的速度有所不同,我有时候开始有测量值快,有时候有测量值慢,这主要还是看MODE1什么时候设置成功。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。