单片机下运用FATFS文件系统如何将数据存储到SD卡的.CSV文件中

最近因为工程需要,需要在支持FATFS文件系统的SD卡上创建.CSV文件,用于存储现场采集的传感器数据,专门研究了一下.CSV格式文件的读写。

1、什么是.CSV格式的文件

      就是数据项之间用逗号隔开的文件。例如:   "aa , bb , cc , dd "。

      .CSV格式的文件可以直接用EXCEL电子表格软件打开,上述数据在EXCEL的存储形式参见下图:

      

2、如果想按照如下电子表格中存储格式该如何处理呢?

解决方法:

        在每行的结尾处添加\r\n。

        例如:

                 第一次写如下字符串     "aa , bb , cc , dd \r\n"

                 第二次写如下字符串     "ee , ff , gg , hh \r\n"

 

C语言源程序如下:

char test1_string[100] = "aa , bb , cc , dd \r\n";
char test2_string[100] = "ee , ff , gg , hh \r\n";

void Test(void)
{	
    FRESULT result;
	FATFS fs;
	FIL file;
	DIR DirInf;
	uint32_t bw;
	uint32_t fil_size;

		
 	/* 挂载文件系统 */
	result = f_mount(FS_SD, &fs);		/* Mount a logical drive */
	if (result != FR_OK)
	{
		//printf("挂载文件系统失败 (%d)\r\n", result);
		return ;
	}

	/* 打开根文件夹 */
	result = f_opendir(&DirInf, "/"); 	/* 如果不带参数,则从当前目录开始 */
	if (result != FR_OK)
	{
		//printf("打开根目录失败 (%d)\r\n");
		/* 卸载文件系统 */
		f_mount(FS_SD, NULL);
		return ;
	}

	/* 打开文件 */	
	result = f_open(&file, "TEST.csv", FA_OPEN_ALWAYS | FA_WRITE);	
	if (result == FR_OK)
	{
		fil_size = f_size(&file);
		result = f_lseek(&file,fil_size);
		result = f_write(&file, test1_string , strlen(test1_string), &bw);
		result = f_write(&file, test2_string , strlen(test2_string), &bw);
	}//if (result == FR_OK)
	
	/* 关闭文件*/
	f_close(&file);
	/* 卸载文件系统 */
	f_mount(FS_SD, NULL);	
}

 

  • 9
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值