OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4921|回复: 9

stm32f1c8t6芯片IIC通信一个接口接两个不同设备出现第二次读取空白的问题,求助各位大佬

[复制链接]

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2018-8-8
在线时间
16 小时
发表于 2021-4-12 17:54:52 | 显示全部楼层 |阅读模式
5金钱
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库不一样,有些函数不通用,两个设备公用一个接口。
求助各位大佬了
附上程序



testfield1_iic叠加库.zip

4.31 MB, 下载次数: 2

最佳答案

查看完整内容[请看2#楼]

你可以这样去尝试,用按键去触发,长时间看每一次能不能正常获取,确认驱动没有问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

73

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2019-1-1
在线时间
173 小时
发表于 2021-4-12 17:54:53 | 显示全部楼层
你可以这样去尝试,用按键去触发,长时间看每一次能不能正常获取,确认驱动没有问题。
好好生活,快乐工作
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2018-8-8
在线时间
16 小时
 楼主| 发表于 2021-4-12 17:59:30 | 显示全部楼层
我想不通啊为什么第一次while循环是正常的第二次就不对了。。。。
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3625
金钱
3625
注册时间
2019-8-14
在线时间
1054 小时
发表于 2021-4-12 19:31:11 | 显示全部楼层
帮顶  、
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2018-8-8
在线时间
16 小时
 楼主| 发表于 2021-4-12 20:49:11 | 显示全部楼层

感谢感谢,这个问题真的很头大
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2018-8-8
在线时间
16 小时
 楼主| 发表于 2021-4-13 16:24:03 | 显示全部楼层
大佬们提提可能出错的原因也好呀,第一次调iic又没有示波器
回复

使用道具 举报

18

主题

151

帖子

0

精华

高级会员

Rank: 4

积分
508
金钱
508
注册时间
2020-4-22
在线时间
241 小时
发表于 2021-4-13 16:35:05 | 显示全部楼层
yingjiehan 发表于 2021-4-13 16:24
大佬们提提可能出错的原因也好呀,第一次调iic又没有示波器

要不加个延时试试
回复

使用道具 举报

4

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2021-4-8
在线时间
52 小时
发表于 2021-4-13 19:51:58 | 显示全部楼层
我是小白,前来观摩
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2018-8-8
在线时间
16 小时
 楼主| 发表于 2021-4-16 10:38:56 | 显示全部楼层
moranyidui 发表于 2021-4-13 16:35
要不加个延时试试

好的我去试试看
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2018-8-8
在线时间
16 小时
 楼主| 发表于 2021-4-16 10:45:21 | 显示全部楼层
moranyidui 发表于 2021-4-13 16:35
要不加个延时试试

两端中间加了一秒延迟还是不行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 10:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表