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

2019-08-14 01:08发布

小菜鸟一只~正在做一个小项目,需要将ADC采样的数据存储在SD卡。我现在已经会把缓存区内的数据写入SD卡中的.TXT文档中,但是还是不能把实时的AD采样值存储进去,希望大神求教!感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
一直都在的星空
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);
       }

一周热门 更多>