ADC数据采集存储到SD卡的问题

2019-10-15 07:48发布

本人大三学生,最近在做一个关于stm32   ADC 8通道数据采集存储到SD卡进行小波变换分析的一个小项目。
遇到ad采集的数据存储到SD卡是出现严重问题,还有就是不能多次循环采样,采集的只能存储一次!
还希望集思广益,大神的兄弟可以不惜吝啬指点我一下!若项目能成功必将代码开源啊!(本人邮箱:1294141271@qq.com
通过二维数组进行进行AD采样,通过busy中断进入AD采集,同时新建一个txt,把数据通过sprintf浮点转换成字符存储到SD卡!
 中断函数主要的部分代码如下:
   AD7606.CHn[0][AD7606.W_index] = AD7606_FSMC->AD7606_Read; 
   、、、、
   AD7606.CHn[7][AD7606.W_index] = AD7606_FSMC->AD7606_Read; 
   n=sprintf((char*)AD_Uart,"%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f,%3.2f%,%3.2f", AD7606.CHn[0][AD7606.R_index]/32768*5,AD7606.CHn[1][AD7606.R_index]/32768*5,AD7606.CHn[2][AD7606.R_index]/32768*5,AD7606.CHn[3][AD7606.R_index]/32768*5,AD7606.CHn[4][AD7606.R_index]/32768*5,AD7606.CHn[5][AD7606.R_index]/32768*5,AD7606.CHn[6][AD7606.R_index]/32768*5,AD7606.CHn[7][AD7606.R_index]/32768*5);     //把每个AD采样的数据转换成浮点数以字符格式存入数组AD_Uart
   f_mount(0,&fs);
   res = f_open(&fnew, "0:AD采样.txt", FA_CREATE_ALWAYS | FA_WRITE );  //创文件txt
  if ( res == FR_OK )
   {
     res = f_write(&fnew,  AD_Uart, n, &bw);  //写数据
     f_close(&fnew);  
   }
    else if(res == FR_EXIST)  //再次进入中断,文件已存在
     {
        f_lseek(&fnew,fnew.fsize);     //指针移操作
        res = f_write(&fnew, AD_Uart,n,&bw);   //写入第二次采集的数据
       f_close(&fnew);         
     }
  AD7606.R_index = (AD7606.R_index==(DATA_LEN-1))?0:AD7606.R_index+1;  //索引增加,进行下一次AD采样
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
时间总会慷慨
1楼-- · 2019-10-15 23:51
 精彩回答 2  元偷偷看……
daska110
2楼-- · 2019-10-16 01:36
没明白什么问题,把工程和你采集的数据上传上来看看。
suxiaoxi666
3楼-- · 2019-10-16 05:05
回复【9楼】时间总会慷慨:
---------------------------------
 keil选项里 use microlib这个选上了吗 我遇到问题了,麻烦看一下你的选这个选项了没
时间总会慷慨
4楼-- · 2019-10-16 11:02
回复【11楼】suxiaoxi666:
---------------------------------
还真没有勾,是不是会对sprintf函数有影响?
时间总会慷慨
5楼-- · 2019-10-16 17:00
回复【12楼】时间总会慷慨:
---------------------------------
我觉得我的mdk软件有问题啊    无法用jtag,用的时候老是出现mdk应用停用的提示,然后就自动关闭软件了~
时间总会慷慨
6楼-- · 2019-10-16 19:42
 精彩回答 2  元偷偷看……

一周热门 更多>