SD卡存储程序

把采集的ad的数据存到SD卡中。

int main(void)
{	
	u16 fwrite_counter=0;	
	unsigned char Temp[11];
	data_ok_flag=1;
	for(i=0;i<12;i++)
	{
		ad[i]=0;
	}
	for(i=0;i<12;i++)
	{
		ad_Mul[i] = 0;
	}

	delay_init();	    //延时函数初始化	  
	RCC_Configuration();
	NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);    //串口1初始化,波特率115200

	//USART2_Config();  //串口2初始化,波特率115200
	printf_init_u3(); //USART3配置
	dma_init_adc1();
	dma_init_adc3();
	delay_ms(1000);mem_init(SRAMIN);	//初始化内部内存池	
	exfuns_init();		//为fatfs相关变量申请内存 
	printf("************* SD test ****************\r\n");//
	
	SDIO_Interrupts_Config(); // 配置SDIO中断

//	sign=1;
	res = f_mount(0, fs[0]); //挂载SD卡 0表示卷标,直接传递到底层diskio.c中
	if (res != FR_OK)
	{
		printf("mount filesystem 0 failed : %d\r\n",res);
	}

	//写文件测试
	printf("write file test......\r\n");
	
	res = f_open(file1, "0:/SensorData.txt", FA_OPEN_ALWAYS | FA_WRITE);
	if(res != FR_OK)
	{
		printf("open file error : %d\r\n",res);
	}
	else
	{
	    f_lseek(file1,file1->fptr+file1->fsize);
		  res = f_write(file1, textFileBuffer, sizeof(textFileBuffer)-1, &bw);               
	}

while1{
          //ad采集程序
			if(FR_OK==res)
			{
					if(data_ok_flag)//数据到来
					{
//						 data_ok_flag=0;
							
							sprintf(All_Data,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %.3f %.3f %.3f %d %d %d %d %d %d %d %d %d %d %d %d ",
					          ad[0],ad[1],ad[2],ad[3],ad[4],ad[5],ad[6],ad[7],ad[8],
				          	ad[9],ad[10],ad[11],angle[0],angle[1],angle[2],SetupADC[0],SetupADC[1],SetupADC[2],SetupADC[3],SetupADC[4],SetupADC[5],SetupADC[6],SetupADC[7],SetupADC[8],SetupADC[9],SetupADC[10],SetupADC[11]);//);//浮点型数据转为指定格式的字符串
							res = f_write(file1, All_Data, strlen(All_Data), &bw);               
							
							res |= f_write(file1, "\r\n",2, &bw);
						
//							fwrite_counter++;
							 if(FR_OK==res)
								{
									printf("write data ok! %d\r\n",bw);
								}
								else
								{
									break;
								}
						}//具体结束的条件可以通过串口1接收来的数据进行判断
						 if(0 == is_check_ok)//条件满足
						{ 
								//退出循环
							    data_ok_flag=0;
									f_write(file1, "xin\r\n",13, &bw); //结束写入的标志
									f_close(file1);//close file 
									//break;
								
						 }
					}
				 else
				 {
					printf("write data error : %d\r\n",res);
				 }	
	 
	}		


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FPGA(可编程逻辑门阵列)是一种集成电路芯片,可以根据需要重新配置其内部电路,用于实现各种电子设备中的数字逻辑功能。数据采集是指通过传感器或其他外部设备收集数据,并将其转换为FPGA可以处理的数字信号。 要将采集数据存入SD卡(Secure Digital卡),首先需要将传感器或外部设备连接到FPGA。这通常涉及使用模数转换器(ADC)将模拟信号转换为数字信号,然后将其输入到FPGA的输入引脚。 一旦FPGA接收到数据,它可以使用其内部逻辑编写的程序数据进行处理。这可能包括滤波、数据压缩、加密或其他算法,以适应特定应用需求。 当数据处理完成后,FPGA需要将数据写入SD卡中。为实现这一目标,FPGA可以使用SD卡接口来与SD卡进行通信。这涉及通过SPI(串行外设接口)或SD协议与SD卡进行通信,读取SD卡上的目录结构,并将数据写入适当的文件中。 在将数据存入SD卡之前,需要在SD卡上创建一个文件系统。这可以通过FPGA编写的程序来实现,该程序可以使用SD卡接口的命令和协议来创建文件、打开文件、写入数据和关闭文件。 一旦文件系统准备好后,FPGA可以将处理好的数据写入SD卡的文件中。这需要将数据转换为适当的格式,并使用SD卡接口的命令和协议将其写入SD卡的指定文件位置。 通过这种方式,FPGA可以采集数据并将其直接存入SD卡,从而实现数据的持久存储和后续分析。这样的应用可以在很多领域中使用,例如物联网、工业自动化、仪器仪表等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值