找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3445|回复: 15
收起左侧

想问下STM32控制sd卡,将数据实时保存在sd卡中,sd卡以一天为时间进行循环存储

[复制链接]
ID:481966 发表于 2021-8-23 22:54 | 显示全部楼层 |阅读模式
50黑币
现在已经移植好了文件系统,不知道怎么实现实时存储和循环覆盖存储,有大佬做过相关项目吗,有代码可以参考下或者方案说下,感谢

回复

使用道具 举报

ID:207030 发表于 2021-8-24 08:05 | 显示全部楼层
一天创建一个txt文件  写入存储的数据不就好了
回复

使用道具 举报

ID:481966 发表于 2021-8-24 19:57 | 显示全部楼层
sgd985437 发表于 2021-8-24 08:05
一天创建一个txt文件  写入存储的数据不就好了

sd卡会存满,存一天时间,后面将前面的覆盖掉,不知道咋实现
回复

使用道具 举报

ID:57657 发表于 2021-8-24 20:23 | 显示全部楼层
yqyq 发表于 2021-8-24 19:57
sd卡会存满,存一天时间,后面将前面的覆盖掉,不知道咋实现

先按时间排序获取目录(子目录)树下的所有文件,然后只删除第一个文件即可。
回复

使用道具 举报

ID:161164 发表于 2021-8-24 20:24 | 显示全部楼层
本帖最后由 lkc8210 于 2021-8-24 21:34 编辑

STM32没玩过,但用过Arduino來做差不多的东西
有没有RTC?
有就在零时零分用日期做档名建档,
建完把前一天的删掉

多大的记忆卡?
多久写入一条数据?
每条数据多大?
其实可以在电脑用复制贴上方法制作一个Txt档
预计一下多久才会存满
回复

使用道具 举报

ID:481966 发表于 2021-8-24 23:30 | 显示全部楼层
lkc8210 发表于 2021-8-24 20:24
STM32没玩过,但用过Arduino來做差不多的东西
有没有RTC?
有就在零时零分用日期做档名建档,

FAT32文件系统有时间戳,没注意怎么用这个来定时,
回复

使用道具 举报

ID:481966 发表于 2021-8-24 23:37 | 显示全部楼层
npn 发表于 2021-8-24 20:23
先按时间排序获取目录(子目录)树下的所有文件,然后只删除第一个文件即可。

没懂,创建目录时按时间顺序创建目录吗
回复

使用道具 举报

ID:57657 发表于 2021-8-25 05:16 | 显示全部楼层
lkc8210 发表于 2021-8-24 20:24
STM32没玩过,但用过Arduino來做差不多的东西
有没有RTC?
有就在零时零分用日期做档名建档,

文件系统,至少还要有一颗DS1302或1307等RTC电路才可以进行写操作。
某录音笔操作内存卡录音,连接电脑上查看文件(夹)日期都不对,原因没有RTC电路。
回复

使用道具 举报

ID:415064 发表于 2021-8-30 18:32 | 显示全部楼层
创建新的时候把最旧的那个删除掉
回复

使用道具 举报

ID:624769 发表于 2021-9-1 19:45 | 显示全部楼层
缺少必要条件(存和留是两个概念,我假定你是要留1天的数据),我脑补一下尝试性回答你的问题,给你参考。
每4.5分钟保存一个文件,文件名一个字节,从0x00开始累加,当递增到0xff之后,再递增就回到0x00,就会自动覆盖最初的文件,你刚好保留一天的数据。以此类推,你可以把4.5分钟,再256等分,双字节文件名,看你实际需要。
回复

使用道具 举报

ID:283954 发表于 2021-9-1 23:01 | 显示全部楼层
用SD卡储存资料非必要就不要用什么文件系统了,可采用缓存区的概念来执行:
1.初始化:把全部SD写成FFH,避免旧资料影响操作。
2.根据自己每一份资料需要用到的空间算出需要用到多少个扇区(SD卡每个扇区时512BYTES)
3.算出整张SD开能存多少份资料,也就是有多少个分区。
4.从第一区开始储存,储存后将接下来的区的第1,2个BYTE写个标记,比如55H, 0AAH。
5.每次储存前先找到那个被标记的区才写入资料,并在接下来的区作标记,如果已经来到最后一区就回到第一区。
6.这样就能够循环不断使用SD卡的每个空间,也不必用RTC之类。
回复

使用道具 举报

ID:481966 发表于 2021-9-3 20:31 | 显示全部楼层
dalaoshi 发表于 2021-9-1 23:01
用SD卡储存资料非必要就不要用什么文件系统了,可采用缓存区的概念来执行:
1.初始化:把全部SD写成FFH, ...

水平有限,感觉还是文件系统简单些
回复

使用道具 举报

ID:161164 发表于 2021-9-3 21:31 来自手机 | 显示全部楼层
dalaoshi 发表于 2021-9-1 23:01
用SD卡储存资料非必要就不要用什么文件系统了,可采用缓存区的概念来执行:
1.初始化:把全部SD写成FFH, ...

请问当电脑想读取数据时要如何操作?
回复

使用道具 举报

ID:283954 发表于 2021-9-3 23:55 | 显示全部楼层
lkc8210 发表于 2021-9-3 21:31
请问当电脑想读取数据时要如何操作?

忘了说,把每个区的前两个字节读一下,如果是标记符号,比如55H, 0AAH,那前一区就是最后的更新资料了。
回复

使用道具 举报

ID:207030 发表于 2021-9-6 14:35 | 显示全部楼层
文件名 就1.txt  2.txt  这样 一天以后重头来就好了   需要什么时间戳   24小时自己定时存  定时删就行了。找找增删改查的函数,调用一下就好了
回复

使用道具 举报

ID:514901 发表于 2021-9-6 16:42 | 显示全部楼层
FATFS的的fopen函数有个参数FA_CREATE_ALWAYS,如果创建了一个同名文件,则覆盖原先的文件。这样你每天fopen一次就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表