标题: 想问下STM32控制sd卡,将数据实时保存在sd卡中,sd卡以一天为时间进行循环存储 [打印本页]

作者: yqyq    时间: 2021-8-23 22:54
标题: 想问下STM32控制sd卡,将数据实时保存在sd卡中,sd卡以一天为时间进行循环存储
现在已经移植好了文件系统,不知道怎么实现实时存储和循环覆盖存储,有大佬做过相关项目吗,有代码可以参考下或者方案说下,感谢

作者: sgd985437    时间: 2021-8-24 08:05
一天创建一个txt文件  写入存储的数据不就好了
作者: yqyq    时间: 2021-8-24 19:57
sgd985437 发表于 2021-8-24 08:05
一天创建一个txt文件  写入存储的数据不就好了

sd卡会存满,存一天时间,后面将前面的覆盖掉,不知道咋实现
作者: npn    时间: 2021-8-24 20:23
yqyq 发表于 2021-8-24 19:57
sd卡会存满,存一天时间,后面将前面的覆盖掉,不知道咋实现

先按时间排序获取目录(子目录)树下的所有文件,然后只删除第一个文件即可。
作者: lkc8210    时间: 2021-8-24 20:24
本帖最后由 lkc8210 于 2021-8-24 21:34 编辑

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

多大的记忆卡?
多久写入一条数据?
每条数据多大?
其实可以在电脑用复制贴上方法制作一个Txt档
预计一下多久才会存满
作者: yqyq    时间: 2021-8-24 23:30
lkc8210 发表于 2021-8-24 20:24
STM32没玩过,但用过Arduino來做差不多的东西
有没有RTC?
有就在零时零分用日期做档名建档,

FAT32文件系统有时间戳,没注意怎么用这个来定时,
作者: yqyq    时间: 2021-8-24 23:37
npn 发表于 2021-8-24 20:23
先按时间排序获取目录(子目录)树下的所有文件,然后只删除第一个文件即可。

没懂,创建目录时按时间顺序创建目录吗
作者: npn    时间: 2021-8-25 05:16
lkc8210 发表于 2021-8-24 20:24
STM32没玩过,但用过Arduino來做差不多的东西
有没有RTC?
有就在零时零分用日期做档名建档,

文件系统,至少还要有一颗DS1302或1307等RTC电路才可以进行写操作。
某录音笔操作内存卡录音,连接电脑上查看文件(夹)日期都不对,原因没有RTC电路。
作者: wojiaoguogai    时间: 2021-8-30 18:32
创建新的时候把最旧的那个删除掉
作者: 188610329    时间: 2021-9-1 19:45
缺少必要条件(存和留是两个概念,我假定你是要留1天的数据),我脑补一下尝试性回答你的问题,给你参考。
每4.5分钟保存一个文件,文件名一个字节,从0x00开始累加,当递增到0xff之后,再递增就回到0x00,就会自动覆盖最初的文件,你刚好保留一天的数据。以此类推,你可以把4.5分钟,再256等分,双字节文件名,看你实际需要。
作者: dalaoshi    时间: 2021-9-1 23:01
用SD卡储存资料非必要就不要用什么文件系统了,可采用缓存区的概念来执行:
1.初始化:把全部SD写成FFH,避免旧资料影响操作。
2.根据自己每一份资料需要用到的空间算出需要用到多少个扇区(SD卡每个扇区时512BYTES)
3.算出整张SD开能存多少份资料,也就是有多少个分区。
4.从第一区开始储存,储存后将接下来的区的第1,2个BYTE写个标记,比如55H, 0AAH。
5.每次储存前先找到那个被标记的区才写入资料,并在接下来的区作标记,如果已经来到最后一区就回到第一区。
6.这样就能够循环不断使用SD卡的每个空间,也不必用RTC之类。

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

水平有限,感觉还是文件系统简单些
作者: lkc8210    时间: 2021-9-3 21:31
dalaoshi 发表于 2021-9-1 23:01
用SD卡储存资料非必要就不要用什么文件系统了,可采用缓存区的概念来执行:
1.初始化:把全部SD写成FFH, ...

请问当电脑想读取数据时要如何操作?
作者: dalaoshi    时间: 2021-9-3 23:55
lkc8210 发表于 2021-9-3 21:31
请问当电脑想读取数据时要如何操作?

忘了说,把每个区的前两个字节读一下,如果是标记符号,比如55H, 0AAH,那前一区就是最后的更新资料了。
作者: sgd985437    时间: 2021-9-6 14:35
文件名 就1.txt  2.txt  这样 一天以后重头来就好了   需要什么时间戳   24小时自己定时存  定时删就行了。找找增删改查的函数,调用一下就好了
作者: 郑汉松    时间: 2021-9-6 16:42
FATFS的的fopen函数有个参数FA_CREATE_ALWAYS,如果创建了一个同名文件,则覆盖原先的文件。这样你每天fopen一次就可以了





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1