打印
[STM32F1]

要采集实时数据该用什么方法呢?

[复制链接]
562|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chuxh|  楼主 | 2016-8-31 21:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要采集实时数据该用什么方法呢?
沙发
juventus9554| | 2016-8-31 21:24 | 只看该作者
楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
chuxh|  楼主 | 2016-8-31 21:25 | 只看该作者
每秒采集250次数据,每次27个字节,需要实时的写入SD卡。我这个应该怎么在main函数的while循环中写这个采集程序呢?

使用特权

评论回复
地板
juventus9554| | 2016-8-31 21:25 | 只看该作者
什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
5
chuxh|  楼主 | 2016-8-31 21:25 | 只看该作者
我现在的方法似乎采集的有问题。while循环中的程序如下:
        if((flag&0x0a)==0x0a) {        //每次数据准备好后,产生一次中断,标志位置位
                        ADS1299_Drdy(data_count);    //该函数负责采集数据,每次27个字节
                        if(data_count==count_num)
                        {                        
                                Write_wenjian(p_filename,RBuffer_Num,cache_point);   //收集够一定数量开始写进SD卡
                                data_count=0;
                    }                        
                        flag&=(~ADS_DRDY);                 
//                        flag&=(~cache_flag);        
                }
                else if((flag&0x50)==0x50){                                                         //判断开始按键按下

                        p_filename=znFAT_CreateFilename();                                                                        
                        Create_wenjian(p_filename);                                       
                        flag|=start_flag;
                        flag&=(~create_flag);
                        flag&=(~power_start);
                        ADS1299_Start_Pin();
                        ADS1299_RDataC();
                        GPIO_SetBits(GPIOD, GPIO_Pin_6);               
                }
                else if((flag&0x06)==0x06){        
                        GPIO_ResetBits(GPIOD, GPIO_Pin_6);
                        ADS1299_Reset_Pin();
                        ADS1299_Stop_Pin();
                        cache[0]=CountNum;
                        cache[1]=CountNum>>8;
                        cache[2]=CountNum>>16;
                        cache[3]=CountNum>>24;
                        Write_wenjian(p_filename,4,cache_point);
                        znFAT_Close_File(&fileinfo);                                                
                        znFAT_Flush_FS();                        
                        flag=0x44;                        
                }

使用特权

评论回复
6
司徒老鹰| | 2016-8-31 21:25 | 只看该作者
实时采集最好不用查询,直接中断

使用特权

评论回复
7
chuxh|  楼主 | 2016-8-31 21:26 | 只看该作者
你说的很是,我这个其实是用的中断做标记,然后返回主函数查询接收数据的。如果直接在中断中接收数据会导致在中断中停留过长时间,不符合中断程序原则啊

使用特权

评论回复
8
llljh| | 2016-8-31 21:26 | 只看该作者
通过中断,写入时间头,有变化再写下一个

使用特权

评论回复
9
chuxh|  楼主 | 2016-8-31 21:26 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

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

本版积分规则

936

主题

11296

帖子

2

粉丝