ADC实时采样数据存储在SD卡

2019-08-14 01:08发布

小菜鸟一只~正在做一个小项目,需要将ADC采样的数据存储在SD卡。我现在已经会把缓存区内的数据写入SD卡中的.TXT文档中,但是还是不能把实时的AD采样值存储进去,希望大神求教!感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
毛科丹
1楼-- · 2019-08-15 00:01
请问你这个可以测量读取速度吗
一直都在的星空
2楼-- · 2019-08-15 01:32
小兔天 发表于 2016-9-22 20:13
你现在弄好的程序呢?发出来看看

主函数大概是这样的:初始化,显示初始的一个界面,检测SD卡;若检测到SD卡,向SD卡写入buf2里面的数据。程序下载进去后,验证是可以实现的。我的问题是是否可以定义buf1、buf2两个缓存区?ADC采样的数值存入buf1,buf1满数据存入buf2,同时buf1的数据写入SD卡;buf2满后数据存入buf1,buf2数据写入SD卡……依次交替


int main(void)
{
        u32 total,free;
//         int i,j;
  u8 dir=1;         
        u16 adcx;
        float temp;
        FRESULT res;
        FIL fsrc;
       
        unsigned char buf2[26]="2013 08 28 16 28.279";
        NVIC_Configuration();         
        delay_init();          
        uart_init(9600);           
        exfuns_init();                             
        LCD_Init();               
         Adc_Init();  
        usmart_dev.init(72);            
        mem_init();                                                  

        LCD_Display_Dir(dir);   
        POINT_COLOR=BLUE;         
        LCD_ShowString(10,10,200,16,16,"Molar Monitoring System");                 
        LCD_ShowString(60,50,200,16,16,"Mini STM32");       
        LCD_ShowString(60,70,200,16,16,"FATFS TEST");       
        LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,16,16,"Use USMART for test");          
        LCD_ShowString(60,130,200,16,16,"2014/3/14");          


        while(SD_Initialize())                                       
        {
                LCD_ShowString(60,150,200,16,16,"SD Card Error!");
                delay_ms(500);
                LCD_Fill(60,150,240,150+16,WHITE);//Çå3yÏÔê¾                          
                delay_ms(500);
        }                                               

               

  f_mount(fs[0],"0:",1);                                        

  res=f_open(&fsrc,"0:/test1/test1.txt",FA_OPEN_ALWAYS|FA_WRITE);
        if(res==FR_OK)                     
  {
                res=f_lseek(&fsrc,fsrc.fsize);                        
    res=f_write(&fsrc,buf2, sizeof(buf2),&bw);      

  }
  f_close(&fsrc);                  

       
        while(exf_getfree("0",&total,&free))       
        {
                LCD_ShowString(60,150,200,16,16,"Fatfs Error!");
                delay_ms(500);
                LCD_Fill(60,150,240,150+16,WHITE);                  
                delay_ms(500);
        }                       

        POINT_COLOR=BLUE;                 
        LCD_ShowString(60,150,200,16,16,"FATFS OK!");         
        LCD_ShowString(60,170,200,16,16,"SD Total Size:     MB");         
        LCD_ShowString(60,190,200,16,16,"SD Free Size:     MB");             
        LCD_ShowNum(172,170,total>>10,5,16);                                       
        LCD_ShowNum(172,190,free>>10,5,16);                                               
       
       
        delay_ms(5000);
        LCD_Clear(WHITE);
        POINT_COLOR=BLUE;
        LCD_ShowString(20,200,200,16,16,"Molar Monitoring System");       

        LCD_ShowString(20,220,200,16,16,"ADC:");
        LCD_ShowString(100,220,200,16,16,"Voltage:     V");
       
while(1)
        {

                adcx=Get_Adc_Average(ADC_Channel_1,10);  
                LCD_ShowxNum(60,200,adcx,4,16,0);      
                temp=(float)adcx*(3.3/4096);
                adcx=temp;
                LCD_ShowxNum(170,220,adcx,1,16,0);         
                LCD_ShowString(180,220,200,16,16,".");
                temp-=adcx;
                temp*=1000;
                LCD_ShowxNum(190,220,temp,3,16,0X80);
                delay_ms(250);
       }
一直都在的星空
3楼-- · 2019-08-15 03:26
 精彩回答 2  元偷偷看……
刘毅壁虎
4楼-- · 2019-08-15 08:11
我觉得如果你的采样频率不是很高,是不是可以每次采样完毕直接对采样到的数据直接进行保存。随后等待第二次的采样,当采样完毕后,进行第二次的保存。也就是说,将保存部分的工作,放到每次采样的后面。

其次,我有一本疑问,请问,你的数据是如何进行保存的?每次都是保存为一个独立的文件,还是每次数据采集完毕后,继续上次的文件进行保存?
一直都在的星空
5楼-- · 2019-08-15 10:07
刘毅壁虎 发表于 2016-10-29 21:31
我觉得如果你的采样频率不是很高,是不是可以每次采样完毕直接对采样到的数据直接进行保存。随后等待第二次 ...

继续上一次数据存进的位置写数据。你说的这个采一个数据写一个数据的做法我可以试试
刘毅壁虎
6楼-- · 2019-08-15 10:39
一直都在的星空 发表于 2016-10-31 15:35
继续上一次数据存进的位置写数据。你说的这个采一个数据写一个数据的做法我可以试试

你是打开一个文件,不关闭,然后一直往里写对吗?你从来都不新建一个文件吗?还是就是用一个文件一写到底?

一周热门 更多>