stm32f1c8t6芯片IIC通信一个接口接了ccs811和bh1750两个设备,发生如下问题,第一次先采集1750信号成功,显示后采集811信息,也是可以接受的,第二次采集1750也是可以的,但是第二次及以后的811就无法读取到有效信息了,这两个程序单独运行都是可以的注释掉采集1750信息的语句后811就可以正常读取显示了,求助各位大佬是什么原因呀,卡了好几天了QAQ
以下是while循环的内容
while(1)
{
datalx =bh_data_read()/1.2; //读取bh1750数据,数据/1.2为所求数值
DHT11_Read_Data(&temperature,&humidity); //读取dht11温湿度数据
OLED_ShowString(0,2,"HUMI");
OLED_ShowString(60,2,"LUX"); //显示光强度(lx)
OLED_ShowString(0,4,"TEMP");
OLED_ShowString(60,4,"eCO2");
OLED_ShowString(0,6,"TVOC");
OLED_ShowNum(32,2,humidity,3,16);
OLED_ShowNum(102,2,datalx,3,16);
OLED_ShowNum(32,4,temperature,3,16);
CCS811GetData(); //获取ccs811数据
OLED_ShowNum(102,6,CCS.device_id,3,16); //显示设备id,如果正常811通信显示0x81H也就是129D
OLED_ShowNum(102,4,CCS.eco2,3,16); //显示等效co2
OLED_ShowNum(32,6,CCS.tvoc,3,16); //显示
delay_ms(1000); //811通信必要延时
LED0=!LED0;
}
以下是bh_data_read()函数读取1750数据

以下是读取811数据函数

注:两个芯片使用的iic库不一样,有些函数不通用,两个设备公用一个接口。
求助各位大佬了
附上程序
|