DMA SDcard fatfs方式的adc 数据写入速度

2019-07-20 11:17发布

本帖最后由 peacewyz 于 2017-10-11 10:24 编辑

大家好,新手做项目,遇到问题,请大家指教
外部三路adc采用125HZ(采样间隔为8000us采样率,外部采样完成后会给出信号(125HZ),CPU接收到这个信号时进入中断,中断触发需要进行如下任务:1.   STM32F407读取三路SPI(ADC)的数据     占用60us2.   STM32F407发送通过SCI发送三路数据到PC  占用600us3.   读取RTC日期,时间信息     1.2us4.   三路SPI数据存入SD卡      5200us5.   每个两个小时新建文件夹,写入头文件(200 byte),占用14400us
写入SD卡的时候特别耗时,按照一般的读写速度1M/s的速度,1kb/ms,也不至于这么慢啊,目前我是采用F407例程中的FATFS改的, 试了DMA方式和查询方式,不过并无太多改善
                errorstatus=SD_SetDeviceMode(SD_DMA_MODE);                           //DMA 方式                  //errorstatus=SD_SetDeviceMode(SD_POLLING_MODE);                 //查询方式
是我写入的太频繁还是怎么回事?我想采用类似探索者F407的板子上例程中DMA方式的双缓冲的方式,可是不得要领,希望能有高手指点,或者有类似的example,
下面是代码
                printf("C1:%d C2:%d C3:%d ",channelvalue[0],channelvalue[1],channelvalue[2]);  //600us               
                RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);                                                  //1.2us                RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);                        GPIO_SetBits(GPIOB,GPIO_Pin_1);                        if(t%4 ==0)                                                                                            //测试的时候,每隔4s创建一个新文件                        {                                                                                wav_recorder();                                                                               //创建文件夹                                OBSINFO();                                                                                     //写入头文件信息,也就是上面的时间信息以及一些基本信息,200byte 左右,共耗时20ms                                t=0;                        }                GPIO_ResetBits(GPIOB,GPIO_Pin_1);                        write_pro(channelvalue[0],channelvalue[1],channelvalue[2],channelvalue[3]);                        //5ms                                channelvalue[0]=0;                channelvalue[1]=0;                channelvalue[2]=0;                channelvalue[3]=0;

QQ 2844724493

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。