本人大三学生,最近在做一个关于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采样
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
如果要一次性存的话,怎么sprintf ?
一周热门 更多>