本文使用的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什么时候设置成功。
那个我发的链接上就有
主要就是缺一个我上面写的主函数
一周热门 更多>